限定しりとり

VBAでデスクトップに新しいフォルダを作成しようとしています。
今コードは
MkDir CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\あいうえお"
としています。
その際、既に同じ名前のフォルダがある場合には、一旦削除(もしくは上書き)して新たに作成をしたいのですがコードが分かりません。
教えて頂けないでしょうか。
宜しくお願い致します。

A 回答 (2件)

#1返信について


返信記載のコードを貼り付け
Sub Test()
Dim fso As Object
Dim FolPath As String
FolPath = CreateObject("WScript.Shell").SpecialFolders("desktop") & "\" & "\あいうえお"
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FolderExists(FolPath) Then
fso.DeleteFolder FolPath '← この行が黄色のハイライトになりました。
fso.CreateFolder (FolPath)
Else
fso.CreateFolder FolPath
End If
End Sub
検証しましたが、エラーは、フォルダが存在しない1度目実行、フォルダが存在する状態2度目実行共にデバッグは発生しませんでした。
再現できないので何とも言えませんが、上記のようなコンパクトなプロシージャで再度ご確認いただけますでしょうか。(コピペでVBEの標準モジュールで)
また、エラーの内容などお知らせください。
失礼、ここまで書いて、気づきました \あいうえお をご質問コピペでコードに入れたので、¥が二つつながってしまっていますね。
私のローカルだと初めにないので、エラーにならないと理解しました。 該当箇所の ¥ どちらかを削除してみてください。

また、そこでエラーになってしまうと下記の提案は意味が無いかもしれませんが、
>一旦削除(もしくは上書き)してが気になり
既存フォルダをリネームして新たに作るやり方も下記に示します。
これは、繰り返しのリネーム時にエラーが出るかもしれません。
(日付を加えていますが、秒単位を名前にすれば回避できます)

Sub Sample()
Dim fso As Object
Dim FolPath As String, tmp
Dim tmpPath As String
Set fso = CreateObject("Scripting.FileSystemObject")
FolPath = CreateObject("WScript.Shell").SpecialFolders("desktop") & "\" & "\あいうえお"
If fso.FolderExists(FolPath) Then
Set tmp = fso.GetFolder(FolPath)
tmpPath = tmp.Path
tmp.Name = tmp.Name & Format(Date, "yyyymmdd")
Set tmp = Nothing
fso.CreateFolder (FolPath)
Else
fso.CreateFolder (FolPath)
End If
Set fso = Nothing
End Sub
    • good
    • 0
この回答へのお礼

Qcha1962 様

有難うございました!
¥を1つ削除すると上手くいきました。

お礼日時:2020/06/04 14:22

こんにちは、


サンプルとして
Dirを使用したものではなく、Scripting.FileSystemObject (FSO)を使用したものを書きます。
同様のプロセスの場合、私的にFSOを使う事が多いのであしからず。

Dim fso As Object
Dim FolPath As String
 FolPath = CreateObject("WScript.Shell").SpecialFolders("desktop") & "\" & "\あいうえお"
 Set fso = CreateObject("Scripting.FileSystemObject")
 If fso.FolderExists(FolPath) Then
  fso.DeleteFolder FolPath
  fso.CreateFolder (FolPath)
 Else
  fso.CreateFolder (FolPath)
 End If
これは、
フォルダの存在を取得しあれば、削除して、新たに作成します。
無ければ、そのまま作成します。
基本的にDirで行う場合も同様な流れになるかと思います。
    • good
    • 0
この回答へのお礼

Qchan1962 様

早々にご教授頂い有難うございました。

早速試しましたが、
Dim fso As Object
Dim FolPath As String
FolPath = CreateObject("WScript.Shell").SpecialFolders("desktop") & "\" & "\あいうえお"
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FolderExists(FolPath) Then
fso.DeleteFolder FolPath ← この行が黄色のハイライトになりました。
fso.CreateFolder (FolPath)
Else
fso.CreateFolder (FolPath)
End If

一部の行でエラーが発生しました。
どの様に対処すれば宜しいのでしょうか?
どうぞ宜しくお願い致します。

お礼日時:2020/06/04 13:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!