2

SQLサーバーにアップロードできるように、セミコロンで区切られた.csvに変換する必要のある.txtファイル(> 60k)が多数あります(一部のフィールドはコンマ付きのリストであるため)。

テーブルが存在しない場合でもデータをAccessデータベースにロードする.vbsファイルの作成に成功しましたが、acExportDelimに新しいファイルを上書き/作成させることができません。また、FileName.csvが存在しない場合にもエラーが発生します。

私が見逃しているものがあるはずですが、どこから探し始める必要があるのか​​途方に暮れています。

CMD入力

C:\Afolder\TxtToCsv.vbs \\DataOnaServer\FileName.txt \\DataOnaServer\FileName.csv

.vbsファイル

Dim oAccess
Set oAccess = CreateObject("Access.Application")
oAccess.OpenCurrentDatabase("C:\Afolder\WDS.accdb")
oAccess.DoCmd.TransferText acImportDelim,"FileTxtImportSpec","FileName",WScript.Arguments.Item(0),1
oAccess.DoCmd.TransferText acExportDelim,"FileCsvExportSpec","FileName",WScript.Arguments.Item(1)
oAccess.Quit

ファイルが見つからないときに受信したエラーメッセージ。(まだ画像を投稿できないようです)

「MicrosoftAccessデータベースエンジンはオブジェクト「lp4137.csv」を微調整できませんでした。オブジェクトが存在し、その名前とパスを正しく入力していることを確認してください。「lp4137.csv」がローカルオブジェクトでない場合は、ネットワーク接続を確認するか、サーバー管理者に連絡してください。」コード:800A0BC3

同様のスクリプトを実行しているボタンクリックVBAを使用したダウンロード可能なファイルのデモへのBlueClawDatabaseDesignリンク。

4

2 に答える 2

2

vbscript を使用して、'AcTextTransferType' 列挙を具体的に定義する必要があります。MS Access では、これらの列挙はアクセス ライブラリで定義され、検出されます。ただし、vbscript は列挙値を認識できず、エラーがスローされます。

acExportDelim = 2
acImportDelim = 0

この msdn 記事で列挙を見つけることができます: http://msdn.microsoft.com/en-us/library/office/ff194227.aspx

于 2012-08-31T16:53:59.197 に答える
1

Option Explicitこの質問は、 VBA コードに対して行う必要があるのと同じように、VBScriptに常に含めることが重要である理由の良い例です。

この VBScript を検討してください。

WScript.Echo "TypeName(acImportDelim): " & TypeName(acImportDelim)
WScript.Echo "TypeName(acExportDelim): " & TypeName(acExportDelim)

コマンドウィンドウでそのスクリプトを実行すると、これが返されます...

C:\share\Access>cscript //NoLogo AccessNamedConstants.vbs
TypeName(acImportDelim): Empty
TypeName(acExportDelim): Empty

ただしOption Explicit、そのスクリプトの最初の行として含めるとエラーがスローされます。これは、Access の名前付き定数がスクリプト エンジンに認識されないため、宣言されていない変数である必要があると見なされます。また、Option Explicit宣言されていない変数をエラーとして扱うため、これらの名前付き定数に関する問題について早期警告があります。

C:\share\Access>cscript //NoLogo AccessNamedConstants.vbs
C:\share\Access\AccessNamedConstants.vbs(2, 1) Microsoft VBScript runtime error:
 Variable is undefined: 'acImportDelim'
于 2012-08-31T17:51:39.963 に答える