「みんな教えて! 選手権!!」開催のお知らせ

Accessのマクロを作成しています。
ファイルを開くダイアログから複数ファイルを選択してCSVファイルをインポートするマクロを書きました。(最後に抜粋を記載します)
インポートの行はこうなっています。
DoCmd.TransferText acImportDelim, , "traffic", varFname, True

ファイル名に拡張子直前以外にドットを含むファイル名だと以下のエラーとなります。
実行時エラー '3011'
オブジェクト'ドットを含むファイル名'が見つかりませんでした。オブジェクトが存在していること、名前やパス名が正しいことを確認してください。

余分なドットさえ含まなければ、50ファイル、7MBのインポートも問題ありません。

わけあってファイル名は変更できません。
ファイル名にドットを含む場合のインポートの書き方を教えてください。

宜しくお願い致します。



===以下、抜粋===
'[ファイルを開く]ダイアログボックスを作成
Set dlgOpen = Application.FileDialog(msoFileDialogOpen)

'[ファイルを開く]ダイアログボックスの初期設定
dlgOpen.AllowMultiSelect = True
dlgOpen.Filters.Clear
dlgOpen.Filters.Add "CSV", "*.csv"
dlgOpen.InitialFileName = CurrentProject.Path

'[ファイルを開く]ダイアログボックスを表示
ret = dlgOpen.Show

'[キャンセル]ボタンを選択したときは、プロシージャを終了
If ret = 0 Then
Exit Function
End If

'カレントデータベースに接続
Set db = CurrentDb

'lineテーブルからレコードを取得
Set rs = db.OpenRecordset("line", dbOpenDynaset)

'単数または複数選択されたファイル分だけ処理する
For Each varFname In dlgOpen.SelectedItems
'CSVファイルをインポートする
DoCmd.TransferText acImportDelim, , "traffic", varFname, True

A 回答 (2件)

TransferTextの仕様をかえることはできませんので


Recordset等をつかって自力でインポートするか、
一時的にファイル名を変えてインポート後に戻すか、
のどちらかになるのではないでしょうか。
    • good
    • 0
この回答へのお礼

TransferTextの仕様ですか...(T_T)

なるほどドットを含むファイルの場合だけ一時的にリネイムして戻すのが早くて効率的ですね。

ありがとうございました。

お礼日時:2007/03/29 23:48

For Each ~ Nextループの中で、問題のファイルをドットのつかない


ファイル名でコピーし、そのファイルをインポートするのはどうですか。

ファイルのコピーは、FileCopy ステートメントで実現可能です。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

ファイルのサイズが大きめなので一時的にリネイムする方向で考えて見ます。それがダメならコピーにしてみます。

お礼日時:2007/03/29 23:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A