• 締切済み

テキストデータのインポート

初心者です。 エクセルのマクロで、 テキストファイルのインポートダイアログを出したいのですが、 どのようにすれば良いですか?

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.1

エクセルのマクロで、テキストファイルのインポートダイアログとは、どういうエクセルの操作で出てくるものですか。 データー外部データの取り込みーデータの取り込みの操作のことか。 そこには「テキストファイルのインポートダイアログ」というのは無いようだが。 何のことを言って居るかわかりにくくて、回答が付いてないのではないか。 ーーー 実質同じものでよければ Sub test01() fname = Application.GetOpenFilename("txt形式,*.txt") MsgBox fname i = 1 Open fname For Input As #1 While Not EOF(1) Line Input #1, a x = Split(a, " ") For j = 1 To UBound(x) Cells(i, j) = x(j) Next j i = i + 1 Wend Close #1 End Sub のようなものでエクセルに読み込める。 テキストといってもCSVファイルの場合は、エクセルとの親和性から、インポートと大げさに言うほどのもので無い。 ーー テキストファイルの場合はデリィミタが空白と限ったものではないと思うので、それが影響するので、はっきり書かないと判りにくい。 ーーー また http://support.microsoft.com/kb/880684/ja の操作をマクロの記録をッ採り一部を修正すると (下記では指定するファイルを開いて実行しないこと、エラーになるようだ。テスト段階で注意) Sub Macro3() fname = Application.GetOpenFilename("txt形式,*.txt") fname = """" & fname & """" Workbooks.OpenText Filename:=fname _ , Origin:=932, StartRow _ :=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _ ConsecutiveDelimiter:=True, Tab:=True, Semicolon:=False, Comma:=False, _ Space:=True, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3 _ , 1), Array(4, 1), Array(5, 1), Array(6, 1)), _ TrailingMinusNumbers:=True End Sub ただし FieldInfoのところをフィールド数で変えないといけないので(もちろんデリミタも実情で変える必要がある) Sub test03() fname = Application.GetOpenFilename("txt形式,*.txt") fname = """" & fname & """" Workbooks.OpenText Filename:=fname _ , Origin:=932, StartRow _ :=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _ ConsecutiveDelimiter:=True, Tab:=True, Semicolon:=False, Comma:=False, _ Space:=True, Other:=False, _ TrailingMinusNumbers:=True End Sub としてしまうか。 ーー 初心者がする質問にしては難しいな。

すると、全ての回答が全文表示されます。

関連するQ&A