重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

Sub sample095( )
 MKDir ″C:¥Sample¥ex & Month(Date) &″月″
End Sub
というプログラムで、最後に¥はつかないので注意してください。とはここではどういう事でしょうか?教えて頂けると幸いです。

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

  • 私の最初に提示したプログラムは、合っているのでしょうか?

    No.1の回答に寄せられた補足コメントです。 補足日時:2024/11/27 21:22

A 回答 (1件)

この場合、「最後に¥はつかないので注意してください」という注意書きは、フォルダ名の末尾に「\」(円記号)を追加しないようにするという意味です。



理由

1. MKDir ステートメントの仕様

MKDir ステートメントは、指定されたパスに基づいてフォルダを作成します。ただし、末尾に「\」を付けると、システムがパス全体を無効とみなしてエラーを発生させることがあります。

例えば:

• 有効なパス: C:\Sample\ex5月
• 無効になる可能性のあるパス: C:\Sample\ex5月\

2. プログラムの内容と動作

プログラムの内容を見ると、以下のような構造になっています:

Sub sample095()
MKDir "C:\Sample\ex" & Month(Date) & "月"
End Sub

このコードでは、現在の月(Month(Date))を使って動的にフォルダ名を生成しています。例えば、11月の場合、フォルダ名は次のようになります:

C:\Sample\ex11月

ここで、末尾に「\」が付いてしまうと以下のようになります:

C:\Sample\ex11月\

このような末尾の「\」は、MKDir にとって不正なパスと見なされ、実行時エラーが発生します。

3. 注意点が必要な理由

VBAでは、ファイルやフォルダを扱う際に「\」を意図せずに末尾に付けてしまうミスが起こりやすいため、このような注意書きが記載されています。MKDir ステートメントでは、末尾に「\」が不要であることを覚えておけば、エラーを防げます。

補足: もしパスの末尾が不安なら

末尾に余分な「\」がついていないか確認したい場合は、VBAの文字列処理関数を利用して安全にパスを操作できます。

例: 末尾に「\」を付けないように処理

Sub sample095()
Dim folderPath As String
folderPath = "C:\Sample\ex" & Month(Date) & "月"

' 最後の文字が "\" でないことを確認
If Right(folderPath, 1) = "\" Then
folderPath = Left(folderPath, Len(folderPath) - 1)
End If

MKDir folderPath
End Sub

結論

「最後に¥はつかないので注意してください」というのは、MKDir でフォルダを作成する際に、末尾の「\」があるとエラーになるため、それを防ぐための注意書きです。この問題を避けるためには、末尾に「\」を付けないよう意識してコードを書く必要があります。

上記は生成AIの解答です。
参考になれば幸いです。
この回答への補足あり
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています