2017-12-20 1 views
-1

Hallo Ich habe eine Schaltfläche, um meine Tabelle in PDF zu exportieren.Visual Basic (Excel) Führen Sie 2 Makros über 1 Schaltfläche aus?

Ich möchte diese Schaltfläche haben exportieren Sie das Dokument und speichern Sie es in einem Ordner namens "Excel-Rechner". Derzeit kann ich nur einen Ordner erstellen oder das Dokument exportieren. Ich bin mir nicht sicher, wie man beide Befehle gleichzeitig ausführt, also exportiert das Dokument und wird in dem Excel-Rechner-Ordner gespeichert.

Auch, wie kann ich den Dateipfad ändern, anstatt in D: \ wie ich angegeben habe, findet es die Benutzer "My Documents" Ordner.

Sub GetFilenameForPDF() 
Dim strFileName As String, strB1 As String, strWorksheet As String 


strB1 = Range("B1").Value 
strWorksheet = ActiveSheet.Name 
strFileName = strB1 & " " & strWorksheet & " " & Format(Date, "DD-MM-YYYY") 


End Sub 

Sub NewFolder() 

Dim fso As FileSystemObject 
Dim folderName As String 

Set fso = New FileSystemObject 
folderName = "D:\Excel Calculator" 
If fso.FolderExists(folderName) = False Then 
    fso.CreateFolder folderName 
End If 

Dim strFileName As String, strB1 As String, strWorksheet As String 
strB1 = Range("B1").Value 
strWorksheet = ActiveSheet.Name 
strFileName = folderName + "\" + strB1 & " " & strWorksheet & " " & 
Format(Date, "DD-MM-YYYY") 

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ 
    "D:\" & strFileName & ".pdf", _ 
    Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _ 
:=False, OpenAfterPublish:=True 
End Sub 

Sub SaveToPDF() 

Dim strFileName As String, strB1 As String, strWorksheet As String 
strB1 = Range("B1").Value 
strWorksheet = ActiveSheet.Name 
strFileName = strB1 & " " & strWorksheet & " " & Format(Date, "DD-MM-YYYY") 

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ 
    "D:\" & strFileName & ".pdf", _ 
    Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _ 
    :=False, OpenAfterPublish:=True 
    End Sub 

Antwort

0

Sie können mehrere Makros nacheinander aufrufen. Zum Beispiel, wenn Sie Ihre Taste, um das Makro fullSequence verknüpfen, dann können Sie zunächst die Erstellung des Ordners und dann den Export der Datei in diesen Ordner ausführen:

Sub fullSequence() 
    createFolder '<-- call macro 1 
    exportFile '<-- call macro 2 
End Sub 

In Ihrem speziellen Fall, Sie brauchen nur zu ändern diese den Code des Makros NewFolder aus:

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ 
    "D:\" & strFileName & ".pdf", _ 
    Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _ 
:=False, OpenAfterPublish:=True 

... dazu:

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ 
    folderName & "\" & strFileName & ".pdf", _ 
    Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _ 
:=False, OpenAfterPublish:=True 

... umaufzunehmen 10 (wo Sie bereits Ihren Ordnerpfad haben) in den Export Filename Parameter.

+0

Hallo, Vielen Dank für Ihre Antwort ich hinzugefügt, um die 'volle sequence' Unter und änderte den Namen der' SaveToPDF() 'und' NewFolder' subs die Makros entsprechen jedoch in 'voll sequence' genannt wird, jetzt, wenn ich das Makro mit der Schaltfläche verknüpfen, erhalte ich den Fehler: "Systemfehler & H8007007B (-2147024773)" – sam

Verwandte Themen