![Software: Excel VBA füllt den Standarddateinamen im Dialogfeld „Speichern unter“ nicht aus](https://rvso.com/image/1543204/Software%3A%20Excel%20VBA%20f%C3%BCllt%20den%20Standarddateinamen%20im%20Dialogfeld%20%E2%80%9ESpeichern%20unter%E2%80%9C%20nicht%20aus.png)
Ich habe ein Problem mit VBA-Code in meiner Excel-Hauptarbeitsmappe. Ich habe zwei Codeteile. Code A funktioniert einwandfrei. Code B funktioniert nicht einwandfrei.
Der erste Codeteil (Code A), der einwandfrei funktioniert, erstellt ein Verzeichnis und speichert die Excel-Arbeitsmappe darin, wobei der Name sowohl des Verzeichnisses als auch der Datei aus Zelle B4 gezogen werden.
Der zweite Codeteil (Code B) geht in ein Verzeichnis und öffnet ein Dialogfeld „Speichern unter“ und soll das ursprüngliche Dateinamenfeld mit Informationen aus Zelle B4 füllen. Allerdings funktioniert alles, außer dass der ursprüngliche Dateiname nicht automatisch ausgefüllt wird. Das hat früher funktioniert; es hat funktioniert, kurz bevor ich alle Makroverweise für die zugeordneten Laufwerke geändert habe (ich habe sie von den zugeordneten Laufwerksbuchstaben auf den UNC-Pfad geändert, damit die Datei im Netzwerk verwendet werden kann, also Z:\In Progress\ in \10.0.0.4\data\In Progress).
Das Seltsame ist, dass ich keine Probleme beim Zugriff auf das Netzwerk habe, nachdem ich von zugeordnetem Laufwerk zu UNC-Pfaden gewechselt habe. Es scheint nur dieser kleine Fehler zu sein.
Ich habe das Projekt kompiliert und debuggt.
Wenn jemand eine Idee hat, wie der anfängliche Dateiname für Code B gefüllt werden kann, wäre er sehr dankbar.
Code 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
CODE 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
Antwort1
Es erforderte einige Recherchearbeiten und den Versuch, die Landschaft meines lokalen Netzwerks zu verstehen, aber mithilfe der Kommentare kam ich zu dem Schluss, dass ich zur Behebung des Problems lediglich Folgendes tun musste:
Ersetzen Sie den UNC-Pfad durch den tatsächlichen Namen des Computers. Also habe ich geändert
"\\10.0.0.4\" ---> "\\Server-pc\"
und das Problem war gelöst. Ich dachte, 10.0.0.4 sei der Name des Servercomputers, aber es war eigentlich nur ein Pfad. Durch die Änderung vom UNC-Pfad zum tatsächlichen Computernamen wurde auch ein weiteres Problem gelöst, bei dem Makros Laufzeitfehler (1004) erhielten, weil der UNC-Pfad meines Kollegen eigentlich 10.0.0.3 war.