![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
同一フォルダ下にある2つのブック A.xlms と B.xlms の(共に)Sheet1 シートのD1セルに今日の日時をを入れるマクロを、或るサイトのサンプルを元に書いて見たのですが、以下のような記述では無限ループになってしまいます。
Dim Wb As Workbook
Dim Ws As Worksheet
Dim dirName As String
Dim fileName As String
Do Until fileName = ""
Set Wb = Application.Workbooks.Open(dirName & fileName)
Set Ws = Wb.Worksheets("Sheet1")
Ws.Range("D1").Cells.Value = Format(Now, "yyyy/mm/dd hh:mm")
Set Ws = Nothing
Wb.Save
Wb.Close
Set Wb = Nothing
fileName = Dir
Loop
これを動作させてみると、2つのブック処理最終段階の
fileName = Dir
の個所で fileName が "" にならず、A.xlms となってしまい、無限ループに陥ってしまっているようです。
Wb.Save をコメントアウトすれば一応は動作します。
その他、試行錯誤したのですが解決できません。
どなたか教えて頂ければ幸いです。
No.2ベストアンサー
- 回答日時:
ファイルシステムオブジェクトを使って、次のようなコードではだめですか?
Dim objFSO As Object
Dim objFolder as Folder
Dim objFile as File
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder("U:\World\国別")
For each objFile in objFolder.Files
if right(objfile.name,4) = "xlsm" then
(処理)
endif
Next
programmermas999macさん、サンプルを有り難うございました。
これを基に、(処理)の部分では fileName = Dir を削除して動作させたところ、正常に機能しました。
よろずやkinchanさんへのお礼でも書いた「Dir関数」の疑問が氷解したわけではありませんが助かりました。
また、機会があれば宜しくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) 2つ目のコンボボックスが動作しません。 3 2023/03/25 12:29
- Visual Basic(VBA) 【VBA】先月分の取得ができない理由が分かりません。 2 2022/04/24 11:16
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Excel(エクセル) エクセル 値をコピペした時に、条件付き書式で塗られた背景色もペーストさせる 2 2023/04/05 17:21
- Visual Basic(VBA) エクセル VBAについて教えてください 2 2023/04/26 13:25
- Visual Basic(VBA) エクセルVBA(実行時エラー438)の対処法を教えてもらえないでしょうか 3 2023/04/22 13:43
- Visual Basic(VBA) Excel vbaについての質問 3 2023/04/18 16:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
vba フィルター 複数条件 3つ以...
-
VBAでMODE関数をつくる
-
C#でbyte配列から画像を表示さ...
-
OutOfMemoryExceptionの回避策...
-
VB.NETの配列にExcelから読み込...
-
配列の中の最大値とそのインデ...
-
Segmentation Fault (メモリ制限?)
-
Dir関数で読み取り順を操作でき...
-
大量の変数を定義するにはどう...
-
構造体配列の特定のメンバーをF...
-
エクセルでXY座標に並べられた...
-
countif/sumifのようなVBA関数
-
VB6のメモリ解放に関して
-
(VBA) 配列の文字列を昇順で並...
-
配列のペースト出力結果の書式...
-
2次元配列のソート
-
VBScriptでCSVファイルを読み出...
-
コンボボックスのインデックス...
-
2次元配列でウォッチが出来ない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
vba フィルター 複数条件 3つ以...
-
C#でbyte配列から画像を表示さ...
-
エクセルでXY座標に並べられた...
-
Dir関数で読み取り順を操作でき...
-
Redim とEraseの違いは?
-
VB.NETの配列にExcelから読み込...
-
VB6のメモリ解放に関して
-
配列の中の最大値とそのインデ...
-
構造体配列内の文字列検索のよ...
-
構造体配列の特定のメンバーをF...
-
VBAでMODE関数をつくる
-
Excel2010のinputboxで複数デー...
-
COBOLの基本的な事なので...
-
Segmentation Fault (メモリ制限?)
-
定数配列の書き方
-
OutOfMemoryExceptionの回避策...
-
VBScriptでCSVファイルを読み出...
-
コンボボックスのインデックス...
-
エクセル(VBA)の空白配列の削除...
おすすめ情報
申し訳ありません。以下の記述が抜けていました。
dirName = "U:\World\国別\"
fileName = Dir(dirName & "*.xlsm")
又、上記フォルダ(国別)には先述の2つのブックだけが収納されていて、問題のマクロは他のフォルダの別のファイルから操作されています。