Hallo,
ich habe ein Problem was ich nicht wirklich nachbollziehen kann. Hab aber ehrlich gesagt nicht wirklich Ahnung von ...
ich hab ne Excel Datei, mit einem Userform....bei Klick wird die Rechnung gedruckt. Hat alles wunderbar funktioniert.
Private Sub Rechnungsdruck_Click()
' Variablendeklaration
Dim strFileName As String
Dim strTMP1 As String
Dim strTMP2 As String
Dim strTMP3 As String
Dim strTMP4 As String
Dim strTMP5 As String
Dim strTMP6 As String
Dim strTMP7 As String
Dim strTMP8 As String
Dim strTMP9 As String
Dim strTMP10 As String
Dim strTMP11 As String
Dim strTMP12 As String
Dim strTMP13 As String
Dim strTMP14 As String
Dim strTMP15 As String
Dim objWDApp As Object
Dim objDoc As Object
' Bei einer Fehlermeldung springe zur angegebenen Sprungmarke
On Error GoTo Fin
' Die Variable wird mit dem Pfad und dem Dateinamen gefüllt
strFileName = ThisWorkbook.Path & "\" & "Dokument.dot"
' Mache nur weiter, wenn die Datei vorhanden ist
If Dir(strFileName) <> "" Then
' Die Bildschirmaktualisierung wird ausgeschaltet
Application.ScreenUpdating = False
' Beziehe dich auf das Tabellenblatt mit dem CodeNamen Sheet1
' Alles was sich auf den "With-Rahmen"
' bezieht muss mit einem Punkt beginnen
' With ist einfach eine bequemere Art Code zu schreiben
' Allerdings auch Fehleranfälliger, denn schon einen Punkt
' vergessen bringt u. U. Probleme mit sich
With UserForm1
' Die Variablen werden mit dem Inhalt der Zellen befüllt
strTMP1 = tbName.Value
strTMP2 = tbVorname.Value
strTMP3 = tbTitel.Value
strTMP4 = tbStraße.Value
strTMP5 = tbNr.Value
strTMP6 = tbPLZ.Value
strTMP7 = tbOrt.Value
strTMP8 = tbKassenzeichen.Value
strTMP9 = tbBetrag.Value
strTMP10 = tbBezeichnung.Value
strTMP13 = tbZusatz.Value
strTMP14 = tbBezeichnung2.Value
strTMP15 = cbxLand.Value
End With
If Not cbxAnrede.Value = "Firma" Then
strTMP11 = cbxAnrede.Value
End If
Select Case cbxAnrede.Value
Case "Frau und Herrn"
strTMP12 = "Sehr geehrte Frau, sehr geehrter Herr" & " " & tbName & ","
Case "Frau"
strTMP12 = "Sehr geehrte Frau" & " " & tbName & ","
Case "Herrn"
strTMP12 = "Sehr geehrter Herr" & " " & tbName & ","
Case Else
strTMP12 = "Sehr geehrte Damen und Herren,"
End Select
' Ignoriere einen eventuell auftretenden Fehler und mache
' mit der nächsten Anweisung weiter
' Damit kann überprüft werden, ob Word offen ist
On Error Resume Next
' Ist Word schon offen, dann belege die Objektvariable
' Objektvariable werden mit "Set" gefüllt
Set objWDApp = GetObject(, "Word.Application")
' Wenn Word nicht offen ist, dann starte es
If objWDApp Is Nothing Then Set objWDApp = CreateObject("Word.Application")
' Die Fehlerbehandlung wird wieder zurück gesetzt
On Error GoTo Fin
With objWDApp
' Hier wird gesteuert, ob Word sichtbar oder unsichtbar sein soll
.Visible = True
' Die Worddatei wird geöffnet
Set objDoc = .Documents.Open(strFileName)
' An dien entsprechenden Textmarken wird der Inhalt der
' Variablen eingefügt
.ActiveDocument.Bookmarks("tmVorname").Range = strTMP1
.ActiveDocument.Bookmarks("tmName").Range = strTMP2
.ActiveDocument.Bookmarks("tmTitel").Range = strTMP3
.ActiveDocument.Bookmarks("tmStraße").Range = strTMP4
.ActiveDocument.Bookmarks("tmNr").Range = strTMP5
.ActiveDocument.Bookmarks("tmPLZ").Range = strTMP6
.ActiveDocument.Bookmarks("tmOrt").Range = strTMP7
.ActiveDocument.Bookmarks("tmKassenzeichen").Range = strTMP8
.ActiveDocument.Bookmarks("tmBetrag").Range = strTMP9
.ActiveDocument.Bookmarks("tmBezeichnung").Range = strTMP10
.ActiveDocument.Bookmarks("tmAnrede").Range = strTMP11
.ActiveDocument.Bookmarks("tmAnrede2").Range = strTMP12
.ActiveDocument.Bookmarks("tmZusatz").Range = strTMP13
.ActiveDocument.Bookmarks("tmBezeichnung2").Range = strTMP14
End With
' Hinweis, dass alles erledigt ist
MsgBox "Finished!"
Else
' Die Datei ist nicht vorhanden
MsgBox "No file!"
End If
Fin:
' Die Bildschirmaktualisierung wird wieder eingeschaltet
Application.ScreenUpdating = True
If Not objDoc Is Nothing Then objDoc.SaveAs "xxxxx\2015_Rechnungen\" & tbKassenzeichen & "_" & tbBeleg & ".doc"
objDoc.PrintOut Copies:=1
objDoc.Close
' Leeren der Objektvariablen
Set objDoc = Nothing
Set objWDApp = Nothing
End Sub
Jetzt habe ich einen zweiten Button hinzugefügt für Auslandszahlunge. Das obige Dokument kals dot kopiert die dazugehörige Textmarke tmLand definiert und seltsamerweise funktioniert dann die übergange der cbxAnrede-Kombobox und der cbxLand-Kombobox nicht mehr....hier der Code:
Private Sub Ausland_Click()
' Variablendeklaration
Dim strFileName As String
Dim strTMP1 As String
Dim strTMP2 As String
Dim strTMP3 As String
Dim strTMP4 As String
Dim strTMP5 As String
Dim strTMP6 As String
Dim strTMP7 As String
Dim strTMP8 As String
Dim strTMP9 As String
Dim strTMP10 As String
Dim strTMP11 As String
Dim strTMP12 As String
Dim strTMP13 As String
Dim strTMP14 As String
Dim strTMP15 As String
Dim objWDApp As Object
Dim objDoc As Object
' Bei einer Fehlermeldung springe zur angegebenen Sprungmarke
On Error GoTo Fin
' Die Variable wird mit dem Pfad und dem Dateinamen gefüllt
strFileName = ThisWorkbook.Path & "\" & "Dokument2.dot"
' Mache nur weiter, wenn die Datei vorhanden ist
If Dir(strFileName) <> "" Then
' Die Bildschirmaktualisierung wird ausgeschaltet
Application.ScreenUpdating = False
' Beziehe dich auf das Tabellenblatt mit dem CodeNamen Sheet1
' Alles was sich auf den "With-Rahmen"
' bezieht muss mit einem Punkt beginnen
' With ist einfach eine bequemere Art Code zu schreiben
' Allerdings auch Fehleranfälliger, denn schon einen Punkt
' vergessen bringt u. U. Probleme mit sich
With UserForm1
' Die Variablen werden mit dem Inhalt der Zellen befüllt
strTMP1 = tbName.Value
strTMP2 = tbVorname.Value
strTMP3 = tbTitel.Value
strTMP4 = tbStraße.Value
strTMP5 = tbNr.Value
strTMP6 = tbPLZ.Value
strTMP7 = tbOrt.Value
strTMP8 = tbKassenzeichen.Value
strTMP9 = tbBetrag.Value
strTMP10 = tbBezeichnung.Value
strTMP13 = tbZusatz.Value
strTMP14 = tbBezeichnung2.Value
strTMP15 = cbxLand.Value
End With
If Not cbxAnrede.Value = "Firma" Then
strTMP11 = cbxAnrede.Value
End If
Select Case cbxAnrede.Value
Case "Frau und Herrn"
strTMP12 = "Sehr geehrte Frau, sehr geehrter Herr" & " " & tbName & ","
Case "Frau"
strTMP12 = "Sehr geehrte Frau" & " " & tbName & ","
Case "Herrn"
strTMP12 = "Sehr geehrter Herr" & " " & tbName & ","
Case Else
strTMP12 = "Sehr geehrte Damen und Herren,"
End Select
' Ignoriere einen eventuell auftretenden Fehler und mache
' mit der nächsten Anweisung weiter
' Damit kann überprüft werden, ob Word offen ist
On Error Resume Next
' Ist Word schon offen, dann belege die Objektvariable
' Objektvariable werden mit "Set" gefüllt
Set objWDApp = GetObject(, "Word.Application")
' Wenn Word nicht offen ist, dann starte es
If objWDApp Is Nothing Then Set objWDApp = CreateObject("Word.Application")
' Die Fehlerbehandlung wird wieder zurück gesetzt
On Error GoTo Fin
With objWDApp
' Hier wird gesteuert, ob Word sichtbar oder unsichtbar sein soll
.Visible = True
' Die Worddatei wird geöffnet
Set objDoc = .Documents.Open(strFileName)
' An dien entsprechenden Textmarken wird der Inhalt der
' Variablen eingefügt
.ActiveDocument.Bookmarks("tmVorname").Range = strTMP1
.ActiveDocument.Bookmarks("tmName").Range = strTMP2
.ActiveDocument.Bookmarks("tmTitel").Range = strTMP3
.ActiveDocument.Bookmarks("tmStraße").Range = strTMP4
.ActiveDocument.Bookmarks("tmNr").Range = strTMP5
.ActiveDocument.Bookmarks("tmPLZ").Range = strTMP6
.ActiveDocument.Bookmarks("tmOrt").Range = strTMP7
.ActiveDocument.Bookmarks("tmKassenzeichen").Range = strTMP8
.ActiveDocument.Bookmarks("tmBetrag").Range = strTMP9
.ActiveDocument.Bookmarks("tmBezeichnung").Range = strTMP10
.ActiveDocument.Bookmarks("tmAnrede").Range = strTMP11
.ActiveDocument.Bookmarks("tmAnrede2").Range = strTMP12
.ActiveDocument.Bookmarks("tmZusatz").Range = strTMP13
.ActiveDocument.Bookmarks("tmBezeichnung2").Range = strTMP14
.ActiveDocument.Bookmarks("tmLand").Range = strTMP15
End With
' Hinweis, dass alles erledigt ist
MsgBox "Finished!"
Else
' Die Datei ist nicht vorhanden
MsgBox "No file!"
End If
Fin:
' Die Bildschirmaktualisierung wird wieder eingeschaltet
Application.ScreenUpdating = True
If Not objDoc Is Nothing Then objDoc.SaveAs "xxxx\Desktop\" & tbKassenzeichen & "_" & tbBeleg & ".doc"
objDoc.PrintOut Copies:=1
objDoc.Close
' Leeren der Objektvariablen
Set objDoc = Nothing
Set objWDApp = Nothing
End Sub
Bitte helft mir, ich raff es nicht
|