• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルVBAでCSV読み込みについて質問します。)

エクセルVBAでCSV読み込みについて質問します

このQ&Aのポイント
  • エクセルVBAを使用してCSVファイルを読み込む方法について質問です。外部データの取り込みマクロを記録しましたが、決まったファイル名しか展開できません。マクロ実行時にファイル選択ウィンドウが表示され、任意のCSVファイルを選択できるようにしたいです。
  • エクセルVBAでCSVファイルの読み込みに関する質問です。自動記録で作成したマクロでは特定のファイル名しか展開できないため、マクロ実行時にファイル選択ダイアログが表示され、任意の場所にあるCSVファイルを選択できるようにしたいです。
  • エクセルVBAを使用してCSVファイルの読み込み方法について質問があります。自動記録で作成したマクロではCSVファイルのパスが固定されており、他のCSVファイルを展開することができません。マクロ実行時にファイルを選択するウィンドウを表示し、任意の場所にあるCSVファイルを選択できるようにしたいです。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

一般的には、このようにすればよいです。 後は、GetOpenFilename をヘルプでみてください。 なお、.Name = "290TEST1" この部分はいらなかったような気がしますね。付けたことがありません。 '// Dim FName As String Dim ret As Variant FName = Application.GetOpenFilename("CSVファイル (*.csv),*.csv", , "ファイルインポート") If VarType(FName) = vbBoolean Or FName = "" Then Exit Sub 'キャンセルの場合 With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & FName, _      Destination:=Range("M6"))  '続く

victicd
質問者

お礼

回答ありがとうございました。 教えていただいたマクロで無事に動作しました。 仰るとおり、Name = "290TEST1"は不要のようです。(自動記録で付いていたようです) ただ、キャンセルしたときにマクロが止まってしまいます。 .Refresh BackgroundQuery:=False (毎回、ここで止まります。) おそらく、こちらのやり方が悪いのだとは思いますが。。。 いずれにしろ、大変助かりました。

その他の回答 (3)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

>ただ、キャンセルしたときにマクロが止まってしまいます。 >.Refresh BackgroundQuery:=False すみません。コードを間違えました。 × Dim FName As String Dim FName As Variant

victicd
質問者

お礼

問題なく動作しました。 コードが違うだけで動作も変わってくるんですね(当たり前なのでしょうが) コードの意味すら分かりませんが、とにかく、 どうもありがとうございました!

  • layy
  • ベストアンサー率23% (292/1222)
回答No.2

ファイル選択ダイアログを使う、このやり方を探すと良いです。そのまま検索すれば使い方を説明したサイトあります。『EXCELでお仕事』 1つ選択、複数選択、フォルダ選択、保存先選択、等いろいろな場面で使えるので回答結果をもらうだけに留めるのはもったいないです。習得しましょう。

victicd
質問者

お礼

アドバイスありがとうございました。 早速「EXCELでお仕事」を見てみました。項目がたくさんあり中々大変そうです。 選択方法についてひとつづつ勉強したいと思います。

  • vollgins
  • ベストアンサー率22% (76/336)
回答No.1

マクロ実行(ファイル選択)ボタンを押すとウィンドウが出てくるようにする ↓ そこにファイル名を入力していただく ↓ 変数でファイル名を受け取る

victicd
質問者

補足

早々にありがとうございます。 ご指摘のように作成してみました。 (初心者で、コマンドの意味を理解していないのでデタラメになっていると思います) Dim F_name As Variant F_name = Application.GetOpenFilename With ActiveSheet.QueryTables.Add(Connection:= _ F_name, Destination:=Range("M6")) 以下は同じですが、With ActiveSheet~の部分で引っかかってしまいます。 csvファイルの指定がマズいでしょうか?

関連するQ&A