2015-10-06 13 views
5

Mam makro vba, które wprowadza pewne zmiany do bieżącego dokumentu i określa nazwę pliku, który powinien zostać użyty - jeśli dokument nie jest zapisany jako nazwa pliku, ale użytkownik powinien poproszony o zrobienie tego (ale powinien być w stanie zmienić domyślne ustawienie).Słowo VBA - Zapisz jako okno dialogowe z początkową nazwą pliku

Znalazłem dwie możliwości, które nie są idealne (potrzebowałbym kombinacji tych dwóch).

Pierwsze podejście:

Application.Dialogs(wdDialogFileSaveAs).Show 

Otwiera Save As dialogowe i pozwala zmienić format i nazwę pliku, ale domyślna nazwa pliku jest stara nazwa pliku lub tytuł (do pierwszego znaku specjalnego jak pusty lub -) dokumentu (na wypadek, gdyby nie był jeszcze zapisany - zmiana tytułu dokumentu jest mało przydatna, ponieważ sugerowana nazwa pliku będzie zawierała -). Czy jest możliwa zmiana początkowej nazwy pliku wyświetlanej w oknie dialogowym Save As?

Drugie podejście:

Application.FileDialog(msoFileDialogSaveAs).InitialFileName = filename 
Dim choice As Integer 
choice = Application.FileDialog(msoFileDialogSaveAs).Show 
If choice <> 0 Then 
    filename = Application.FileDialog(msoFileDialogSaveAs).SelectedItems(1) 
    Call ActiveDocument.SaveAs(filename:=filename, FileFormat:=wdFormatDocumentDefault) 
End If 

FileDialog wybiorą tylko nazwę pliku, więc musimy go zapisać jawnie. To podejście pokaże filename Chcę, ale jeśli użytkownik zmieni sufiks np. Na .pdf, plik będzie nadal zapisany w formacie .docx (przy użyciu przyrostka .pdf). Nie planowałem tutaj rozróżnienia przypadków w rzadkich przypadkach, gdy użytkownik potrzebuje innego formatu niż .docx. Czy istnieje łatwy sposób na zapisanie pliku we właściwym formacie przy użyciu tego drugiego podejścia?

Odpowiedz

6

Czy próbowałeś zastępując line połączenia ActiveDocument.SaveAs z

Application.FileDialog(msoFileDialogSaveAs).Execute 
+0

jesteś cholernie dobrze, dziękuję – outofmind