2016-06-26 10 views
0

Ich habe den folgenden Code, der es ermöglicht, eine bestimmte Auswahl in eine PDF-Datei zu drucken.Fragen Sie, wo die Datei gespeichert werden soll, bevor Sie eine Datei als .pdf speichern

Sub printIt() 

     Dim input_value As String 
     Dim file_name As String 
     Dim Time As Date 

     input_value = InputBox("Please state the name of the sheet") 
     Time = TimeValue("9:20:01") 
     MsgBox (Time) 
     file_name = "C:\Users\Marc\Desktop\" + input_value + ".pdf" 

     Worksheets("end_screen").PageSetup.PrintArea = "$B$2:$D$27" 
     ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ 
     file_name, Quality:=xlQualityStandard, _ 
     IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _ 
     True 

End Sub 

Das alles funktioniert gut. Da ich es aber auch auf einem anderen Computer implementieren möchte, möchte ich die Funktion fragen, wo die Datei gespeichert werden soll, bevor sie gespeichert wird.

Könnte mir jemand sagen, ob es möglich ist, Code unten zu ändern, so dass es einen Dateibildschirm knacken kann, so dass ich entscheide, wo ich die Datei speichern soll?

Antwort

0

Sie benötigen die GetSaveAsFilename Methode des Application Objekts. Es wird ein Dialogfeld "Speichern unter" angezeigt und eine Zeichenfolge zurückgegeben. Sie verwenden es wie folgt aus:

Option Explicit 

Sub Test() 

    Dim strOutFile As String 

    strOutFile = Application.GetSaveAsFilename(_ 
           InitialFileName:="export", _ 
           FileFilter:="PDF Files (*.pdf), *.pdf", _ 
           Title:="Save PDF as") 

    'strOutFile will be False if user hit Escape etc 
    If CBool(strOutFile) = False Then 
     ' user exits 
     Exit Sub 
    Else 
     ' do save 
     '... 
    End If 

End Sub 

In diesem Beispiel, wo der '... Kommentar ist - würden Sie Ihre Linie sind für ActiveSheet.ExportAsFixedFormat ...

0

Try this:

Sub printIt() 

    Dim input_value As String 
    Dim file_name As String 
    Dim Time As Date 

    input_value = InputBox("Please state the name of the sheet") 
    Time = TimeValue("9:20:01") 
    MsgBox (Time) 
    file_name = "C:\Users\Marc\Desktop\" + input_value + ".pdf" 

    myFile = Application.GetSaveAsFilename _ 
    (InitialFileName:=file_name, _ 
     FileFilter:="PDF Files (*.pdf), *.pdf", _ 
     Title:="Select Folder and FileName to save") 

    Worksheets("end_screen").PageSetup.PrintArea = "$B$2:$D$27" 
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ 
    myFile, Quality:=xlQualityStandard, _ 
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _ 
    True 

End Sub 

Added eine Zeile in Ihrem Code.

0

Bedenken Sie:

Sub printIt() 

     Dim input_value As String 
     Dim file_name As String 
     Dim Time As Date, fldr As String 

     input_value = InputBox("Please state the name of the sheet") 
     Time = TimeValue("9:20:01") 
     MsgBox (Time) 
     fldr = GetFolder() & "\" 
     file_name = fldr & input_value & ".pdf" 

     Worksheets("end_screen").PageSetup.PrintArea = "$B$2:$D$27" 
     ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ 
     file_name, Quality:=xlQualityStandard, _ 
     IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _ 
     True 

End Sub 

Function GetFolder() As String 
    Dim fldr As FileDialog 
    Dim sItem As String 
    Set fldr = Application.FileDialog(msoFileDialogFolderPicker) 
    With fldr 
     .Title = "Select a Folder" 
     .AllowMultiSelect = False 
     .InitialFileName = Application.DefaultFilePath 
     If .Show <> -1 Then GoTo NextCode 
     sItem = .SelectedItems(1) 
    End With 
NextCode: 
    GetFolder = sItem 
    Set fldr = Nothing 
End Function 
Verwandte Themen