마스터 Excel 통합 문서의 일부 VBA 코드에 문제가 있습니다. 두 개의 코드가 있습니다. 코드 A는 잘 작동합니다. 코드 B가 제대로 작동하지 않습니다.
제대로 작동하는 첫 번째 코드(코드 A)는 디렉터리를 만들고 그 안에 Excel 통합 문서를 저장합니다. 디렉터리 이름과 파일 이름은 셀 B4에서 가져옵니다.
두 번째 코드 부분(코드 B)은 디렉터리로 이동하여 다른 이름으로 저장 대화 상자를 열고 초기 파일 이름 상자를 셀 B4의 정보로 채워야 합니다. 그러나 초기 파일 이름이 자동 완성되지 않는다는 점을 제외하면 모든 것이 작동합니다. 예전에는 그랬습니다. 매핑된 드라이브에 대한 모든 매크로 참조를 변경하기 직전에 작동하고 있었습니다. (파일을 네트워크에서 사용할 수 있도록 매핑된 문자 드라이브에서 UNC 경로로 변경했습니다. 즉, Z:\In Progress\에서 \10.0.0.4로 변경했습니다. \데이터\진행 중).
이상한 점은 매핑된 드라이브 -> 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)를 수신하는 또 다른 문제도 해결되었습니다.