2016-04-22 20 views
0

いくつかの問題が発生していますが、TransferTextを使用して一部のcsvファイルをデータベースにインポートします。 Accessがファイルを見つけることができないというエラーポップアップが表示されます。原因の提案は通常通りです。「ファイルが存在しません//記号や句読記号が含まれています//名前が長すぎます」MS Access 2010 - TransferTextファイル名の制限

実験が表示されています問題はファイルパスが長すぎる場合があり、場合によっては230文字を超えている(ファイルがネットワーク上に階層構造が悪く最適化されて保存されている)

私はいくつかの実験をしています。これには限界があり、自動的にCSVが生成され、名前をわずかに短くすることができますが、それでも簡単に識別できる必要があるので、あまりにも多くの助けとなるわけではありません。

ファイル名が短いと主張しているように、208文字より長いパスのファイルをインポートできるようにするソリューションはありますか?

フィードバックありがとうございます。

編集:私は現在以下のコードを持っています。

file = "\\Long\File\Path\FileName.txt" 
path = Left(file, InStrRev(file, "\")) 
newfile = Right(file, Len(file) - InStrRev(file, "\")) 

Shell ("subst Z:" & & Chr(34) & path & & Chr(34)) 
fullpath = "Z:\" & newfile 

DoCmd.TransferText TransferType:=acImport, TableName:="tbl_name", FileName:=fullpath, HasFieldNames:=True 

Shell ("subst Z: /d") 

答えて

1

あなたが前Substの古き良きDOSコマンドを呼び出すことができたり、アプリケーションを実行しているとき:

Subst x: f:\some\very\long\path 

今すぐX:そのルートとしてその長いパスのフォルダを持っています。

その後のx駆動するためにエクスポートします。

終了したら、呼び出し:

Subst x: /d 

をドライブxを削除するには:。内側Accessから

使用するシェルは:

Shell "Subst x: f:\some\very\long\path" 
+0

おかげで、私はこの行くあげますよ。 ラップトップ/デスクトップでネットワークドライブをマップするときは、マッピングが機能するためにログインする必要があります。 権限チェックによってコマンドに問題が発生しますか?毎回ユーザー名とパスワードを入力する必要がありますか? –

+0

いいえ、きちんとした面は_Subst_が純粋にローカルなことです。 – Gustav

+0

私は既にドライブをマップしていたと仮定して、それはうまくいくはずですか? 次の質問ですが、おそらくダムなのです...私のソフトウェアでこのDOSスクリプトを実行するにはどうすればいいですか? パスは、インポートするファイルによって異なります。 VBAを使用するパスとファイル名を分離することができるので、DOSスクリプトを作成してVBAを実行する方法がわからない場合は、コマンドを適切にフォーマットすることができます。 –

関連する問題