Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Drucken per vba
#1
So liebe Gemeinde,
ich hoffe ich stell mich nicht allzu doof an und beschreibe mein Problem korrekt, weil es mein erster eintrag in einem solchem Forum ist.

Ich habe 2 Probleme Problem:

1. beim ersten ausführen der Datei läuft alles super das dokument wird im Hintergrund geöffnet, die Daten werden eingetragen, das Dokument wird gedruckt und das Dokument wird im Hintergrund wieder geschlossen.
Es läuft also alles unsichtbar und gut.


beim zweitem ausführen jedoch läuft der Prozess zwar auch sauber durch jedoch öffnet sich die Word datei Sad). dann muss die manuell geschlossen werden.Beim nächsten mal bleibt sie wieder zu.
Also bei jedem 2tem mal passiert das und ich habe keine Ahnung warum .

2. ich schaffe es nicht dem Word Dokument mitzuteilen das es nur die erste Seite drucken soll, weil wenn ich unten bei .printout Page:=1 hinzufügen macht der drucker nämlich garnichts mehr.
was aber funktioniert ist wenn ich .printout copies:=2 schreibe druckt er das dokument doppelt aus .

ich hoffe einer von euch kann mi helfen, denn ich verzweifle daran..

LG und vielen Dank im Vorrraus!



Code:
Private Sub CommandButton8_Click()

Userform1.Show vbModeless

Dim wrdApp As Object
Dim wrdDoc As Object
Dim appWord As Object
Dim doc As Object
On Error Resume Next
Set appWord = GetObject(, "Word.Application")
If Err.Number <> 0 Then Set appWord = CreateObject("Word.Application")

Set doc = appWord.Documents.Open("C:\schlüssel\Schließberechtigung.docx")

'definieren zum schreiben nach word
Dim m As Variant
Dim ma As Variant
Dim n As Variant
Dim na As Variant
Dim o As Variant
Dim oa As Variant
Dim p As Variant
Dim pa As Variant
Dim q As Variant
Dim qa As Variant
Dim r As Variant
Dim ra As Variant

   
   'Multiline in Textbox anschalten
   doc.formfields.MultiLine = True

   'Inhalte aus Zellen in Worddatei einfügen
   
   doc.formfields("Text1").result = Worksheets("Tabelle1").TextBox1.Value
   m = WorksheetFunction.Transpose(Worksheets("tabelle2").Range("m2:m22"))
   doc.formfields("Text2").result = Join(m, Chr(13))
   ma = WorksheetFunction.Transpose(Worksheets("tabelle2").Range("m23:m37"))
   doc.formfields("Text3").result = Join(ma, Chr(13))
   n = WorksheetFunction.Transpose(Worksheets("tabelle2").Range("n2:n22"))
   doc.formfields("Text4").result = Join(n, Chr(13))
   na = WorksheetFunction.Transpose(Worksheets("tabelle2").Range("n23:n30"))
   doc.formfields("Text5").result = Join(na, Chr(13))
   o = WorksheetFunction.Transpose(Worksheets("tabelle2").Range("o2:o22"))
   doc.formfields("Text6").result = Join(o, Chr(13))
   oa = WorksheetFunction.Transpose(Worksheets("tabelle2").Range("o23:o25"))
   doc.formfields("Text7").result = Join(oa, Chr(13))
   p = WorksheetFunction.Transpose(Worksheets("tabelle2").Range("p2:p11"))
   doc.formfields("Text8").result = Join(p, Chr(13))
   pa = WorksheetFunction.Transpose(Worksheets("tabelle2").Range("p12"))
   doc.formfields("Text9").result = Join(pa, Chr(13))
   q = WorksheetFunction.Transpose(Worksheets("tabelle2").Range("q2:q20"))
   doc.formfields("Text10").result = Join(q, Chr(13))
   qa = WorksheetFunction.Transpose(Worksheets("tabelle2").Range("q21"))
   doc.formfields("Text11").result = Join(qa, Chr(13))
   r = WorksheetFunction.Transpose(Worksheets("tabelle2").Range("r2:r4"))
   doc.formfields("Text12").result = Join(r, Chr(13))
   ra = WorksheetFunction.Transpose(Worksheets("tabelle2").Range("r5"))
   doc.formfields("Text13").result = Join(ra, Chr(13))


doc.PrintOut ((Pages:=1))
Set wrdDoc = Nothing
Set wrdApp = Nothing
Application.Wait Now + TimeSerial(0, 0, 5)
wrdApp.Close

Dim WsShell
Dim intText As Integer
Set WsShell = CreateObject("WScript.Shell")
intText = WsShell.Popup("Schließberechtigung erstellt.", 3, "Automatisch...")
End Sub
Antworten Top
#2
Hallo, :19:

zu 1:

Du kannst nicht erst die Variablen auf "Nothing" setzen und dann ".Close". Schreibe vor den Nothing, aber nach PrintOut :


Code:
doc.Close False ' Dokument Schließen ohne speichern
wrdApp.Quit ' Wordapplikation beenden

Was soll "Set wrdDoc = Nothing"? Deine Variable heißt doch "doc". :21:

Zu 2:

etwa so:


Code:
doc.PrintOut Range:=4, Pages:="1"
________
Servus
Case
[-] Folgende(r) 1 Nutzer sagt Danke an Case für diesen Beitrag:
  • Gast_derverzweifelt
Antworten Top
#3
Danke hat alles super geklappt!

ich hab mich da beim umschreiben wohl ein bisschen vertippt .

kannst du mir auch erklären warum ich da bei printout nen range von 4 setzen muss?


LG und nochmals danke
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste