AW: Userform Combobox und TextBox
11.10.2013 14:16:46
fcs
Hallo Andreas,
lege in deiner Datei ein weiteres Tabellenblatt an mit Name z.B.: PDF. In diesem Blatt trägst du alle unveränderlichen Texte ein und formatierst es nach deinen Wünschen/Anforderungen.
In eine Kopie dieses Blattes werden dann immer die Daten aus den Steuerelementen des Userforms bzw. den Quelltabellenblättern übertragen, bevor die PDF-Datei erzeugt wird.
Im Userform legst du einen Commandbutton an und änderst den Namen in: cmbPDF_Erstellen
Nachfolgend ist beispielhaft Code dargestellt, wie man die per Comboboxen ausgewählten Daten sowie Daten aus anderen Steuerelemente in das Ausgabeblatt eintragen kann.
Gruß
Franz
Private Sub cmbPDF_Erstellen_Click()
Dim wksPDF As Worksheet, wkbPDF As Workbook
Dim lngZeile As Long
Dim varAttachment As Variant
Set wksPDF = Worksheets("PDF")
'Eingabedaten prüfen
If Me.ComboBox1.ListIndex = -1 Then
MsgBox "Keine Bezeichnung in Combobox gewählt"
Exit Sub
ElseIf Me.ComboBox2.ListIndex = -1 Then
MsgBox "Kein Zuständiger in Combobox gewählt"
Exit Sub
ElseIf Me.ComboBox3.ListIndex = -1 Then
MsgBox "Kein Name zu Adresse in Combobox gewählt"
Exit Sub
End If
'Daten eintragen aus Userform
Me.Hide
'Kopie des PDF-Vorlageblatts in neuer Arbeitsmappe erstellen
ActiveWorkbook.Worksheets("PDF").Copy
Set wkbPDF = ActiveWorkbook
Set wksPDF = wkbPDF.Worksheets(1)
With Me.ComboBox1 'Kosten
lngZeile = .List(.ListIndex, 2)
End With
With wksKosten
wksPDF.Range("C3").Value = .Cells(lngZeile, 1).Text 'Bezeichnung
wksPDF.Range("C4").Value = .Cells(lngZeile, 2).Text 'Nummer
wksPDF.Range("C5").Value = .Cells(lngZeile, 3).Text 'Adresse
End With
With Me.ComboBox2 'Zuständig
lngZeile = .List(.ListIndex, 1)
End With
With wksZustaendig
wksPDF.Range("C8").Value = .Cells(lngZeile, 1).Text 'Zuständig
End With
With Me.ComboBox3 'Adresse
lngZeile = .List(.ListIndex, 1)
End With
With wksAdresse
wksPDF.Range("C11").Value = .Cells(lngZeile, 1).Text 'Name
wksPDF.Range("C12").Value = .Cells(lngZeile, 2).Text 'Adresse
End With
'Inhalte weiterer Steuerelemente eintragen
wksPDF.Range("B15").Value = Me.TextBox6 'informationen
Me.Hide
'vorläufiger Dateiname der PDF-Datei
varAttachment = ThisWorkbook.Path & "\PDF_Beleg " & Format(Now, "YYYYMMDD hhmmss") & ".pdf"
'Auswahldialog für Dateiname
varAttachment = Application.GetSaveAsFilename(InitialFileName:=varAttachment, _
Filefilter:="PDF (*.pdf),*.pdf")
If varAttachment False Then
'PDF speichern
wkbPDF.ExportAsFixedFormat Type:=xlTypePDF, Filename:=varAttachment, _
Quality:=xlQualityStandard, IncludeDocProperties:=False, _
IgnorePrintAreas:=False, OpenAfterPublish:=False
wkbPDF.Close savechanges:=False
End If
Me.Show
End Sub