- 締切済み
フォルダ内にあるファイルを取得したい
aka_aoの回答
- aka_ao
- ベストアンサー率0% (0/0)
ファイルを取得なのか、ファイル名を取得なのか???
関連するQ&A
- フォルダ内にあるファイル名を取得するVBA
エクセル2010を使用しています。 VBA(マクロ)で以下の作業を実行したいと考えていますが、 初心者につき、ご教示いただけますでしょうか。 「マクロ」ファイルにある「実行」Sheetというにある「実行」ボタンで L2に入力したパス内にあるファイル(.xlsや.xlsmや.xlsbが混在しますが、基本的には全てエクセルファイル)のファイル名を K8から下へ取得したいのですが・・ 参考にしたコードでは うまく動作しませんでした。 以下では、L2のパスを参照するのも組めていないため、コード内に直接パスを書き込んでいますが 実際は、パスを変動させて使いたいので、L2を参照できるようになると助かります。 ※パスは、質問用に仮置きで「パス」としています。 Sub Sample() Dim buf As String, cnt As Long Const Path As String = "パス" buf = Dir(Path & "*.*") Do While buf <> "" cnt = cnt + 8 Cells(cnt, 11) = buf buf = Dir() Loop End Sub また、このコードでは 実行ファイル自体のファイル名も取得してしまうようなので、 実行ファイル以外のファイル名を取得したいです。 ご指導のほど、よろしくお願い致します。
- ベストアンサー
- Visual Basic
- 【VBA】 ファイル名の取得
23歳OLです。 会社でマクロを組んでいるのですが、 できないところがあったのでご相談させてください。 ▼やりたいこと ================================================ ・フォルダを自分で指定して、選択したファイルの名前をシートに書き込む 1.txt 2.log 3.xls とフォルダに入っていたら 1.txt 2.log 3.xls とシートに名前を書き込んでほしいです。 ・ファイルの種類はいろいろある。(txt.logなど) ================================================ ▼現在書いてみたコード ======================== Sub Sample1() Dim buf As String, cnt As Long Const Path As String = "" buf = Dir(Path & "*.*") Do While buf <> "" cnt = cnt + 1 Cells(cnt, 1) = buf buf = Dir() Loop End Sub ======================== これだと、初めから指定したフォルダしか取得することができないらしいです。 そもそもConst Path As String = "このぶぶん" このぶぶんにフォルダを指定しても動きませんでした。? どこが原因なのでしょうか? ご教示お願いします。
- 締切済み
- Visual Basic
- .xlsファイルが存在するパスを表示させたい
エクセルマクロ初心者です。 .xlsファイルをサブフォルダも含め検索し、A列にファイル名、B列にファイルが存在するパスを表示させるにはどうしたらいいでしょうか?検索するベースのディレクトリは決まっている”C:\temp”のでtemp以下、.xlsがどこに存在するのかを検索するマクロを組もうとしています。 いろんな書き込みを探し、サブフォルダを含め、ファイル名を取得するものは発見できたので組み込んでみましたが、、パスの表示方法がわかりません。 cnt = 0 Call Sample3("C:\temp") Callでサブルーチンsample3に渡し、ファイル名を取得しています。 Dim cnt As Long Sub Sample3(Path As String) Dim buf As String, f As Object buf = Dir(Path & "\*.xls") Do While buf <> "" cnt = cnt + 1 Cells(cnt, 1) = buf buf = Dir() Loop With CreateObject("Scripting.FileSystemObject") For Each f In .GetFolder(Path).SubFolders Call Sample3(f.Path) Next f End With End Sub あとは、どのように書けばいいのでしょうか? 宜しくお願い致します。
- ベストアンサー
- SE・インフラ・Webエンジニア
- VBA:最下層のファイルを取得
最下層にあるファイルのファイル名を取得したく下記の様なプログラミングを組んでみたところ、 「ファイル名または番号が不正です」というエラーが表示されてしまいます。比較演算子などをいじって 試行錯誤してみましたが、どうしてもできません。どのように修正すればよいのでしょうか。ご回答よろしくお願いいたします。 http://syarecowa.moo.jpというサイトのmenu001.htmの下にある"1/3ケタの数字.htm"のファイル名を全て取得したいと考えています。 現在組めているコードは下記の通りです Dim cnt As Long ---------------- Sub Macro5(Path As String) Dim buf As String, f As Object buf = Dir(Path & "/#/###.htm") ★★ここでエラーが生じていしまいます★★ Do While buf <> "" cnt = cnt + 1 Cells(cnt, 1) = buf buf = Dir() Loop With CreateObject("Scripting.FileSystemObject") For Each f In .GetFolder(Path).SubFolders Call Macro5(f.Path) Next f End With End Sub -------------------------- Sub Macro6() Dim URL As String 'ファイルパス Dim IE As Object 'オブジェクト Dim Myhtml As Variant 'HTMLタグデータ 'インターネットに接続 Set IE = CreateObject("InternetExplorer.Application") With IE .Navigate "http://syarecowa.moo.jp/menu001.htm" .Visible = Flase Do While .Busy = True DoEvents Loop 'Macro5呼び出し cnt = 0 Call Macro5("http://syarecowa.moo.jp/menu001.htm") End With End Sub
- ベストアンサー
- Visual Basic
- excelのファイルとセル値を書き出したい
excel2003を利用しています。 とあるフォルダにある excelファイル名(自分自身のファイルを除く) を全て書き出して、 且つ A1セルの値をB列に書き出すことを、やろうとvbaを作ってみましたが。 最後のファイルのA1セルを書きだすところで、エラーになっていまい そこだけ空白になってしまいます。※写真参照 記述は以下の通りです。どのように修正すればよいか 教えていただけないでしょうか? また他にもっと優れた記述があれば、そちらも教えて欲しいです。 よろしくお願いします。 Sub test() Dim buf As String, cnt As Long Dim Path As String Path = ThisWorkbook.Path & "\" buf = Dir(Path & "*.xls") cnt = 2 Do While buf <> "" If buf <> ThisWorkbook.Name Then cnt = cnt + 1 Cells(cnt, 1) = buf buf = Dir() Workbooks.Open Filename:=Path & "\" & buf MsgBox Workbooks(buf).Worksheets(1).Range("A1").Value Cells(cnt, 2) = Workbooks(buf).Worksheets(1).Range("A1").Value Workbooks(buf).Close End If Loop End Sub
- 締切済み
- Excel(エクセル)
- エクセル マクロ ファイル名の(追加)取得
エクセル2010を使用しています。 VBA(マクロ)で以下の作業を実行したいと考えていますが、 初心者につき、ご教示いただけますでしょうか。 現在、マクロ実行ファイル(エクセル)と同じフォルダ内にあるファイルの ファイル名を全て(マクロ実行ファイルに)記載する というマクロを使っています。 ※以下です。 Sub ファイル名取得() FolderPath = Cells(10, 7).Value 'パスは、G10セルから読み込む buf = Dir(FolderPath & "\*.*") cnt = 9 '実施行-1行目を指定 Do While buf <> "" If (buf Like "*.xls?") And buf <> ThisWorkbook.Name Then cnt = cnt + 1 Cells(cnt, 6) = buf 'F10からファイル名を記載 End If buf = Dir() Loop End Sub 現在、このマクロだと都度「上書き」になっているのですが 使用上の都合で 上記を実行して記載されたファイル名に 「追加」することもできると助かるのに・・と考えています。 ※以下「2」を質問させていただています! →1.マクロファイルと同じパスにあるファイルのファイル名を取得(記載):上記マクロで実行中 →2.1を実行後、同パスにファイルを追加し、ファイル名取得(記載)も1の後に追記 上記マクロは上記として、別途「追加」機能としてのマクロ(VBA)でも構いませんし、 上記を変更して「追加」にも対応できるマクロ(VBA)でも構いません! 具体的にイメージできていないまま質問してしまっているかもしれないので、 いくつかケース(構造)があるようでしたら、 ご面倒でなければ どのような動きがスムーズなのか? エラーが出にくいのか?等 併せて ご教示いただけますと、幸いです。 尚、説明がわかりにく等あれば 当然、補足させていただきますので、 ご指摘ください! よろしくお願い致します。
- ベストアンサー
- Visual Basic
- エクセルで、ファイル名を(追加で)取得したい
エクセル2010を使用しています。 VBA(マクロ)で以下の作業を実行したいと考えていますが、 初心者につき、ご教示いただけますでしょうか。 以前、ファイル名を取得するコードをご教示いただいたのですが、 使っている内に 「追加」をする機能を付けたいと思うようになりました。 以下は、現状使用しているコードです。 ※以前質問させていただいた際とは微妙に仕様変更になったので、配列は多少変更しています。 Sub ファイル名取得() FolderPath = Cells(10, 7).Value 'パスはG10から読み込む buf = Dir(FolderPath & "\*.*") '拡張子の指定はしない cnt = 9 '実施行-1行目を指定 Do While buf <> "" If (buf Like "*.xls?") And buf <> ThisWorkbook.Name Then '拡張子はエクセル系 cnt = cnt + 1 Cells(cnt, 6) = buf 'F10から順にファイル名を記載 End If buf = Dir() Loop End Sub 必ず「追加」があるわけではないので、 パターン1:新規・追加を判別して、「追加」であれば、現状入っている値(ファイル名ですが)の下の行からファイル名を追加していく パターン2:上記で「cnt = 9+1」から挿入している部分を変更し、「挿入行」を指定してファイル名を取得する どちらのパターンが エラーになりにくく、より簡単に設定できるものなのか?も わかっていないため、 ザックリとした質問になってしまいましたが、 ご教示いただけますと幸いです。 よろしくお願い致します!
- 締切済み
- Visual Basic
- サブフォルダの親フォルダを変えたい
フォルダの中のサブフォルダを取得してくて、 http://officetanaka.net/excel/vba/tips/tips95.htm の --------------------------------------------------------- Sub Sample4() Dim buf As String, msg As String buf = Dir("*.*", vbDirectory) Do While buf <> "" If InStr(buf, ".") = 0 Then msg = msg & buf & vbCrLf buf = Dir() Loop MsgBox msg End Sub --------------------------------------------------------- をやってみたら、サブフォルダを取得できたのですが、 上記のコードを実行すると 元々のフォルダのパスが「C:\Users」で、 「C:\Users」のサブフォルダが取得されてしまいます。 でも上記のコードでは、「C:\Users」は指定してないと思うのですが、 なぜ「C:\Users」のサブフォルダが取得されてしまうのでしょうか? 例えば 「C:\Users」ではなく、「C:\Program Files」のサブフォルダを取得するには、 どのようにコードを書き換えればいいのでしょうか? ご教授よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- 複数フォルダに格納されたファイル名取得VBA
お世話になっております。 あるフォルダに複数のフォルダが格納されており、更にそのフォルダの中にあるファイルの情報を取得するプログラムを書いたのですが、実行すると下記のようなエラーとなってしまいます。 ■エラー プロシージャの呼び出し、または引数が不正です 下から3行目、「buf = Dir()」が問題であることはわかるのですが、 何が問題でどのように解決したらいいかわかりません。 どなたかご教授の程よろしくお願い致します(>_<) ------------------------------------------------------------------------ Sub test() Dim buf As String Dim fName As String Dim msg As String buf = Dir("*.*", vbDirectory) Do While buf <> "" If GetAttr(buf) And vbDirectory Then If buf <> "." And buf <> ".." Then fName = Dir(CurDir & "\" & buf & "\" & "*.jpg") Do While fName <> "" cnt = cnt + 1 Cells(cnt, 1) = buf Cells(cnt, 2) = fName msg = msg & buf & "\" & fName & vbCrLf fName = Dir() Loop MsgBox msg End If End If buf = Dir() Loop End Sub ------------------------------------------------------------------------ これが実現できないと細かい作業を毎日繰り返す事となり、 かなり業務不可が高いです。。 繰り返しになってしまいますが、どなたかご回答よろしくお願い致します。
- ベストアンサー
- その他(プログラミング・開発)
- Excel VBA インデックスが有効範囲にない
よろしくお願いします。 Excel VBA 初心のものです。 プログラムを作ってみたのですが、 「インデックスが有効範囲にありません」となってその先に進めません。 ソースですが ------------------------------------------------------ Private Sub CommandButton1_Click() Dim buf As String, cnt As Long Dim TMP As Variant Const Path As String = "D:\Excel\sample\" buf = Dir(Path & "*.xls*") Set TMP = Workbooks(buf).Sheets("testdata").Range("A1").Value Do While buf <> "" cnt = cnt + 1 Cells(cnt, 1) = buf Cells(cnt, 2) = FileDateTime(Path & buf) Cells(cnt, 3) = TMP buf = Dir() Loop End Sub ------------------------------------------------------ エラーになる箇所は Set TMP = Workbooks(buf).Sheets("testdata").Range("A1").Value のところです。 このプログラムで何をしたいかと言いますと DドライブのExcel>sample というフォルダの中にある ・すべてのエクセルブック名(ファイル数は3個)と、 ・そのブックの作成日時と、 ・testdataというシート(各ブックに必ずあるシートです)のセルA1に入っている値 を実行ファイルのSheet1に書き出す、 というものです。 プログラムの実行ファイルはExcelフォルダ直下にあります。 どこが問題でエラーになっているのか分かりません。 ご指南よろしくお願いします。
- ベストアンサー
- その他MS Office製品
補足
書き直して、改めて質問し直したいと思います。 失礼しました。