2.1k Aufrufe
Gefragt in Textverarbeitung von Einsteiger_in (99 Punkte)
Hallo zusammen,

ich weiß das Thema wurde schon mehrmals ausfühlich beschrieben aber irgendwie komm ich nicht weiter.

Ich habe in einem Tabellenblatt 2 Markos und möchte diese gerne über einen Button starten lassen. D.h. erst das erste Makro und dann das zweite.

Einen Button über Formularsteuerelement einfügen und ein Makro auf den Button legen bekomm ich noch hin aber das zweite Makro will nicht dazu.

Wie stell ich das an?

PS: Ich habe Excel 2010

Vielen Dank

Gruß Chris

8 Antworten

0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
Hallo,

2 Fragen:

1. warum integrierst du nicht das zweite Makro ins Erste?
2. du kannst das Zweite Makro aus sem ersten auch starten.

Da uns deine Makros nicht bekannt sind, ist aus meiner Sicht mehr hilfe nicht möglich.

Gruß

Helmut
0 Punkte
Beantwortet von Einsteiger_in (99 Punkte)
Ok hier meine 2 Makros:

Wie kann ich die 2 den verknüpfen?


Sub Sortieren()
'
' Sortieren Makro
'

ActiveWorkbook.Worksheets("Anmeldung ").AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Anmeldung ").AutoFilter.Sort.SortFields.Add Key _
:=Range("A29:A39"), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortTextAsNumbers
With ActiveWorkbook.Worksheets("Anmeldung ").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub


Sub PDF_erzeugen_und_versenden()

'Variable für Outlook'

Dim olApp As Object
Dim sPath As String

Rem PDF-Datei auf dem Desktop mit Namen des Tabellenblattes speichern
sPath = Environ("Userprofile") & "\Desktop\" & ActiveSheet.Name & ".pdf"

Rem Pdf erzeugen
Worksheets("Anmeldung ").ExportAsFixedFormat Type:=xlTypePDF, Filename:=sPath, _
Quality:=xlQualityStandard, IncludeDocProperties:=False, _
IgnorePrintAreas:=True, OpenAfterPublish:=False


Set olApp = CreateObject("Outlook.Application")

With olApp.CreateItem(0)
.to = "" ' Empfänger
.cc = "" 'Kopie an
.Subject = "L"
.Attachments.Add sPath
.DeleteAfterSubmit = True 'Nach dem Senden direkt wieder löschen (nicht aufheben)
.Display 'Anzeige im Outlook
End With

End Sub

Option Explicit[code]
0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
Hallo,

so müsste es passen, den kursiven Teil da einbauen

[code]Sub PDF_erzeugen_und_versenden()

ActiveWorkbook.Worksheets("Anmeldung ").AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Anmeldung ").AutoFilter.Sort.SortFields.Add Key _
:=Range("A29:A39"), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortTextAsNumbers
With ActiveWorkbook.Worksheets("Anmeldung ").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

'Variable für Outlook'

Dim olApp As Object
Dim sPath As String

Rem PDF-Datei auf dem Desktop mit Namen des Tabellenblattes speichern
sPath = Environ("Userprofile") & "\Desktop\" & ActiveSheet.Name & ".pdf"

Rem Pdf erzeugen
Worksheets("Anmeldung ").ExportAsFixedFormat Type:=xlTypePDF, Filename:=sPath, _
Quality:=xlQualityStandard, IncludeDocProperties:=False, _
IgnorePrintAreas:=True, OpenAfterPublish:=False


Set olApp = CreateObject("Outlook.Application")

With olApp.CreateItem(0)
.to = "" ' Empfänger
.cc = "" 'Kopie an
.Subject = "L"
.Attachments.Add sPath
.DeleteAfterSubmit = True 'Nach dem Senden direkt wieder löschen (nicht aufheben)
.Display 'Anzeige im Outlook
End With

End Sub

Option Explicit [/code]

oder so

[code]Sub PDF_erzeugen_und_versenden()

Sortieren()

'Variable für Outlook'

Dim olApp As Object
Dim sPath As String

Rem PDF-Datei auf dem Desktop mit Namen des Tabellenblattes speichern
sPath = Environ("Userprofile") & "\Desktop\" & ActiveSheet.Name & ".pdf"

Rem Pdf erzeugen
Worksheets("Anmeldung ").ExportAsFixedFormat Type:=xlTypePDF, Filename:=sPath, _
Quality:=xlQualityStandard, IncludeDocProperties:=False, _
IgnorePrintAreas:=True, OpenAfterPublish:=False


Set olApp = CreateObject("Outlook.Application")

With olApp.CreateItem(0)
.to = "" ' Empfänger
.cc = "" 'Kopie an
.Subject = "L"
.Attachments.Add sPath
.DeleteAfterSubmit = True 'Nach dem Senden direkt wieder löschen (nicht aufheben)
.Display 'Anzeige im Outlook
End With

End Sub

Option Explicit [/code]


Gruß

Helmut
0 Punkte
Beantwortet von Einsteiger_in (99 Punkte)
Hallo Helmut,

danke für die schnelle Hilfe, wenn ich jedoch deinen oberen Code bis Option Explicit kopiere und einfüge kommt die Meldung: Fehler beim kompilieren: Nach End Sub, End Function oder Property können nu Kommentare stehen.

Wenn ich aber Option Explicit rauslösche geht es garnicht mehr.

Was mach ich falsch?

Und nehm ich die 2 Option von dir, kommt die Meldung syntaxfehler und sortieren() ist gelb unterlegt
0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
Hallo,

Fehler beim kompilieren: Nach End Sub, End Function oder Property können nu Kommentare stehen


der Text deutet auf ein End Sub mitten im Text hin.

Gruß

Helmut
0 Punkte
Beantwortet von Einsteiger_in (99 Punkte)
Ich habe in deinem Code aber kein End Sub mitten im Code gefunden.

Und wo liegt der Fehler bei der 2 Option von dir?

Sorry dass ich hier laufend so doof nachfrage aber VBA ist nicht meine Stärke :D

Gruß Chris
0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
hallo,

da ich keine richtige Möglichkeit zum testen des Makros habe, ist eine Fehlerfindung schwierig.

Gruß

Helmut
0 Punkte
Beantwortet von Einsteiger_in (99 Punkte)
Hallo,

nach mehrmaligem hin und her Probieren hab ich es zum laufen gebracht.

Vielen Dank

Gruß
Chris
...