• 締切済み

ExcelVBAでフォルダ内のファイルを読み込む

お世話になります。 ExcelのVBAで、選択したフォルダ内全てのテキストファイル(.txt)を読み込んで、書き出しすることはできるでしょうか? 例えば、 01....05.txt→VBA→01_a...05_a.txt のような感じで、別ファイルで作りたいです。 動作環境はMacOsX、Excel2004forMacです。 Windowsでは動くVBAもMacでは動かなかったりするので、苦戦しています。 お願いします。

noname#161375
noname#161375

みんなの回答

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

>頻出しているとおっしゃるのならその質問のURLなどを例えとして貼って頂けないでしょうか? もちろんWINの話だが。Googleで「フォルダ ファイル VBA」で照会すればでてくることだし、多数有るので、アドバイスにURLを一々載せる必要もない。 http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_080.html 以下たくさん出る。 ーー MACの質問に応えたのが、適当でなかったかとも追うもが、VBAであれば、ほとんどそっくり使えると思って書いた。 Splitの件も昔の(97?)バージョンでは使えなかった記憶はあるが。 使えないなら、Instr関数でやれるよ。 そもそも>WEB照会もして、コードも書いているなら、もっと細かい部分の質問になるし、質問にコードも書いているように思う。

noname#161375
質問者

お礼

ありがとうございます、そのサイト様はもちろん使わせて頂いております。 残念ながらMacでは使えません。と言っても、情報サイトが少ないので自分で実際に実行してみなければわからないというのも実際ですが。 Instr関数でもできるのですね。それは知りませんでした。ありがとうございます。 Webから情報をとって、コードを何回か書いていても思うような結果が得られなかったので、自分が今まで書いたコードに変更を加えて頂くというよりも、新しく提示して頂いた方が良いのでは、と思い敢えて伏せさせて頂きました。 誤解を招いたようで申し訳ありません。 必要であれば記しますが、あまり参考にはならないと思います。エラーばかりが起きてExcel自体が落ちるので…。

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

WINの話だが、この質問頻出している。 Googleで「フォルダ ファイル VBA」で照会すれば、拡散コード例や説明が出る。 (1)FSOでやる (2)Dir関数でやる などが有る ーーー 一般の質問とやや違うのが (1)テキストファイルに限る(でもエクセルファイルに限る例が多いが同じでしょう) (2)別フォルダにファイル・コピーする Googleで「フォルダ 「ファイル コピー VBA」で照会すればよい。 (3)ファイルの名前を変えている(ルール性は有るようだが) 文字列の細工の問題(ーの前とドットの前までの分割。ただし拡張子なしのファイル名も捉えられる) 参考 FSOのGetBaseName メソッド http://www.mhl.janis.or.jp/~winarrow/vbscript/htm/vbs304.htm など。 文字列でドットとハイフンで2段にSplitを使っても出来る。

noname#161375
質問者

お礼

解答ありがとうございます。 既にGoogleで調べた結果どうしてもできなかったので聞いています。 自分の調べの足りなさを承知しておりますが、 頻出しているとおっしゃるのならその質問のURLなどを例えとして貼って頂けないでしょうか?見つけられなかったもので…。 質問に記した通り、Windowsでは動くものもMacでは動きません。 ご回答で頂いたSplit関数も使えないのです。。

