- 締切済み
VBAでのDoWhileの中のDoWhile
VBAでファイル名取得のマクロを作成しているのですが buf = Dir(C\aa\aaa\, vbDirectory) buf= Dir(C:\aa, vbDirectory) Do While buf <> "" Do While bufa <> "" msg = msg & bufa & vbCrLf bufa = Dir() Loop msg = msg & buf & vbCrLf buf = Dir() Loop がうまく動作しません。 Dirの()が空白なのと、Do While <>の中身が空白のどちらかが原因だと思うのですが Do Whileの中でさらに Do Whileを動作させるにはどのように書けばいいのでしょうか?
- みんなの回答 (3)
- 専門家の回答
関連するQ&A
- 複数フォルダに格納されたファイル名取得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 ------------------------------------------------------------------------ これが実現できないと細かい作業を毎日繰り返す事となり、 かなり業務不可が高いです。。 繰り返しになってしまいますが、どなたかご回答よろしくお願い致します。
- ベストアンサー
- その他(プログラミング・開発)
- サブフォルダの親フォルダを変えたい
フォルダの中のサブフォルダを取得してくて、 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」のサブフォルダを取得するには、 どのようにコードを書き換えればいいのでしょうか? ご教授よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- ExcelのVBAについて
こんにちは、VBA初心者です。 C:\pictureの中に以下のファイルがあります。 DSC_0134.JPG~DSC_0154.JPG これらのファイルをExcelのA列1~20行に書かれた文字△○%&◎~▲▽%%★に.JPGをつけて保存したくて以下のコードを書きました。 Dim buf As String Dim msg As String Dim i As Integer Dim A As Variant i = 1 buf = Dir("dsc*.jpg", vbNormal) Do While buf <> "" Do While i < 21 buf = Dir() msg = buf 'msg=元の名前 A = Worksheets("sheet1").Cells(i, 1).Value Worksheets("sheet1").Cells(i, 2).Value = msg Name "C:\picture\msg" As "C:\picture\A.jpg" i = i + 1 Loop Loop Name "C:\picture\msg" As "C:\picture\A.jpg"のところで、「ファイルがありません。」となってしまいます。 あと、Worksheets("sheet1").Cells(i, 2).Value = msgのところで、\pictureの中の最初のファイル(DSC_0134.JPG)を表示しません。 どこを直せばよいのでしょうか?
- ベストアンサー
- Visual Basic
- フォルダのファイル数をvbaで取得したい
vbaなのですが、フォルダにgifファイルがたくさんはいっていますが、 その数を数えるコードを教えてください。 今は、 Sub Macro7() Dim File As String Dim i As Long File = Dir("C:\*.*", vbDirectory) Do While File <> "" File = Dir i = i + 1 Loop MsgBox "ファイル数は" & i & "です" End Sub のように、全てのファイル数をカウントして求めています。
- ベストアンサー
- Visual Basic
- 「.」と「..」はなんですか? vba
フォルダのファイル名を取得する時に myFile = Dir(FolderName & "\*.*", vbDirectory) myRow = 2 Do While myFile <> "" Cells(myRow, 1) = myFile myRow = myRow + 1 myFile = Dir Loop こういうコードをすると、 . .. と言うファイル名も取得されるのですが、 . .. と言うファイルは街灯のフォルダの中にはありません。 これはなんでしょうか?
- ベストアンサー
- Excel(エクセル)
- File = Dir は何をしてるのでしょう?
vbaです。 ---------------------------- Sub フォルダの中にあるファイルとフォルダを書き出す() Dim File As String File = Dir("C:\*.*", vbDirectory) Do While File <> "" Debug.Print File File = Dir Loop End Sub ---------------------------- このコードを実行すると、 フォルダの中にあるファイルとフォルダを書き出されるのですが File = Dir のコードは何をしているのでしょうか? 引数なしのDirの使い方もよくわからないし File = Dirがある事によってどういう効果があるのかもわかりません。
- ベストアンサー
- Visual Basic
- VBA フォルダ内にあるブックをすべて開く
いつもお世話になります。 デスクトップ上にフォルダ「新しいフォルダ」があり、その中に6つエクセルブックがあります。 Book1.xls Book2.xls Book3.xls Book4.xls Book5.xls と test.xls です。 test.xlsに、Book1~Book5を開く というマクロを作り実行したところ、実行時エラー1004 『Book1.xlsがみつかりません』と表示されます。 Sub test() Dim buf As String, i As Long buf = Dir("C:\Documents and Settings\tsasaki\デスクトップ\新しいフォルダ\*.xls") Do While buf <> "" i = i + 1 Workbooks.Open Filename:=buf 'Cells(i, 1) = buf buf = Dir() Loop End Sub どのが間違っているか教えてもらえますか。
- ベストアンサー
- オフィス系ソフト
- Excel2003VBA Dir関数について
Excel2003VBAを勉強中の者です。早速ですが質問させて頂きます。 C:\Documents and Settings\All Users\Documents\親フォルダ\の中に複数のフォルダと標準ファイルが混在しており、 フォーム上のコマンドボタンを押す事で、リストボックスにフォルダだけを表示させたく下のコードを作成しました。 動作としては一旦FileDateという配列に、取得したフォルダ名をセットし、それをリストボックスに出力する事としました。 配列FileDateはDir関数でフォルダ名をひとつ取得する度に、1つずつ要素数を増やしております。 自分のフォルダを表す記号”.”と一つ上のフォルダを表す記号”..”は省きます。 このコードを実行してみた結果、”.”と”..”は省く事ができました。 しかし次に標準のフォルダが変数bufに入った状態からエラーが発生してしまいます。 ■エラー発生■の部分で「実行エラー53 ファイルが見つかりません。」と出てしまうのです。 Dir関数が正しく使えていないのだと思います。 ローカルウィンドウで確認しましたが、変数bufにはフォルダ名がちゃんとセットされている事からファイルそのものは認識してくれている様に思えます。 自分なりにかなり調べ、色々と試してみましたがどうにも手に負えませんでした。 エラーの発生原因と対策をご教示頂きたく、どなたかご助力をお願い致します。 Private Sub CommandButton1_Click() Dim buf As String Dim i As Long i = 1 Dim FileDate() As Variant ReDim FileDate(1 To i) As Variant buf = Dir("C:\Documents and Settings\All Users\Documents\親フォルダ\", vbDirectory) Do If GetAttr(buf) And vbDirectory Then '■エラー発生■ If buf <> "" And buf <> "." And buf <> ".." Then FileDate(i) = buf i = i + 1 ReDim Preserve FileDate(1 To i) End If End If buf = Dir() Loop While buf <> "" ListBox1.List = FileDate End Sub
- ベストアンサー
- オフィス系ソフト
- エクセルVBAで困っています。
Excell2003でマクロを作成したのですが、思うような結果が出なくて困っています。 どなたかお力をお貸しください。 お願いします。 【作成したマクロ】 Sub テスト() myPath = ThisWorkbook.Path buf = Dir(myPath & "¥データ¥" & "*.xls") Do While buf <> "" Target = "'" & myPath & "[" & buf & "]Sheet1'!R1C1" i = i + 1 Cells(i, 1) = buf Cells(i, 2) = ExecuteExcel4Macro(Target) buf = Dir() Loop End Sub 【設定状況】 ・デスクトップ上に "サンプル.xls" があり、ThisWorkBookに上記マクロを書きました。 ・デスクトップ上に "データ" というフォルダがあり、その中に、"Book1.xls" と "Book2.xls" があります。 ・"Book1.xls" のSheet1のRange("A1")には "あいうえお" が入力されています。 ・"Book2.xls" のSheet1のRange("A1")には "かきくけこ" が入力されています。 【マクロ実行結果】 ・Range("A1") ・・・ Book1.xls ・Range("B1") ・・・ #REF! ・Range("A2") ・・・ Book2.xls ・Range("B2") ・・・ #REF! となってしまいます。 【求めたい結果】 ・Range("A1") ・・・ Book1.xls ・Range("B1") ・・・ あいうえお ・Range("A2") ・・・ Book2.xls ・Range("B2") ・・・ かきくけこ よろしくお願いします。
- ベストアンサー
- その他MS Office製品
- フォルダ内にあるファイル名を取得する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
- NEC LAVIE公式サイトによると、Windowsフォトギャラリー(2012)のサポートは2017年1月10日に終了しました。
- しかし、現在も使用している場合でも問題ありません。
- Windows8.1の環境での使用についても特に制限はありません。
補足
はい、フォルダ内のフォルダ名と、フォルダ内のフォルダの中にあるフォルダ名を取得したいです。