• ベストアンサー

ファイル名にドットを使ったファイルのインポート(ACCESSマクロ)

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

質問者が選んだベストアンサー

  • ベストアンサー
  • KG_
  • ベストアンサー率62% (34/54)
回答No.1

TransferTextの仕様をかえることはできませんので Recordset等をつかって自力でインポートするか、 一時的にファイル名を変えてインポート後に戻すか、 のどちらかになるのではないでしょうか。

10940
質問者

お礼

TransferTextの仕様ですか...(T_T) なるほどドットを含むファイルの場合だけ一時的にリネイムして戻すのが早くて効率的ですね。 ありがとうございました。

その他の回答 (1)

  • Kazamin
  • ベストアンサー率30% (17/56)
回答No.2

For Each ~ Nextループの中で、問題のファイルをドットのつかない ファイル名でコピーし、そのファイルをインポートするのはどうですか。 ファイルのコピーは、FileCopy ステートメントで実現可能です。

10940
質問者

お礼

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