• ベストアンサー

ファイル名にドットを使ったファイルのインポート(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

  • 10940
  • お礼率87% (84/96)

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

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

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

10940
質問者

お礼

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

その他の回答 (1)

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

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

10940
質問者

お礼

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

関連するQ&A

  • MS AccessでExcelファイルのインポートは?

    AccessのVBAでExcelファイルをインポートするにはどうすればいいのでしょうか? ちなみに DoCmd.TransferText acImportDelim, , "Tmp名簿", strInPutPath & "\名簿.csv", True (strInPutPathは、ダイアログから取得したパスです) では、CSVファイル(TXTファイル)しか読み込めません。 (もちろん、そのため拡張子が「.csv」にしていますが 読み込むファイルをテキストファイルにしたら「.txt」でもいいです) 「ファイル」メニュー(コマンド)の「外部データの取り込み」→「インポート」では、Excelファイルも読み込めるので悔しいです。 これをVBAでやりたいんですが。 よろしくお願いいたします。

  • VBAでCSVファイルのインポートについて

    ACCESS2003でCSVファイルのインポートを行うVBAをご教授下さい。 ただし、CSVファイルは各項目がダブルコーテーションではさまれており、カンマはありません。 1行目にヘッダーがあります。 DoCmd.TransferText acImportDelim, , FileName, ImportPath, True ↑ これだと、うまくインポートされませんでした。 大変困っております。 どうぞよろしくお願い致します。

  • Access VBAでファイルのインポートについて

    あるディレクトリにAccessのmdbファイルを置き、「インポート」フォルダを隣に置きます。 このフォルダ内にCSVファイルを置き、それをVBAでテーブル「tbl_import」にインポートさせたいのです。 ちなみにインポート後はディレクトリ「インポート」下層のディレクトリ「インポート済」に移動させたいのです。 下記例文では「file.csv」と書いていますが、このファイル名はインポートの都度、常に変わります。 インポートさせるファイルは常に一つです。 「*」を用いれば出来ると思っていたのですが、うまくいきません。 良い方法を教示いただけませんか。 DoCmd.RunSQL "DELETE * FROM tbl_import" DoCmd.TransferText acImportDelim, "インポート定義", "tbl_import", CurrentProject.Path & "\インポート\file.csv", True FileCopy CurrentProject.Path & "\インポート\file.csv", CurrentProject.Path & "\インポート\インポート済\file.csv" Kill CurrentProject.Path & "\インポート\file.csv"

  • Access2000のCSVファイルのインポートについて

    Access2000でCSVファイルをインポートしようと思っています。 インポート方法は、VBAで 「DoCmd.TransferText acImportDelim, , "テーブル名", "ファイル名"」を使用しています。 この時に、CSVファイルが次のようなデータです。 F1,F2,F3 0010,0200,0001A12 0011,0201,0021B12 (実際は、1000件近いデータです) これをインポートすると、 F1,F2,F3 10,200,1A12 11,201,21B12 となってしまいます。 頭の「0」を省きたくないのです。 文字列として取り込めないでしょうか? CSVのデータに""を自動でつける方法はないでしょうか? Accessの外部データの取り込みを使うと、文字列として指定できるのですが、VBAを使いワンクリックでデータを取り込もうとしています。 よろしくお願いします。

  • Access VBA CSV取込でファイル指定

    いつもお世話になっております、この度もよろしくお願い致します。 作成環境:Access 2003 win XP CSVファイルをデータベース内のテーブルにインポートする、というプログラムを書いてるのですが、 Private Sub テスト() DoCmd.TransferText acImportDelim, "インポート定義", _ "tblImported", "C:\Temp.csv", True End Sub Cドライブにあるファイルのみしかインポートできず、これをダイアログボックスを呼び出してファイルを指定することなどはできるのでしょうか? 検索を行いまして、ctlDlg.Filename~などメソッドを使うといいなど記載されている記事もよく見かけますが、どのように利用すればいいのか少し戸惑っております^^; ご多用の中大変申し訳ありませんが、ご回答いただければ幸いでございます。 よろしくお願い致します。

  • Access VBA CSV取込でファイル指定

    いつもお世話になっております、この度もよろしくお願い致します。 作成環境:Access 2003 win XP CSVファイルをデータベース内のテーブルにインポートする、というプログラムを書いてるのですが、 Private Sub テスト() DoCmd.TransferText acImportDelim, "インポート定義", _ "tblImported", "C:\Temp.csv", True End Sub Cドライブにあるファイルのみしかインポートできず、これをダイアログボックスを呼び出してファイルを指定することなどはできるのでしょうか? 検索を行いまして、ctlDlg.Filename~などメソッドを使うといいなど記載されている記事もよく見かけますが、どのように利用すればいいのか少し戸惑っております^^; ご多用の中大変申し訳ありませんが、ご回答いただければ幸いでございます。 よろしくお願い致します。

  • AccessのマクロでCSVファイルをインポートする

    Accessのマクロ・VBAにてCSVファイルを インポートしたいのですが、うまくいきません。 DoCmd.TransferText acImportDelim, , "C:\Documents and Settings\yoshimi\My Documents\顧客マスタテーブル.csv", False 現在のコードです。 「オブジェクト'0.txt’が見つかりませんでした。 オブジェクトが存在していること、名前やパス名が正しいことを確認 してください。」 とエラーが表示されます。 過去ログを検索し、似たようなものを見つけ同じようにしたつもりです。 http://okweb.jp/kotaeru.php3?q=1691138 (回答のANo.1の定義の保存場所が分からずしていません) どこがおかしいのか教えていただきたいです・・・

  • CSVファイルをテーブルにインポートする

    1行目が項目名のCSVファイルをテーブルにインポートするため Private Sub CSVインポート_Click() DoCmd.TransferText acImportDelim, , "ブランド", "J:\ブランド.TXT" MsgBox ("CSVファイルインポート完了") End Sub を実行すると、f1,f2のフィールドがありませんとメッセージがあり F1,F2 のフィールドを追加し再度実行するとデータは f1,f2に入り 項目名もデータとして入っています。 1行目は項目名と宣言する設定はありますか。 よろしくお願いいたします。

  • Access VBA CSVファイルのインポート

    お世話になります。 VBAにてCSVファイル(タブ区切り)をインポートするのに、 以下のように記述してますが、エラーとなります。 なお、インポート先のtempテーブルはインポートするCSVファイルの フィールドと同じ並びで予め作成したものです。 DoCmd.TransferText acImportDelim, , "temp", path, True 「実行時エラー2391 貼り付け先のtempテーブルには、'フィールド1_ フィールド2_フィールド3'フィールドがありません。」 このエラーを見る限り、フィールド1~3が一つのフィールドとして 認識されているように見受けられます。 タブ区切りなのか、カンマ区切りなのかを指定するようなパラメタは あるのでしょうか。 なお、当該CSVファイルをウィザードより手動でインポートする分には 問題無くインポート出来ます。 ************** インポートするCSVファイルはユーザーにより見出し(フィールド)の 並びが異なる場合がある為、インポート定義を予め作っておくことが できない状況です。 ご教授の程、宜しくお願い致します。

  • アクセスと同フォルダのCSVファイルをインポートしたい

    初心者で質問がわかりにくかったらすみません。 アクセスで、CSVファイルを取込みたいです。 下記のような構文で、取込む方法はわかりました。 Private Sub コマンド62_Click() DoCmd.TransferText acImportDelim, "請求書csvインポート定義", _ "請求書", "C:\Documents and Settings\user3\デスクトップ\受付番号アクセス\これ!\請求書.csv", True End Sub しかし、これだと常に取込むCSVファイルが同じ場所ではないと、いけないので、他のPCで使用するとエラーになってしまいます。 なので、他のPCに移した場合でも、いちいち構文を修正せずに、 この構文が作成してあるアクセスと同フォルダの”請求書.csv”というファイル名のCSVデータを取込めるような、構文が知りたいです。 お手数ですが、教えてください。