ソフトウェア: Excel VBA が名前を付けて保存ダイアログ ボックスに既定のファイル名を入力しない

ソフトウェア: Excel VBA が名前を付けて保存ダイアログ ボックスに既定のファイル名を入力しない

マスター Excel ワークブック内の一部の VBA コードに問題があります。コードは 2 つあります。コード A は正常に動作します。コード B は正常に動作しません。

正常に動作する最初のコード (コード A) は、ディレクトリを作成し、その中に Excel ブックを保存します。ディレクトリとファイルの両方の名前はセル B4 から取得されます。

2 番目のコード (コード B) は、ディレクトリに移動して [名前を付けて保存] ダイアログ ボックスを開き、セル B4 の情報を使用して最初のファイル名ボックスを入力することになっています。ただし、最初のファイル名が自動入力されないこと以外はすべて機能します。以前は機能していました。マップされたドライブのすべてのマクロ参照を変更する直前は機能していました (ファイルをネットワークで使用できるように、マップされた文字ドライブから UNC パスウェイに変更しました。つまり、Z:\In Progress\ を \10.0.0.4\data\In Progress に変更しました)。

奇妙なことに、マップされたドライブから UNC パスウェイに変更した後、ネットワークへのアクセスに問題は発生していません。これは単なる小さな不具合のようです。

プロジェクトをコンパイルしてデバッグしました。

コード B の初期ファイル名を設定する方法についてアイデアをお持ちの方がいらっしゃいましたら、ぜひ教えてください。

コードA

    Option Explicit
Sub SaveAsNewJobtoIP()
'This macro creates a New Folder in the In Progress File, named off the BILLING CLIENT Name.
Dim Path As String
Dim InitialName As String
Dim sFileSaveName As Variant

    Path = "\\10.0.0.4\data\In Progress\"

        If Len(Dir("\\10.0.0.4\data\In Progress\" & ActiveSheet.Range("B4").Value, vbDirectory)) = 0 Then
        MkDir Path & ActiveSheet.Range("B4").Value
        End If

'This macro saves the workbook with a Dialog and an Initial Filename
    InitialName = ActiveSheet.Range("B4").Value & " " & ActiveSheet.Range("H2") & " " & ActiveSheet.Range("I2") & " " & ActiveSheet.Range("J2")
    sFileSaveName = Application.GetSaveAsFilename(InitialFileName:=Path & InitialName, FileFilter:="Excel Files (*.xlsm), *.xlsm")

    If sFileSaveName <> False Then
    ActiveWorkbook.SaveAs sFileSaveName
    End If
End Sub

コードB

    Option Explicit
Sub SaveAsNewQuoteinJCF()
'This macro saves the workbook with a Dialog and an Initial Filename
Dim Path As String
Dim InitialName As String
Dim sFileSaveName As Variant

    Path = "\\10.0.0.4\data\Job Cost Folder\Jill\"
    InitialName = "Estimate " & ActiveSheet.Range("B4").Value
    sFileSaveName = Application.GetSaveAsFilename(InitialFileName:=Path & InitialName, FileFilter:="Excel Files (*.xlsm), *.xlsm")

    If sFileSaveName <> False Then
    ActiveWorkbook.SaveAs sFileSaveName
    End If
End Sub

答え1

少し調べて、自分のローカル ネットワークの状況を把握しようとしましたが、コメントを参考にして、この問題を解決するために必要なことは次のとおりです。

UNCパスをコンピュータの実際の名前に置き換えます。

"\\10.0.0.4\" ---> "\\Server-pc\"

そして問題は解決しました。10.0.0.4 はサーバー コンピューターの名前だと思っていましたが、実際は単なるパスウェイでした。UNC パスウェイから実際のコンピューターの名前に変更すると、同僚の UNC パスウェイが実際には 10.0.0.3 だったためにマクロが実行時エラー (1004) を受け取るという別の問題も解決しました。

関連情報