Tôi gặp sự cố với một số mã VBA trong sổ làm việc Excel chính của mình. Tôi có hai đoạn mã. Mã A Hoạt động tốt. Mã B không hoạt động tốt.
Đoạn mã đầu tiên (Mã A), hoạt động tốt, tạo một thư mục và lưu Sổ làm việc Excel trong đó, với tên của cả thư mục và tệp được kéo từ một ô B4.
Đoạn mã thứ hai (Mã B) đi đến một thư mục và mở hộp thoại lưu dưới dạng và được cho là điền vào hộp tên tệp ban đầu với thông tin từ ô B4. Tuy nhiên, mọi thứ hoạt động ngoại trừ tên tệp ban đầu không tự động điền. Nó đã từng; nó đã hoạt động ngay trước khi tôi thay đổi tất cả các tham chiếu macro cho các ổ đĩa được ánh xạ (tôi đã thay đổi chúng từ các ổ đĩa được ánh xạ sang đường dẫn UNC để tệp có thể được sử dụng trên mạng, tức là Z: \ In Progress \ thành \ 10.0.0.4 \ data \ Đang tiến hành).
Điều kỳ lạ là, tôi không gặp vấn đề gì khi truy cập mạng sau khi thay đổi từ ổ đĩa được ánh xạ -> đường dẫn UNC. Nó chỉ xuất hiện là trục trặc nhỏ này.
Tôi đã biên soạn dự án và gỡ lỗi nó.
Nếu bất cứ ai có ý tưởng về cách điền tên tệp ban đầu cho Mã B, nó sẽ được đánh giá cao.
MÃ 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
MÃ 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
GetSaveAsFilename
có vấn đề với các dấu chấm như tên thư mục như @Ramhound đề xuất. Hãy thử thay đổi đường dẫn của bạn đến C:\folder.with.periods\Estimate
và bạn sẽ thấy hộp tên tệp cũng trống.
10.0.0.4
. Ngoại trừ mệnh đề if tôi không thấy bất kỳ sự khác biệt nào giữa hai khối mã.