プロが教えるわが家の防犯対策術!

vbaでサーバー上に年月の名称のフォルダーがなかったら、作成しその中にエクセルのファイルを保存するものを作成したかったのですが

Sub test()
Dim A,B,C As String
A = Thisworkbook.Path & Format(Now(),”yyyy/mm”)
If (C, vbDirectory) = “” Then
MkDir A
End If

If CDate("6:30") < Time And Time < CDate("16:30") Then
B = Format(Now(), "yyyymmdd") & “_1.xlsm”
Else
B = Format(Now(), "yyyymmdd") & “_2.xlsm”
End If
C = ThisWorkbook.Path & "\" & A & “\” & B
ThisWorkbook.SaveAs FileName:=C

ActiveWorkbook.PrintOut

End Sub

これで実行すると、MkDir Aのところでパスが見つかりませんとなります

ThisWorkbook.Pathのところを”¥¥サーバー名¥フォルダー¥フォルダー¥フォルダー¥”に変えて実行しても結果は同じでした。
サーバー上のフォルダーを操作する場合、この方法ではだめなのでしょうか?
初歩的な質問かと思いますが、どうかよろしくお願いします

質問者からの補足コメント

  • ”¥¥サーバー名¥フォルダー¥フォルダー¥フォルダー¥”
       ↑
    これは、フォルダーを作成したい階層にあるファイルのプロパティからパスをコピーしたものです

      補足日時:2021/12/14 08:37

A 回答 (3件)

ファイル名やフォルダ名に / が使えないからではないかと。


https://www.itc.u-toyama.ac.jp/el/win7/restricte …

Format(Now(),”yyyy/mm”) を
Format(Now(),”yyyy_mm”) にしてみたらどうでしょう。
    • good
    • 0
この回答へのお礼

フォルダーの名前を変えたらうまくいきました!!
ありがとうございました!

お礼日時:2021/12/14 20:58

おはようございます。



下記で、どうでしょうかね?

A = Thisworkbook.Path & Format(Now(),”yyyy/mm”)
If (C, vbDirectory) = “” Then

A = Thisworkbook.Path & "\" & Format(Now(),”yyyy/mm”)
If Dir(A, vbDirectory) = “” Then の間違えでしょうか?


直接関係ありませんが、Dim A,B,C As String は、
Dim A As String,B As String,C As String と書かないと、
AとBはVariant型になるかと。
    • good
    • 0
この回答へのお礼

助かりました

ありがとうございました

お礼日時:2021/12/14 20:59

If (C, vbDirectory) = “” Then


この時点で、Cには、何も入っていません。
Aなのかな?
    • good
    • 0

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