• ベストアンサー

Excelマクロ/ファイル名を指定してインポート

テキストファイルからExcelへインポートする作業を自動化させたいのですが。 毎回インポート元のファイル名(格納しているフォルダは同じです)が異なるので、マクロ記録ではうまく作成できません。VBAでないと無理でしょうか? できればファイル名をその都度入力するようなダイアログボックスが表示されれば理想的です。VBA初心者なので教えてください。

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

  • ベストアンサー
回答No.3

No1&2です。 InputBoxはやはり使いづらいですね。 変えました。これでどうでしょう? 常にデスクトップ\フォルダ1を開くと思いますのでテキストファイルを選択してください。 Sub TEST02() ChDir "C:\WINDOWS\デスクトップ\フォルダ1" Dim strFileName As Variant strFileName = Application.GetOpenFilename(FileFilter:="テキストファイル (*.txt), *.txt") If strFileName = "False" Then Exit Sub Workbooks.OpenText Filename:=strFileName, StartRow:=1, _ DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _ ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, _ Comma:=True, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), _ Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1)) mytxtfile = ActiveWorkbook.Name Cells.Select Selection.Copy ThisWorkbook.Activate ThisWorkbook.Sheets.Add ActiveSheet.Paste Application.CutCopyMode = False Workbooks(mytxtfile).Close End Sub

kalmit
質問者

お礼

No.1,2共とても参考になりました。試してみてすごい便利で助かります。。 御礼が遅くなりましたが、本当にありがとうございました。

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

その他の回答 (2)

回答No.2

質問者:kalmitさんの意図がよくわかってないのでぜんぜん違うかもしれませんが・・・・。 まずエクセルからはじめるのですよね? そして特定のフォルダから名前を指定したテキストファイルを開く。 それをエクセルにもってこれればいいのですよね? では以下のではいかがでしょうか? Sub TEST01() Dim Inp As Variant Inp = InputBox("入力してください。", "ファイル名入力", ".txt") Workbooks.OpenText Filename:="C:\WINDOWS\デスクトップ\フォルダ1\" & Inp, _ StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _ ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, Comma:=True _ , Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), _ Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1)) Cells.Select Selection.Copy ThisWorkbook.Activate ThisWorkbook.Sheets.Add ActiveSheet.Paste Application.CutCopyMode = False Windows(Inp).Activate ActiveWindow.Close End Sub

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

組み込みダイアログですね? ファイルを開くダイアログボックスなら以下のマクロで呼び出せます。 Sub hiraku() Application.Dialogs(xlDialogOpen).Show End Sub

kalmit
質問者

補足

ありがとうございます。せっかくなのですが、これだと開くフォルダがその都度変わってしまう可能性がないでしょうか? 一定のフォルダから、ファイル名だけ毎回変わっていく処理なのですが。。 あと、ファイル名を毎回指定したあと、インポートしていく手順も自動化したいのですが、現状のマクロとどう組み合わせたらよいでしょうか。やってみたのですが、うまくいきませんでした。 現状のマクロとは、「開く」から始まってテキストファイルインポートを完了していく手順をマクロ記録しただけのものです。 以下その内容です。 Sub Macro1() Workbooks.OpenText Filename:="C:\WINDOWS\デスクトップ\フォルダ1\インポート用1.txt", _ StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _ ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, Comma:=True _ , Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), _ Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1)) End Sub

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

関連するQ&A

  • Excel VBA インポートファイル名指定したい

    Excel VBA 初心者です。 スイッチを押すと、テキストファイルのインポートダイアログを開いて、外部データの取り込みをしたいと考えています。 指定セルにインポートを設定+シートにマクロ実行スイッチを配置+マクロの自動記録の記述を参照してマクロを登録し、そのスイッチを押す事で、正常にインポート作業を行なう事ができました。 しかし不明点が2箇所ほどあります。 1.ダイアログを開いたとき、ファイル拡張子を指定したいのですが、どうすれば指定できますか? 2.ダイアログを「キャンセル」で閉じると、「実行時エラー1004:アプリケーション定義またはオブジェクト定義のエラー」と表示されるのですが、解決方法はどうすればいいですか?  ※マクロの自動記録を参照して記述したマクロ処理 Sub Macro1() Sheets("HIN").Select Range("A1").Select ActiveCell.Offset(2, 0).Select Selection.QueryTable.Refresh BackgroundQuery:=False Sheets("Sheet1").Select End Sub 環境:EXCEL2000、VB6.0 以上、宜しく御願い致します。

  • Access VBA インポート シート指定

    AccessのVBA を用いて、ExcelからAccessへデータを インポートする際、ダイアログボックスを表示させて Excelのファイルを選択させるようにしています。 これをシート名まで指定させる事は可能でしょうか? ◆シートは枚数が固定されず、都度かわります。 ◆インポートしたいシート数も都度かわります。 ◆1sheet = 1 テーブルにしたいです。 ◆1度の動作で、1sheetのインポートでも、複数でもかまいません。 ◆できれば、ダイアログでファイルを選択した流れで シートまで選択される方法が望ましいです。 ◆Accessのテーブル名もテキストボックスで任意なものが 付けられるようにしたいです。 お知恵をお貸し下さい、何卒よろしくお願いいたします。

  • Excel 「テキストファイルのインポート」 ダイアログボックスを表示させない方法

    excel2002の「データの取り込み」機能を使って 外部テキストファイルをシート上に直接展開する作業をマクロ記録したところ、 下記のようなマクロコードが自動生成されました。 With Selection.QueryTable .Connection = "TEXT;C:\hogehoge.txt" .TextFilePlatform = 932 .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = True .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = False .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(1) .TextFileTrailingMinusNumbers = True .Refresh BackgroundQuery:=False End With これを走らせると、 「テキストファイルのインポート」ダイアログボックスが開いて、 インポートするファイルを選ぶよう求められるのですが、 開くファイル名も決まっているので、このダイアログが出ないようにしたいのです。 vbaの記述でこのダイアログをすっとばす方法はあるのでしょうか? ご指導のほどよろしくお願いします。

  • エクセルマクロについて

    いつもお世話になっております。 エクセルのマクロについて質問させていただきます。 仕事上測定した10回データを、エクセルで計算させ平均やσ出すという処理を毎回しているのですが、測定したデータというのが、csvファイルで10個できあがり、それを一つずつ開いては貼っての繰り返しをしています。 この作業をマクロで自動的に出来ないものかと思い質問させていただきました。 装置によって毎回.csvの前のファイル名が変る恐れがあるので、csvファイルの入っているフォルダ(ディレクトリを指定)を指定し、その中にあるcsvファイルを自動的に貼る事が出来る事が理想です。 VBAではこのような処理のサンプルプログラムがあるのですが、VBAはあまり解らないので出来ればマクロの記録からできればと思います。 宜しくお願い致します。

  • アクセス 複数のテキストファイルインポートについて

    アクセス VBAについてです。 DoCmd.TransferTextで複数のテキストファイル(同一フォルダの中、上から順に全て)を取り込み、 テーブル名を一つ一つ順番につけていくことは可能でしょうか?? 例 フォルダダイアログを作ってそのフォルダを指定して フォルダ名をテキストボックスに表示、 その表示されてるフォルダの中身を 別のボタンを押せばインポートできるように、 テキストファイル A1 A2 A3 A4 インポート後のテーブル名 B1 B2 B3 B4 インポート時の定義は全て同一です。 わかりにくくてすみません、 知恵を貸してください

  • セルで指定した名前のテキストファイルをインポートするマクロの作り方

    例: A1セルに5,B1セルに1を入力。(5月1日を表しています) その後マクロを実行し、0501.txtという5月1日に相当する テキストファイルをインポートするというものです。 該当のフォルダ内には各日付ごとのテキストファイルが 複数存在しており、インポートしたいテキストファイル をエクセルファイルのセル上で指定するのが目的です。 インポートするファイル名を固定しないというマクロの 作り方がわかりません。 どうぞよろしくお願いします。

  • エクセル ファイル名を指定して保存したい。

    現在次のようなマクロを最後に記述してそこでダイアログボックスに表示されるデフォルトのファイル名に都度日にちを手動入力して保存しています。 これを自動でファイル名を保存ダイアログボックスに表示できるようにしたいのですがどのような記述にしたらいいでしょうか ※ファイル名 A1に2016/9/15と入っている場合 「160915△△△△△△△..xlsm」と保存したい。 (「△△△△△△△」は固定) 現在使用中 Application.Dialogs(xlDialogSaveAs).Show Windows7/エクセル2013

  • Excelのマクロについて

    Excelのマクロについて excel2003で,マクロの自動記録を勉強中です。 [ツール]-[マクロ]-[新しいマクロの記録]でマクロ名を入力し,(マクロの保存先を「作業中のブック」として,)[OK]をクリックすると マクロの記録が始まります。 マクロの記録終了後, [ツール]-[マクロ]-[マクロ]で「マクロ」ダイアログボックスを見ると,マクロ名が表示されます。 この場合は実行も正常にできます。 しかし, ブックを一旦保存した後,開いて,マクロを実行しようと, [ツール]-[マクロ]-[マクロ]で「マクロ」ダイアログボックスを見ると,マクロ名が(マクロ名単独ではなく)ブック名とともに表示されます。 実行するとエラーになります。 何が悪いのか分かりません。なにか基本的なミスがあるのかも知れないと考えました。 原因(ミス)に心当たりのあるかた,是非教えてください。

  • ACCESS2007 インポートするマクロでファイル指定

    ACCESS2007を使用しています。 tblにインポートするマクロを作成しようと思っているのですが、入力ファイルをパラメータのように与えることはできるのでしょうか。 できるのならば、その方法を教えてください。 マクロのアクションに「テキスト変換」で引数の箇所で、ファイルを指定しますが、これはFIXしたファイル名を指定しなければいけないようなので無理なのかなとは思っていたりしてます。 よろしくお願いします。

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

このQ&Aのポイント
  • 変な妄想とニコチン依存症の違いを解説します。
  • 変な妄想は幻想に基づいた思考パターンであり、ニコチン依存症は物質に依存している状態です。
  • 変な妄想は主観的な経験に基づき、ニコチン依存症は生体的な依存状態です。
回答を見る

専門家に質問してみよう