Excel VBAでショートカットフォルダにワークシートを保存する方法

Visual Basic

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セルの値をファイル名として保存可能です。フォルダパスの最後の”\”やファイル名の文字に注意しましょう。

コメント

タイトルとURLをコピーしました