Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1676to1680
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro erstellen,speichern, drucken

Makro erstellen,speichern, drucken
01.03.2019 16:32:47
Tim
Hallo zusammen,
ich habe mir ein Makro zusammengestellt, welches mir den Inhalt aus einer Userform, in eine neue Tabelle einfügen soll, eine fortlaufende Nummer generiert, die Tabelle unter einem bestimmten Pfad abspeichert und zum Schluss ausdrucken soll. das Ganze ist eine Art Materialbestellung.
Das Makro funktioniert ohne die Druckoption perfekt.
Nehme ich die Möglichkeit der Druckoption hinzu, druckt er nicht die erstellte Tabelle sondern die Tabelle auf der sich die Userform befindet.
Wer kann mir dabei helfen, dass er nur die neuerstellte Tabelle druckt, wenn bei der Druckerauswahl der richtige Drucker ausgewählt und nicht auf abbrechen gedrückt wurde?
Private Sub CommandButton1_Click()
'Druckt den Auftrag aus
Dim strPrinterName As String
Dim varRueckgabe As Variant
strPrinterName = Application.ActivePrinter
varRueckgabe = Application.Dialogs(xlDialogPrinterSetup).Show
If varRueckgabe = "Falsch" Then
ActiveWorkbook.Close savechanges:=False
Exit Sub
Else
'*********************************************************************************************** _
Dim wkb As Workbook 'Auftragsnummer generieren
Dim ws As Worksheet
Dim lz As Long
Dim Jahr As String
Dim Tag As String
Set wkb = ThisWorkbook
Set ws = wkb.Worksheets("Auftragsnummer")
lz = ws.Cells(Rows.Count, 1).End(xlUp).Row
Jahr = Year(Date)
Tag = Format(Date, "dd.mm")
With ws
If .Range("B" & lz)  Jahr Then
.Range("A" & lz + 1) = "AU"
.Range("B" & lz + 1) = Jahr
.Range("C" & lz + 1) = 1
.Range("D" & lz + 1) = .Range("A" & lz + 1) & .Range("B" & lz + 1) & "-" & .Range(" _
C" & lz + 1) 'verkettet die neue Auftragsnummer bei Jahreswechsel
UserForm1.Label99 = .Range("A" & lz + 1) & .Range("B" & lz + 1) & "-" & .Range("C" _
& lz + 1)
Else
.Range("C" & lz) = .Range("C" & lz) + 1
.Range("D" & lz) = .Range("A" & lz) & .Range("B" & lz) & "-" & .Range("C" & lz) ' _
verkettet die drei Spalten zu einer Auftagsnummer
UserForm1.Label99 = .Range("A" & lz) & .Range("B" & lz) & "-" & .Range("C" & lz) ' _
schreibt in Userform die Auftragsnummer zurück
End If
End With
'*********************************************************************************************** _
Dim i As Long
Dim j As Long
Application.ScreenUpdating = False ' sorgt dafür, dass der Fokus auf der Eingabemaske bleibt  _
und das erstellen + speichern im Hintergrund passiert
Workbooks.Add
With UserForm1.ListBox1
For i = 0 To .ListCount - 1
For j = 0 To .ColumnCount - 1
Cells(i + 22, j + 1) = .List(i, j)
Cells(i + 22, j + 1).HorizontalAlignment = xlCenter 'zentriert
Cells(20, j + 1).Borders(xlEdgeBottom).LineStyle = xlContinuous ' setzt unterhalb  _
der Überschrift einen Rahmen
Next j
Next i
End With
'*********************************************************************************************** _
Dim lfdNr 'nummeriert die übertragenen Artikel in Positionsnummern durch
lfdNr = 1
For i = 22 To Cells(Rows.Count, 2).End(xlUp).Row
If Cells(i, 2).Value > 0 Then
Cells(i, 1).Value = lfdNr
lfdNr = lfdNr + 1
Cells(i, 1).HorizontalAlignment = xlCenter 'zentriert
Cells(i, 5) = Clear ' löscht den Preis, der nur für die Eventmanager als Kalkulation dient
End If
Next
Dim NeuerName As String, Speicherpfad As String 'speichert unter
Speicherpfad = "C:\Test\Aufträge\"
NeuerName = "Auftrag_" & UserForm1.Label99 ' + Lieferdatum
ActiveWorkbook.SaveAs Filename:=Speicherpfad & NeuerName & "_" & "ea" & "_" & Date & "_" & "Ld"  _
& "_" & UserForm1.Label101 & ".xlsx" 'speichert den Auftrag unter Auftragsnummer, erstellt am "ea" und  Lieferdatum "Ld" aus Label101
ActiveWorkbook.Close
MsgBox "dein Auftrag wurde erfolgreich übermittelt!"
'Hier den PrintOut befehl
ActiveWorkbook.PrintOut Copies:=2, Collate:=True
Application.ActivePrinter = strPrinterName
'ActiveWorkbook.Close savechanges:=False
End If
'drucken, speichern und schließen
End Sub

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro erstellen,speichern, drucken
01.03.2019 16:37:16
Hajo_Zi
gebe hier die Tabelle an, würde ich vermuten.
ActiveWorkbook.PrintOut
Die meisten bauen Deine Datei nicht nach. Die Zeit hat schon jemand investiert.
Ein Nachbau sieht meist anders aus als das Original. Darum sollte das Original verlinkt werden.
Die meisten möchten es am Original testen um den gleichen Fehler zu erhalten.
Der Name einer hochgeladenen Mappe wird im Beitrag automatisch angezeigt, sodass es bei Verwendung von aussagekräftigen Namen leichter fällt, sie später im Ablageordner wiederzufinden und sie gedanklich einem bestimmten Thema zuzuordnen. Namen wie Muster*, Test*, Mappe*, Beispiel*, Fehler*, Kalender*, UserForm* usw. sind so allgemein, dass eine Zuordnung zu einem Thema unmöglich gemacht wird.
Es sollte ein aussagekräftiger Name sein.
Benutze hier im Forum die Funktion zum hochladen. Falls Du die nicht benutzen möchtest beachte, von unsicheren Servern wie z.B. www.file-upload.net lade ich keine Datei runter. (lt. Einschätzung meines Virenprogramms)

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Die Beiträge werden auch ignoriert, es erfolgt keine Antwort.
Anzeige
AW: Makro erstellen,speichern, drucken
01.03.2019 16:50:56
Tim
Hallo Hajo,
vielen Dank für deine schnelle Antwort. Ich habe das auf die schnelle nur provisorisch in eine neue Tabelle kopiert.
https://www.herber.de/bbs/user/128031.xlsm
AW: Makro erstellen,speichern, drucken
01.03.2019 17:10:47
Hajo_Zi
Fehlerhafte Zeile habe ich auskommentiert.
Gut mein Vorschlag hat Dir nicht gefallen. Der die Lösung ist. Ich bin dann raus.
Vielleicht hat noch jemand anderes ein Iddee.
Gruß Hajo
AW: Makro erstellen,speichern, drucken
01.03.2019 20:46:01
Tim
Hallo Hajo,
deinen Vorschlag habe ich mir angesehen, für mich auch verständlich dass diese Zeile angepasst werden müsste jedoch weiß ich nicht wie.
Anzeige
AW: Makro erstellen,speichern, drucken
01.03.2019 21:29:46
Werner
Hallo Tim,
na ja, du erstellst ja erst eine neue Datei, speicherst die ab und schließt dann die neu erstellte Datei. Wenn die geschlossen ist, dann kannst du sie ja nicht mehr ausdrucken. ActiveWorkbook ist dann ja nicht mehr die neu erstellte Datei, die ist ja schon geschlossen.
Du mußt doch nur den Druckbefehl vor dem Schließen deiner neuen Datei ausführen.
Speicherpfad = "C:\Test\Aufträge\"
NeuerName = "Auftrag_" & UserForm1.Label99
ActiveWorkbook.SaveAs Filename:=Speicherpfad & NeuerName & "_" & "ea" & "_" & Date & "_" & "Ld"  _
_
& "_" & UserForm1.Label101 & ".xlsx"
'Hier den PrintOut befehl
ActiveWorkbook.PrintOut Copies:=2, Collate:=True
ActiveWorkbook.Close
MsgBox "dein Auftrag wurde erfolgreich übermittelt!"
Gruß Werner
Anzeige
AW: Makro erstellen,speichern, drucken
04.03.2019 08:34:53
Tim
Danke Werner, deinen Hinweis konnte ich umsetzen, jetzt funktioniert es wie gewünscht!!
Gerne u. Danke für die Rückmeldung. o.w.T.
04.03.2019 18:36:08
Werner

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige