マスター 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) を受け取るという別の問題も解決しました。