Phần mềm: Excel VBA Không điền tên tệp mặc định trong hộp thoại SaveAs


-1

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

1
"Z: \ Đang tiến hành \ đến \ 10.0.0.4 \ data \ Đang tiến hành)." - Thư mục không thể có thời gian trong đó. Tôi đoán đầu tiên là thư mục của bạn trong trường hợp này không hợp lệ. Bạn có thể sử dụng tên của chia sẻ (ví dụ: \ MyDrobo \) nơi MyDrobo sẽ giải quyết 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ã.
Ramhound

"Thư mục không thể có thời gian trong đó." Phải có nhiều hơn nó cấm tuyệt đối. Điều này làm tôi tò mò vì vậy tôi đã nhảy đến một dấu nhắc của CMD, nói với Win7 cho MD This.Is.My.Directory Không có thông báo lỗi nào xảy ra, nhưng DIR hiển thị thư mục mới, cũng như WinExplorer khi tôi BẮT ĐẦU. Một số tính năng của UI UI một cách ám ảnh (một cách ngu ngốc) quan sát tùy chọn FileExplorer để ẩn các phần mở rộng tệp. Tôi nghi ngờ sẽ sớm gặp rắc rối nếu bạn có tên thư mục bao gồm các khoảng thời gian nếu tùy chọn này được bật. Những suy nghĩ khác?
Steve Rindsberg

Dường như GetSaveAsFilenamecó 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\Estimatevà bạn sẽ thấy hộp tên tệp cũng trống.
davidmneedham

@SteveRindsberg Thực hiện tất cả trong File Explorer, dấu nhắc lệnh, không bao giờ có giới hạn 255 ký tự (theo hiểu biết của tôi)
Ramhound

@Ramhound Gặp khó khăn khi phân tích cú pháp cuối cùng.
Steve Rindsberg

Câu trả lời:


0

Phải mất một chút nghiên cứu và cố gắng tìm ra cảnh quan mạng địa phương của tôi, nhưng tôi đã tìm ra với sự giúp đỡ của các ý kiến ​​rằng tất cả những gì tôi phải làm để khắc phục vấn đề là:

Thay thế Đường dẫn UNC bằng Tên thực tế của Máy tính. Vì vậy, tôi đã thay đổi

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

và vấn đề đã được giải quyết. Tôi nghĩ 10.0.0.4 là tên máy tính của Máy chủ, nhưng thực ra nó chỉ là một con đường. Việc thay đổi từ Đường dẫn UNC sang tên máy tính thực tế cũng giải quyết một vấn đề khác trong đó các macro đang gặp lỗi thời gian chạy (1004) vì Đường dẫn UNC của đồng nghiệp tôi thực sự là 10.0.0.3.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.