エクセルVBAからフォルダを作る際に同じ名前のフォルダが作成先のディレクトリに存在する場合、mkdirだと”パスが無効です”とエラーになります。作成先に同じ名前のフォルダがあるかどうか調べる方法と同じ名前のフォルダがあった場合に上書きする方法を教えてください。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:nemuneko No.1

回答回数9ベストアンサー獲得回数0

ポイント50pt

’ディレクトリがあるかどうかを調べて

If Dir$(”c:¥temp”, vbDirectory) = ”” Then

’ない場合は、作成する。

MkDir ”c:¥temp”

End If

同じ名前のフォルダがあった場合に上書きする方法は調査中です。(ポイント半分でいいです)

できたら上書きする理由を教えてください。

id:hidebroken

ありがとうございます。ちょっとやってみます

上書きする理由は、一つフォルダを作った中にシート名を名前にしたフォルダを作り、その中にセルの内容が名前になったフォルダを作るからです。シートを増やした場合や削除した際に、フォルダの中身も更新したいと考えるからなんです。これだとわかりにくいでしょうか。

2004/08/08 16:17:06
id:nemuneko No.2

回答回数9ベストアンサー獲得回数0

ポイント50pt

http://www.hatena.ne.jp/1091947376#

エクセルVBAからフォルダを作る際に同じ名前のフォルダが作成先のディレクトリに存在する場合、mkdirだと”パスが無効です”とエラーになります。作成先に同じ名前のフ.. - 人力検索はてな

今度は上書きするほうですが、

上書きコピー

(サブディレクトリ含む)

Call Shell(”cmd.exe /c xcopy c:¥元 c:¥先 /s /y”, vbHide)

※蛇足※ オプション”/s /y”の使用方法については、コマンドプロンプトで ”XCOPY /?”と打ってみてください。

現にあるディレクトリを削除して再度作成する方法

’ディレクトリがあった場合

If Dir$(”c:¥temp”, vbDirectory) <> ”” Then

’サブディレクトリまで削除する。

Call Shell(”cmd.exe /c RmDir c:¥temp /S /Q”, vbHide)

MkDir ”c:¥temp”

End If

id:hidebroken

ありがとうございます!!できました!!

蛇足がむしろありがたいです。Shellとかその辺がよくわかりませんが(VBAではない部分なんでしょうか)、ちょっと調べてみます。とにかくありがとうございました。

2004/08/08 16:50:07

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません