- ベストアンサー
Excel VBAにてtextファイルの読み込み
全くのド素人です。記録マクロやちょっとした手直ししかしたことがないため、簡単に回答頂けたらうれしいです。 やりたいこと: txtファイルをExcelで開き、データを直してSaveasで保存する。 と簡単なことなのですが、私にはまずファイルを開くことができません。。ファイルは特定ではなく、その時その時で違うファイルを自分で選ぶ様にしたいのですが、そこが分かりません。。 よろしくお願い致します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。#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
その他の回答 (3)
・・・たびたび#2です。ごめんなさい、#2のコード、一部間違ってます。 もともと、Functionでファイル名を返すようにしてたのをSubに変えたのに FileSelect(関数名)にファイル名を設定していますが、Subなのでエラーになりますね。 でも、happypointさんのほうが短くて済むし、そちらで。。。
お礼
yunn117さん、どうもありがとうございました! yunn117さんのやり方でもできました。 説明が不足していたようですいません。。 補足すると、テキストファイルを開いてからまたマクロでデータの処理をしSaveasしようとしています。テキストファイルが大量にあり、そのほうがいいかな?と思ったので・・・。 本日は時間がなくまったく手を付けられませんでしたが 明日にでも完成させようと思っています。
・・・なんていうか・・・マクロ化する理由が見えません。(^-^; ファイルは毎回違う、編集は手作業(ですよね?)・・・なら 普通にメニューからファイルを読み込んで、編集すればいいんじゃないか、と。 最後の『名前を付けて保存』する時の名前が一緒なんでしょうか? (やめた方がいいとか責めたりしてる訳じゃないです。疑問に思っただけ。) まぁ、それはいいとして。 ファイルを開くダイアログを表示したい、ということでいいんでしょうか。 以下が参考になれば幸いです。ちなみに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)
はじめまして。まずは、ご忠告を。 >txtファイルをExcelで開き、データを直してSaveasで保存する。 >と簡単なことなのですが たしかに口で説明すると簡単なことなんですが、ファイルの処理はVBAでもわりと「上級編」の内容ですよ。 処理をする上で、組み込まなきゃいけないことは、次のステップに分けられると思います。 1.ファイルを自分で選ぶ方法 (ファイルのパスを取得する方法) 2.txtのファイルを開いてシートに読み込む方法 3.再度テキストファイルとして保存する方法 さらに、 ・ファイルを保存する場所やファイル名を指定する方法 ・同じ名前のファイルがあるかないか事前に把握する方法 ・ドライブの準備ができているか、空き容量があるか調べる方法 といったテクニックも、場合によっては必要になります。
お礼
happypointさん。ご回答どうもありがとうございました。 貼り付けて試したところあっさりできました! もっと勉強しなくてはならないですよね。。がんばります。