Excel VBAで特定のワークシートをコピーして別名で保存する際、デスクトップ上のショートカットフォルダに直接保存しようとしてもうまくいかないことがあります。この記事では、ショートカットではなく実際のフォルダパスを使った保存方法を解説します。
ショートカットフォルダと実際のパスの違い
Windowsのショートカットは、実際のフォルダへのリンクにすぎません。VBAのSaveAsメソッドでは、ショートカットのパスではなく、実際のフォルダパスを指定する必要があります。
例えば、デスクトップの”資料”ショートカットは実際には”C:\Users\ユーザー名\Documents\資料”などのフォルダを指している場合があります。
正しいフォルダパスの取得方法
ショートカットのプロパティを右クリックして”リンク先”を確認するか、エクスプローラーで実際のフォルダを開き、アドレスバーのパスをコピーします。そのパスをVBAの変数fpathに設定します。
例: fpath = “C:\Users\ユーザー名\Documents\資料\”
VBAコードの修正例
以下のようにコードを修正すると、見積書税別シートをJ2セルの値をファイル名にして保存できます。
Sub test()
Dim fpath As String
Dim fname As String
fpath = "C:\\Users\\ユーザー名\\Documents\\資料\\" ' 実際のフォルダパス
With Worksheets("見積書税別")
fname = .Range("J2").Value & ".xlsx"
.Copy
End With
ActiveWorkbook.Close Savechanges:=True, Filename:=fpath & fname
End Sub
注意点
フォルダパスの最後には必ず”\”を入れること。また、ファイル名に使用できない文字(/ \ : * ? ” < > |)は含めないようにしてください。
この修正により、ショートカットではなく実際のフォルダにワークシートを保存できるようになります。
まとめ
Excel VBAでデスクトップのショートカットフォルダに保存する場合は、ショートカットではなく実際のフォルダパスを使用する必要があります。正しいパスを指定すれば、見積書税別シートをJ2セルの値をファイル名として保存可能です。フォルダパスの最後の”\”やファイル名の文字に注意しましょう。


コメント