• ベストアンサー

Excel VBAにてtextファイルの読み込み

全くのド素人です。記録マクロやちょっとした手直ししかしたことがないため、簡単に回答頂けたらうれしいです。 やりたいこと: txtファイルをExcelで開き、データを直してSaveasで保存する。 と簡単なことなのですが、私にはまずファイルを開くことができません。。ファイルは特定ではなく、その時その時で違うファイルを自分で選ぶ様にしたいのですが、そこが分かりません。。 よろしくお願い致します。

  • Qbon9
  • お礼率48% (20/41)

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

  • ベストアンサー
  • happypoint
  • ベストアンサー率36% (521/1422)
回答No.3

こんにちは。#1です。当方はExcel2002です。 開こうとするファイルのファイル名(パス)を取得するための、サンプルを以下に示します。 参考にしてみてください。 このコードは標準モジュールに貼り付けてください。 Option Explicit Sub GetFileNameTest() Dim myOpenFileName As Variant '[ファイルを開く]ダイアログ  myOpenFileName = Application.GetOpenFilename("テキストファイル (*.txt), *.txt")  If myOpenFileName = False Then Exit Sub '[キャンセル]ボタンのとき、処理を抜ける 'ファイル名の表示  MsgBox myOpenFileName '実際には、このmyOpenFileNameを、読み込み処理で利用します。 End Sub

Qbon9
質問者

お礼

happypointさん。ご回答どうもありがとうございました。 貼り付けて試したところあっさりできました! もっと勉強しなくてはならないですよね。。がんばります。

その他の回答 (3)

noname#11856
noname#11856
回答No.4

・・・たびたび#2です。ごめんなさい、#2のコード、一部間違ってます。 もともと、Functionでファイル名を返すようにしてたのをSubに変えたのに FileSelect(関数名)にファイル名を設定していますが、Subなのでエラーになりますね。 でも、happypointさんのほうが短くて済むし、そちらで。。。

Qbon9
質問者

お礼

yunn117さん、どうもありがとうございました! yunn117さんのやり方でもできました。 説明が不足していたようですいません。。 補足すると、テキストファイルを開いてからまたマクロでデータの処理をしSaveasしようとしています。テキストファイルが大量にあり、そのほうがいいかな?と思ったので・・・。 本日は時間がなくまったく手を付けられませんでしたが 明日にでも完成させようと思っています。

noname#11856
noname#11856
回答No.2

・・・なんていうか・・・マクロ化する理由が見えません。(^-^; ファイルは毎回違う、編集は手作業(ですよね?)・・・なら 普通にメニューからファイルを読み込んで、編集すればいいんじゃないか、と。 最後の『名前を付けて保存』する時の名前が一緒なんでしょうか? (やめた方がいいとか責めたりしてる訳じゃないです。疑問に思っただけ。) まぁ、それはいいとして。 ファイルを開くダイアログを表示したい、ということでいいんでしょうか。 以下が参考になれば幸いです。ちなみにExcel2000です。 Private Sub FileSelect() Dim oFileDlg As FileDialog 'オブジェクト変数 ファイルダイアログ 'oFileDlgにファイルダイアログをセット Set oFileDlg = Application.FileDialog(msoFileDialogOpen) With oFileDlg .Show 'ダイアログ表示 'ファイル選択がされていない(キャンセルされた)場合は終了 If .SelectedItems.Count = 0 Then GoTo Exit_FileSelect '選択されたファイル名を戻り値に設定 FileSelect = .SelectedItems(1) End With Exit_FileSelect: 'オブジェクト変数の開放 Set oFileDlg = Nothing End Sub

  • happypoint
  • ベストアンサー率36% (521/1422)
回答No.1

はじめまして。まずは、ご忠告を。 >txtファイルをExcelで開き、データを直してSaveasで保存する。 >と簡単なことなのですが たしかに口で説明すると簡単なことなんですが、ファイルの処理はVBAでもわりと「上級編」の内容ですよ。 処理をする上で、組み込まなきゃいけないことは、次のステップに分けられると思います。 1.ファイルを自分で選ぶ方法 (ファイルのパスを取得する方法) 2.txtのファイルを開いてシートに読み込む方法 3.再度テキストファイルとして保存する方法 さらに、 ・ファイルを保存する場所やファイル名を指定する方法 ・同じ名前のファイルがあるかないか事前に把握する方法 ・ドライブの準備ができているか、空き容量があるか調べる方法 といったテクニックも、場合によっては必要になります。

関連するQ&A

  • エクセルのマクロでテキストファイルを生成するには?

    いつもお世話になっております。 マクロで エクセルのSheet1上のA1:A5のデータをコピーして 『吐き出し.txt』というテキストファイルを生成したいのです。 どのようなマクロを書けばよいかご教示ください。 通常の「txt形式で保存」ですと、 データ内に「,」があるため、 テキストファイルだとデータの両端に「"」がついてしまうため 不具合が発生するのです。 なんとかなりませんでしょうか。 よろしくお願いいたします。

  • VBA 新規ファイルを元ファイルと同じ場所に保存する方法

    こんにちは。VBA初心者です。 エクセルファイルのシートを、いろいろ行を増やしたり計算を自動にするようにして、 最後にテキスト形式にするためのマクロをつくっております。 元のエクセルファイルの対象のシートをコピーして、新しいファイルを作成しペースト→保存→ファイルを閉じるところまでなんとかできました。 現在、下記のコードで新しいファイルは「マイドキュメント」に保存されていますが、元のエクセルファイルと同じ場所に保存したいのですが、どのようにコードを書けばよろしいでしょうか。 教えていただけますと幸いです。宜しくお願い申し上げます。 Sheets("TXT").Copy Sheets("TXT").SaveAs FileFormat:=xlCurrentPlatformText, Filename:="今月.txt" With Workbooks("今月.txt") .Saved = True .Close

  • テキストファイルとして開くVBA

    フォルダC:\Users\USER\Desktop\あいう において このダイアログを開いて そのなかのファイル(A.xml)を txtファイルとして開いて その名前を テキスト.txt として 同名で保存したいのですが Dim FileName As Variant Dim NewFile As TextFile FileName = Application.GetOpenFilename() Set NewFile = TextFile.Open(FileName) NewFile.SaveAs "テキスト.txt" Activetxtfile.SaveAs FileName:="C:\Users\PC\Desktop\あいう\テキスト.txt", FileFormat:=TextFile どうも違うようです 御教示ください

  • EXCEL 2003のVBAでテキストファイルの取り込み方

    EXCEL 2003のVBAでテキストファイルの取り込み方 EXCEL 2003のVBAでテキストファイルのみをとりこむものを組もうと思います。 - 読み込むテキストファイル名は一定の決まりがあります。AAxxxx.txt あるいは ZZxxx.txt といった感じで先頭文字はAAまたはZZで中のxxxは数字の可変(日付)です。 - Directoryはどこに入るか決まりがありません。(このマクロを使用するユーザーがどこのDirectoryにテキストファイルを保存しているかわからないため) FILEN = Application.GetOpenFilename If FILEN = False Then Exit Sub End If Workbooks.OpenText Filename:=FILEN でやると、Directoryの問題は解決しますが、テキストファイル名を絞り込めません いい方法をご教示いただければ助かります。

  • Excel「テキストファイルのインポート」

    Excelの「テキストファイルのインポート」によってテキストファイル(仮に「a.txt」)をワークシート上に読み込んだ状態で、「a.txt」を削除しようとすると、「ファイルが開かれているため削除できない」旨のエラーメッセージが表示されます。 このとき、Excel上では「a.txt」が開かれていることは確認できませんが、マクロを使うなどの手段を用いると「a.txt」を閉じることはできるのでしょうか? 「a.txt」をインポートしたファイルを保存してしまえばいいことはわかっているのですが、あくまでインポートした直後の状態で「a.txt」を削除する手段を探しています。

  • テキストファイルからデータ読み込みに関して。

    皆さん、始めまして。 テキストファイルのデータからエクセルへ読み込むエクセルマクロを構築したく質問させて頂きました。 テキストデータでリストの一覧をExportできるのですが、その整理が非常に手間なので自動化したく マクロを作成する事を検討しております。 環境はデータ内容を下記に記載させて頂きます。 [環境] Windows7 / Excel2007 [テキストデータサンプル] 下記に貼り付けたように条件によって出力方法が違うデータがあります。 ・レコードが1つのものは項目がたてに並んでいる。 ・レコードが2つ以上になると項目が横にならぶ。 処理番号 : 001-H20120910001 処理記録 ---------------------- 記録 日時    年齢   地域 0 20120712 63 東京 1 20120912 63 東京 (結果数 = 2) --- END 処理番号 : 001-H20120919999 処理記録 ---------------------- 記録 = 0 日時 = 20120909 年齢 = 19 地域 = 神奈川 (結果数 = 1) --- END [実行後に得たい情報] 処理番号で検索し、その中のデータを下記ならびでエクセルデータに変換したいと考えています。 001-H20120910001 0 20120712 63 東京 001-H20120910001 1 20120912 63 東京 001-H20120919999 1 20120909 19 神奈川 エクセルのマクロは勉強をし始めたばかりで初心者程度の知識ですが、 もしよろしければご回答、ご助言いただければと存じます。 よろしくお願いいたします。

  • エクセルファイルのやりとりについて

    仕事でエクセルファイルをメールでやりとりすることになりました。 しかしながら、相手方がウィルスに感染していて、エクセルファイルにウィルスが組み込まれてしまう可能性を懸念しています。 そこで、マクロを含まないただの数値データの場合ですが、 エクセルで作成したデータを.csv や .txt 形式で保存してもらいそれを送ってもらう ことは、ファイルを開いたときに攻撃を受けないようにする対処として有効でしょうか? ご回答いただけると幸いです。

  • エクセルVBAでテキスト保存

    エクセルのファイルをメモ帳で保存する場合に下記のコードが書いてあります。 strFILENAME = xlAPP.GetSaveAsFilename(InitialFileName:="データxxx_yyy_zzz.txt",FileFilter:=cnsFILTER, Title:=cnsTITLE) このうち、ファイル名の"データxxx_yyy_zzz.txt"、xxx, yyy,zzzをそれぞれ、特定のセルから取得したい場合、どのように直せばいいのでしょうか? xxx=A1セル yyy=A2セル zzz=A3セル といった感じです。 よろしくお願いします。

  • テキストファイルの読み込みについて

    PHP4を使用しています。最近、はじめたばかりで教えていただきたいと思い、質問させていただきます。 現在、作成したいシステムの仕様を説明します。 まず、abc.txtというファイルには、 20050225,001,パソコン,102000 20050225,002,モニター,4000 20050225,003,マウス,2100 … (日付、ID、品物、単価) いうデータが保存されております。 このtxtファイルを二次元的に読み込ませ、表示するのですは、一行ずつ表示したいのです。表示するページには、"次へ"ボタンを作成し、ボタンを押すと次行への表示を行う。 以上ですが、スライドショー感覚で表示を行いたいのですが、どのようにすればよろしいのでしょうか。 私が考えるには、txtファイルのIDまたは、txtファイルの行数をgetやpostで引き渡して…と考えますが、PHP初心者もあり、どのようなロジックで次行に移るのかわかりません。よろしければ、その方法(命令)もご伝授の程、宜しくお願い致します。

    • ベストアンサー
    • PHP
  • エクセルにてテキストファイル読み込みでエラー  

    いつもお世話になっております。 テキストファイル (test.txt)をエクセルマクロにてセルへの読み込みを したいのですが、なぜか エラーになります。 Cells(n, 1) = buf  でエラーのようです。 理由がわかりません。 教えてもらえないでしょうか 普通の文章なら読み込みできるのですが =  を使っているとエラーがでるようです。 test.txtの画像を添付します。 エクセルのマクロの内容は次の通り Sub テキストファイルをセルに転記() Dim buf As String, n As Long Open "C:\Users\a\Desktop\test.txt" For Input As #1 Do Until EOF(1) Line Input #1, buf n = n + 1 Cells(n, 1) = buf Loop Close #1 End Sub

専門家に質問してみよう