電子書籍の厳選無料作品が豊富!

以下のコードをご覧ください。
ファイル名を変更します
a3セル(ファイルフルパスが記載)のファイル名をa7(ファイルの名前のみ)に変更します

コードは、動きます。ただ、2回実行すると

fso.GetFile(filePath).Name = newFileName

デバックとなります

質問したいことは、2回実行した時に
「既にファイル名は変更済み」とメッセージを出したいです

ご存じの方、宜しくお願いします

【コード】
Sub ファイル名変更()

Dim fso As Object
Dim filePath As String
Dim newFileName As String

'変更前のファイルのパスを指定

filePath = Range("a3")


'変更後のファイル名
newFileName = Range("a7") & ".pdf"


Set fso = CreateObject("Scripting.FileSystemObject")

'ファイル名を変更

fso.GetFile(filePath).Name = newFileName

'後片付け

Set fso = Nothing


End Sub

A 回答 (2件)

No1のかたのアドバイスに従い、修正してみました。


以下のようにしてください。

Sub ファイル名変更()

Dim fso As Object
Dim filePath As String
Dim newFileName As String

'変更前のファイルのパスを指定

filePath = Range("a3")


'変更後のファイル名
newFileName = Range("a7") & ".pdf"


Set fso = CreateObject("Scripting.FileSystemObject")
'ファイル存在チェック
If fso.FileExists(filePath) = False Then
MsgBox (filePath & "が存在しません。" & vbLf & "既にファイル名は変更済み" & vbLf & "もしくは、変更前のファイル名が誤っています")
Exit Sub
End If
'ファイル名を変更

fso.GetFile(filePath).Name = newFileName

'後片付け

Set fso = Nothing


End Sub
    • good
    • 0

こんばんは



>2回実行すると
> ~~~
>デバックとなります
エラーの原因がわかっていますか?
対象とするファイルが(すでに)存在しないので、GetFileメソッドが失敗するからです。

>2回実行した時に
>「既にファイル名は変更済み」とメッセージを出したいです
ファイルが存在するかどうかを、事前に確認すれば良いでしょう。
https://learn.microsoft.com/ja-jp/office/vba/lan …
存在しない時は、お好きなメッセージを出せば宜しいかと。
    • good
    • 0

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

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


おすすめ情報

このQ&Aを見た人がよく見るQ&A