関連するQ&A

  • フォルダ内全ファイルをシート毎に貼付方法について

    VBA仙人様ご教授お願い致します。 1フォルダに数十のログファイル(.txt)が格納されています。 1ファイルは3~5万行記述あります。 これを1つのExcelファイルにしたいと思っています。 VBA流れとして (1)ログ格納フォルダを選択 (2)ログファイル名を取得 (3)既存Excelファイルに(2)で取得したファイル名(.txt除いた)で順次シートを追加 (4)ログファイル=シートとなるようにファイル読み込み/貼り付け (5)ログファイルを閉じる VBAイメージ 格納フォルダ:C:\test \test内    :A001.txt,A002.txt,B003.txt・・・・・・・・Z051.txt(このフォルダにはログのみ格納) C:デスクトップ\集計マクロ.excel (VBAの記述のあるExcelシートにはSheet1のみが存在) VBA前 集計マクロ.excel/Sheet1 VBA実行後 集計マクロ.excel/Sheet1,A001,A002,B003,D004・・・・・・・・・Z051が追加、シート毎にログ情報記載 単一ファイルの読み込み/ファイル名をシート名に付与/情報コピペ/ファイル閉じについては、 作成できたのですが、複数ファイルの場合のファイル名を順次取得し、シート名として付与するなど objやValiant変数などで試行錯誤しましたが解決できず、こちらに質問されていただきました>< このVBAで作成されたシートからの集計マクロについては完成していますが、 その手前でつまづいています>< ご教授のほどお願い致します><

  • フォルダのアドレスと選択したファイル名のコピー

    フォルダのアドレスと、そのフォルダ内で選択されているファイルのファイル名を 一括でコピーする方法はありますでしょうか。 画像のような状態で何か操作することで 下記のように保存先とファイル名をコピーできるようにしたいです。 --------------------------------- \\ああああ\いいいい\・テスト テキスト.txt --------------------------------- ※「 テキスト.txt 」ファイルは開いていない状態です。 エクセルを立ち上げている状態ならVBAを使えばコピーできる  など 何か方法が無いかお知恵頂きたいです。 何卒宜しくお願い致します。

  • エクセルVBAでフォルダ指定後、フォルダ内のファイル操作について

    あるフォルダ内に大量のフォルダ(フォルダ名は日時)があり、その各フォルダ内にテキストファイルが001.txt、002.txtとあります。 それぞれのテキストファイルの名前をフォルダ名(日時)とテキストファイル名を組み合わせたファイル名にしたいです。 イメージ)  最初に大元のフォルダを選択。     ↓  選択されたフォルダ内にある大量のフォルダから  それぞれのフォルダ名をフォルダ内のテキストファイルへファイル名を変更する。 例)フォルダ名「2006-08-28 11-30」   テキスト名「001.txt」   このファイルを「2006-08-28 11-30-001.txt」 みたいにしたいです。 非常にわかりにくいかもしれません。。 これができると非常に助かりますので、是非ご教示お願いします。

  • ExcelVBAでフォルダへのハイパーリンクを

    Excelにファイルサーバーに置いてあるフォルダ名一覧があるのですが、このフォルダ名をクリックしたら実際にフォルダが開くようにハイパーリンクをしたいと思います。 (例:フォルダは\\serv1\aの中に名前「f1、f2,f3・・」で存在します。 またExcelにはA1にf1、A2にf2、A3にf3・・と記載されています。 A1をクリックするとf1のフォルダが開く・・というようにしたいです。 ちなみに空白のセルには何も入力したくありません。) VBAを使わずになんとかなるならそれでもOKなのですが、VBAを使うのであればどのようにすればよいでしょうか。 VBAはほとんど使ったことがないので、すみませんがお願いいたします。

  • MS Office Excel 2003でテキストデータファイルを読み

    MS Office Excel 2003でテキストデータファイルを読み込む方法 1111.txt 2222.txt 3333.txt というテキストデータファイルがあり、中身は添付画像の様になっています。 (テキストファイルは同じフォルダに格納されています) このテキストデータをExcelに読み込みたいのですが、以下の様な動作をして欲しいと思っています。 (1)セルA1にテキストデータファイルのファイル名(拡張子は省く)を入れる (2)セルA2から下に、添付ファイルのA列のデータが入り、セルB2から下にE列のデータが入る (3)セルA1に別のファイル名を入れると、そのファイルのテキストデータに切り替わる このような事は可能なのでしょうか? もし可能であれば教えて下さい。 よろしくお願いします。

  • ExcelVBAでファイルを開くフォルダ指定方法

    ExcelのVBAを用いて実験データのcsvファイルをまとめるプログラムを書いています. 肝心のプログラムはほぼできています. しかし OpenfileName = Application.GetOpenFilename("CSVファイル,*.csv?") としたときに開かれるフォルダ(ファイルを指定するフォルダ)がカレントフォルダ?となっております. 実行するExcel(VBA入り)と実験データが下記のパスにあったとして C:\Users\ABC\Documents\Data\110302\ カレントフォルダはなぜかマイドキュメントがデフォルトになってしまいます. C:\Users\ABC\Documents\ 階層移動できるので問題なくもないのですが,一々階層移動するのも面倒なので修正したいと考えております. そこで (1)プログラム実行直前にカレントフォルダを実行するExcel(VBA入り)の位置に変更する方法 (2)カレントフォルダと関係なく実行するExcel(VBA入り)があるフォルダを開く方法 どちらかで対処できると考えたのですがその方法が見つかりません. (ちなみに実行するExcel(VBA入り)の位置は動かすものとするので絶対パスでの指定はなしとします) どなたかご教授お願いします.

  • サブフォルダ内の全てのテキストファイルを1発処理する方法

    Excel2007のVBAを使い、下記のようなマクロを作成しました。 (質問に必要そうな所だけ掲載しています。) Dim dir_name As String ' ディレクトリ名 Dim file_name As String ' ファイル名 Dim EffectiveRow As Integer ' 開始行数/Excel/Row(行) Dim ShellApp As Object ' SHDOCVW.DLL / MIC Dim oFolder As Object ' フォルダパス EffectiveRow = Range("A65536").End(xlUp).Row Set ShellApp = CreateObject("Shell.Application") Set oFolder = ShellApp.BrowseForFolder(0, "フォルダ選択", 1) dir_name = oFolder.items.Item.Path ChDir dir_name file_name = Dir("*.txt", vbNormal) Do Until file_name = "" EffectiveRow = EffectiveRow + 1 Call ImportText(file_name, EffectiveRow) file_name = Dir() Loop ShellApp.BrowseForFolderを使い、指定したフォルダを選択すると、 その中に有る、テキストファイル(.txt)を、全てExcelに書き込む というマクロを作成したのですが、もっと汎用性を高くするために、 下記の内容を実現したく思っています。 - ↓ 実現したい事↓ - - 状況 - *フォルダの中に、サブフォルダが複数有り、そのサブフォルダの中に、 テキストファイル(.txt)が複数入っている。 - 処理 - サブフォルダを格納している*フォルダを、ShellApp.BrowseForFolderで 選択し、一度でサブフォルダ内のテキストファイルを全てExcelに書き込 めるようにしたい。 上記のマクロから発展させて、このような処理を行う事は出来るでしょうか? また、どのようにすれば実現させることが出来るでしょうか? ご教授のほど、よろしくお願いします。m(_ _)m ※ [*フォルダ ] は同一フォルダです。

  • Perlで フォルダ内の全てのファイルを別のフォルダにコピーするには

    お世話になります。 多分ご存知の方には簡単な話だと思いますが教えていただけませんか。 Aフォルダにあるhoge.txtをBフォルダにコピーしたければ use File::Copy; copy "./A/hoge.txt", "./B/hoge.txt" or die $!; で出来るのはわかっているのですが、Aフォルダにある全てのファイルをBフォルダにコピーするというのはどのようなコードを書いたらよいのでしょう。 ちなみにAフォルダには100以上ファイルがあります。ファイルは全部テキストファイルです。

    • ベストアンサー
    • Perl
  • 開くファイルのフォルダと拡張子txtを指定する

    excel2021で最初に開くフォルダの指定とそこで開く拡張子をtxtに指定することはできますか。 最初に開くフォルダは、何かファイルを開いた後、ファイルーオプションー詳細設定の起動時にすべてのファイルを開くフォルダでパスを指定すれば、 そのフォルダが開きますが、そこに無いファイルの場合はさらに参照としたとき、エクスプローラ風のツリーで、目的のフォルダを開きますが、その場合はexcelファイルのみ表示されるので、さらに開く拡張子TXTなどを指定せねばなりません。 この操作を繰り返しやるときは面倒です。 それで、最初に開くフォルダと拡張子txtを共に指定したいのです。この場合、当然ながらexcelファイルを開く場合は面倒になることは許容します。

  • フォルダを指定し、複数のエクセルファイルの情報を別ファイルに保存したい。

    エクセルのマクロで以下の実装を行いたいと思っています。 -------------------------------------------------------------- 1.あるフォルダを指定 2.そのフォルダの中に入っているエクセルファイルの特定列複数行(行数不明、データがなくなるまで)の情報を抜き出す 3.2で抜き出した情報を別ファイル(テキスト形式)に保存 -------------------------------------------------------------- ・2で指定するフォルダには複数ファイルがあります ・3で保存するファイル名は2で開いたファイル名と同じ名称にしたい(拡張子は別) フォルダの状態は以下のようになっています。 editor.xls ←マクロを組みたいエクセルファイル L folderA    L A1.xls    L A2.xls    L A3.xls      : L folderB    L B1.xls    L B2.xls    L B3.xls      : L forlerTextfile    L A1.txt ←作りたいファイル    L A2.txt    〃    L A3.txt    L B1.txt    L B2.txt    L B3.txt      : 分かりづらくて申し訳ありませんが、どなたかご教授いただけないでしょうか。 宜しくお願いいたします。

専門家に質問してみよう