[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『dirの入れ子のエラー解消について』(vo)
宜しくお願いします。
フォルダ存在の有無 同名ファイル存在の有無 ファイル保存 次のファイルへ
という様な動きを作りたいです。
ファイル = Dir()でエラーが出てしまい、調べると記事は沢山あるのですが、 どの記事を見ても今一つ理解が出来ないので、以下のコードの修正部分をご教示頂ければと思います。
Sub test()
Dim ファイル, SaveDir, fp, namae ファイル = Dir("C:\Users\vo\Desktop\" & "*.xlsx")
Do While ファイル <> ""
Workbooks.Open "C:\Users\vo\Desktop\" & ファイル namae = ActiveWorkbook.name
SaveDir = "C:\Users\vo\Desktop\集計" If Dir("C:\Users\vo\Desktop\" & "集計", vbDirectory) = "" Then MkDir SaveDir End If
If Dir("C:\Users\vo\Desktop\集計\" & namae) = "" Then ActiveWorkbook.SaveAs "C:\Users\vo\Desktop\集計\" & namae ActiveWorkbook.Close Else ActiveWorkbook.Close End If
ファイル = Dir() Loop
End Sub
< 使用 Excel:unknown、使用 OS:unknown >
If Dir("C:\Users\vo\Desktop\集計\" & namae) = "" Then ↓ If namae = "" Then と If Dir("C:\Users\vo\Desktop\" & "集計", vbDirectory) = "" Then MkDir SaveDir End If をコメントアウトで
最初のDirでフォルダもファイルも無ければループしませんので
不必要かと
二回目以降はパラメータ指定だと""が返っています。
呼び出し元ファイルでなければとの条件は記述された方が良いかと。
外してましたら。すみません。
(隠居じーさん) 2018/02/06(火) 22:40
フォルダの有無は、最初に1回でよいのでは?
(マナ) 2018/02/06(火) 22:55
ファイルを開く必要があるのですか?
(マナ) 2018/02/06(火) 22:59
(マナ) 2018/02/06(火) 23:04
私なりのコーディングで、整形した例なぞ。(すいませんが、小技を使って横着してます)
Sub test() Dim SaveDir As String Dim LoadDir As String Dim cFiles As Variant Dim i As Long
LoadDir = CreateObject("WScript.Shell").SpecialFolders("Desktop") SaveDir = LoadDir & "\集計" If Dir(SaveDir, vbDirectory) = "" Then MkDir SaveDir End If
cFiles = Split(CreateObject("WScript.Shell").Exec("CMD /C DIR /A:-D/B """ & LoadDir & "\*.xlsx""").StdOut().ReadAll(), vbNewLine) For i = 0 To UBound(cFiles) - 1 If Dir(SaveDir & "\" & cFiles(i)) = "" Then With Workbooks.Open(LoadDir & "\" & cFiles(i)) .SaveAs SaveDir & "\" & cFiles(i) .Close False End With End If Next i End Sub
ファイルオープンしてから存在確認するのは、存在していたらクローズするだけであり開くだけ無駄なので、無いときだけ出力に変えました。 それにしても、オープンしてからセーブするだけなら、FileCopy文で良さそうに見えるのですが、何故いちいち保存するのでしょうね?
(???) 2018/02/07(水) 09:26
マクロ使おうとすると、
余分にエクセルを開かないといけないような気が。。。。
Ctrlキーを押しながらマウスでデスクトップ上で選択して、
フォルダーにドラッグするだけのような気がします。。。。
(まっつわん) 2018/02/07(水) 09:38
(隠居じーさん) 2018/02/07(水) 11:58
皆様ありがとうございます。
ファイルを開くのは不要では?という疑問で少し混乱させてしまいごめんなさい。 本来は開けて特定の列のみコピーし新しくその特定の項目で集めたファイルを作成する というようなことをしたかったのですが、ここでは何故dirが使えないのかというところを 突き止めたかったので説明とコードを省略させて頂いたのです。
隠居じーさん様 いつもありがとうございます。 確かに何度隠居じーさん様の説明を読んでも理解ができず、 もしかしたら誤認識されてるのかなと思ってました。 お気遣い嬉しいです!今後もお願いします。
マナ様 ありがとうございます! 仰る通りフォルダ有無は一回で良かったです。 言われて気付きました(^^; おかげで修正できました。
???様 ありがとうございます! dirの説明とても勉強になりました。覚えておきます。 また、頂いたコードで思った通り動きました。 助かりました!
まっつわん様 ありがとうございます! 仰る通りです(^^; 私の省略した説明のせいですみませんでした。
(vo) 2018/02/10(土) 00:45
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.