Hilfe zu Makro bei Word 2013

Moderator: ModerationP

Hilfe zu Makro bei Word 2013

Beitragvon alexchrist » 13. Sep 2021, 07:58

Hallo zusammen

als Neulink hab ich eine frage die ich einfach nicht gelöst bekommen.

Ich habe eine Word Dokument mit 50 Seiten,
Jetzt habe ich mir ein Makro erstellt was mit die Aktuelle Seite per PDF und als Papier druckt.
Jedoch muss ich den Namen für das PDF jedesmal Manuell eintragen. Gibt es eine Möglichkeit das der Name
des Dokuments immer die 11 Zeile der aktuellen Seite ist ??

ActivePrinter = "Adobe PDF"
Application.PrintOut FileName:="", Range:=wdPrintCurrentPage, Item:= _
wdPrintDocumentWithMarkup, Copies:=1, Pages:="", PageType:= _
wdPrintAllPages, Collate:=True, Background:=True, PrintToFile:=False, _
PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=0, _
PrintZoomPaperHeight:=0
ActivePrinter = "Alex + Rita"
Application.PrintOut FileName:="", Range:=wdPrintCurrentPage, Item:= _
wdPrintDocumentWithMarkup, Copies:=1, Pages:="", PageType:= _
wdPrintAllPages, Collate:=True, Background:=True, PrintToFile:=False, _
PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=0, _
PrintZoomPaperHeight:=0

das ist mein momentaner Code damit beide Drucks gleichzeitig stattfinden.

Vielen Dank
MfG
Alex
alexchrist
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4
Registriert: 13. Sep 2021, 07:51

Re: Hilfe zu Makro bei Word 2013

Beitragvon Juergen_R » 13. Sep 2021, 22:10

Hallo Alex,

hier ein Beispiel, wie Du den Text der Zeile 11 in einer Messagbox ausgeben kannst:
Code: Alles auswählen
Sub getFileName()
Dim sDateiname As String
' Gehe zu Zeile 11
Selection.GoTo What:=wdGoToLine, Which:=wdGoToAbsolute, Count:=11
' markiere Zeile 11
Selection.EndOf Unit:=wdLine, Extend:=wdExtend
' schreibe Zeile 11 in Variable
sDateiname = Selection.Text

' Textausgabe: Zeile 11
MsgBox sDateiname

End Sub
Viele Grüße

Jürgen
______________________________________________________
Windows 10 Pro • Office 365
Juergen_R
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 10
Registriert: 26. Aug 2018, 13:27

Re: Hilfe zu Makro bei Word 2013

Beitragvon alexchrist » 14. Sep 2021, 08:31

Danke für die Nachricht, aber ihrgendwie ist das glaube ich nicht das was ich gesucht habe.

Es soll folgendes Passieren:
-Aktuelle Seite als PDF drucken (z.b. Seite 23)
- Als Speichername für das PDF automatisch den Text aus Zeile 11 der aktuellen Seite übernehmen
- das ganze abspeichern

:D
alexchrist
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4
Registriert: 13. Sep 2021, 07:51

Re: Hilfe zu Makro bei Word 2013

Beitragvon Juergen_R » 14. Sep 2021, 12:05

Hallo Alex,

nun habe ich keine Erfahrung mit dem PDF-Export, aber
in der zweiten Zeile Deines geposteten Code übergibst Du einen Leerstring (""):
Code: Alles auswählen
Application.PrintOut FileName:="",

Statt des Leerstrings, brauchst doch doch meiner Meinung nach doch nur meinen Code
voranstellen und die Variable aus meinem Code einzusetzen, oder?
Code: Alles auswählen
Dim sDateiname As String
' Gehe zu Zeile 11
Selection.GoTo What:=wdGoToLine, Which:=wdGoToAbsolute, Count:=11
' markiere Zeile 11
Selection.EndOf Unit:=wdLine, Extend:=wdExtend
' schreibe Zeile 11 in Variable
sDateiname = Selection.Text

ActivePrinter = "Adobe PDF"
Application.PrintOut FileName:=sDateiname, Range:=wdPrintCurrentPage, Item:= _
wdPrintDocumentWithMarkup, Copies:=1, Pages:="", PageType:= _
wdPrintAllPages, Collate:=True, Background:=True, PrintToFile:=False, _
PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=0, _
PrintZoomPaperHeight:=0
ActivePrinter = "Alex + Rita"
Application.PrintOut FileName:="", Range:=wdPrintCurrentPage, Item:= _
wdPrintDocumentWithMarkup, Copies:=1, Pages:="", PageType:= _
wdPrintAllPages, Collate:=True, Background:=True, PrintToFile:=False, _
PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=0, _
PrintZoomPaperHeight:=0


Ob dies funktioniert, kann ich Dir nicht sagen, versuche es doch einfach.

Nachtrag:
Ach ja, es fehlt noch die Auswahl der gewünschten Seite, das dürfte aber auch per Selection gehen:
https://docs.microsoft.com/en-us/office ... /overview/

Werde mal nach einer Anweisung suche und mich melden.
Viele Grüße

Jürgen
______________________________________________________
Windows 10 Pro • Office 365
Juergen_R
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 10
Registriert: 26. Aug 2018, 13:27

Re: Hilfe zu Makro bei Word 2013

Beitragvon Juergen_R » 15. Sep 2021, 09:54

Hallo Alex,

hier meine überarbeitet Version:
Code: Alles auswählen
Sub KopiereZeile11()
Dim nSeite As Variant
Dim sDateiname As String
' Inputbox zur Eingabe einer Seitennummer:
nSeite = InputBox("Bitte geben Sie eine Seitenummer ein:", "Seitenauswahl")

' Für den Fall, dass die angegebene Seitennummer die Gesamtanzahl der Seiten überschreitet
On Error GoTo Fehler
'Gehe zur angegebenen Seitennummer und stelle den Cursor in ABSATZ 11
ActiveWindow.Panes(1).Pages(CInt(nSeite)).Rectangles(11).Range.Select

' Markiere die Zeile des selektiereten Absatzes
With Selection
 ' Collapse current selection.
 .Collapse
 ' Expand selection to current Line.
 .Expand Unit:=wdLine
End With
' schreibe Zeile 11 in Variable
sDateiname = Selection.Text

' Textausgabe: Zeile 11
MsgBox sDateiname
Exit Sub
Fehler:
MsgBox "Sie haben eine nicht vorhandene Seitenummer angegeben!" & Chr(10) & _
        "___________________________________________" & Chr(10) & _
            "Starten Sie das Programm erneut und geben Sie eine gültige Seitennummer ein.", vbExclamation, "ANWENDERFEHLER!"
End Sub


Beschreibung: Siehe Kommentare im Code

Hinweis:
Wenn Zeile 11 Bestandteil eines längeren Absatzes inklusive automatischer und manueller
Zeilenumbrüche ist, könnte es mit der Wiedergabe des gewünschten Textes Probleme geben.
Ich habe in der VBA-API bisher keine Methode gefunden, wie ich die
absolute Zeile 11 auf der aktuellen Seite selektieren kann.

Auch das automatische Erfassen der Seitennummer auf der der Cursor positioniert ist für mich noch mit Rätseln verbunden.

Naja, vielleicht bringt Dich mein Code ein Stück weiter...
Viele Grüße

Jürgen
______________________________________________________
Windows 10 Pro • Office 365
Juergen_R
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 10
Registriert: 26. Aug 2018, 13:27

Re: Hilfe zu Makro bei Word 2013

Beitragvon theoS » 15. Sep 2021, 20:40

Zuverlässig ist das mit den Zeilennummern nicht, da Word hier u.U. einen Ausgleich bastelt wenn die Schusterjungen-/Hurenkinderautomatik eingreift.
Daher musst du das immer auf jeden Fall checken, ob das so stimmt, wie die Selection das ermittelt. (Ganz abgesehen von diversen Tabellen oder Grafiken die das alles ein wenig durcheinander bringen können.
Wie auch immer, du kannst das ja mal ausprobieren ob dir das so das gewünscht Ergebnis bringt:
Code: Alles auswählen
Sub datNam()
Dim dd1 As Document: Set dd1 = ActiveDocument
Dim siT As String, liN As String, datN As String

siT = Selection.Information(wdActiveEndPageNumber) 'liest die Seitennummer aus wo der Cursor steht
Selection.Bookmarks("\Page").Select 'Wählt die ganze Seite aus
Selection.Collapse direction:=wdCollapseStart 'und setzt die Markierung an den Start der Seite
Selection.GoTo wdGoToLine, wdGoToRelative, 10 'geht zur Zeile 11 auf der Seite auf der der Cursor steht, vermutlich ist die erste Zeile in der Zählung 0
liN = Left(dd1.Bookmarks("\Line").Range.Text, Len(dd1.Bookmarks("\Line").Range.Text) - 1) 'liest den Text draus, incl. Punkt oder Komma am Ende
datN = Trim(liN & "Auf_Seite_Nr" & siT) & ".docx" 'entfernt evtl. Leerzeichen davor und dahinter und hängt das alles zusammen
MsgBox datN 'Ausgabe in Messagebox
End Sub
theo s.
Benutzeravatar
theoS
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 5722
Registriert: 19. Apr 2008, 00:14

Re: Hilfe zu Makro bei Word 2013

Beitragvon alexchrist » 17. Sep 2021, 06:48

Guten Morgen

die Antwort von theoS war ein guter Anfang.. Ich hab es zumindest hinbekommen das es jetzt Zeile 11 ausliest und diese in der Messagebox wiedergibt und anschließend den PDF drucker öffnet..

was jetzt eigentlich nur noch fehlen würde, ist das er den Text der Messagebox auch in das Eingabefeld des Speicherpfades kopiert, ODER was mir für den Anfang auch reichen würde das er den Text aus der Box kopiert und ich diesen mit Strg+V einfach einfügen kann.

Code: Alles auswählen
        Sub datNam()
Dim dd1 As Document: Set dd1 = ActiveDocument
Dim siT As String, liN As String, datN As String

siT = Selection.Information(wdActiveEndPageNumber) 'liest die Seitennummer aus wo der Cursor steht
Selection.Bookmarks("\Page").Select 'Wählt die ganze Seite aus
Selection.Collapse direction:=wdCollapseStart 'und setzt die Markierung an den Start der Seite
Selection.GoTo wdGoToLine, wdGoToRelative, 10 'geht zur Zeile 11 auf der Seite auf der der Cursor steht, vermutlich ist die erste Zeile in der Zählung 0
liN = Left(dd1.Bookmarks("\Line").Range.Text, Len(dd1.Bookmarks("\Line").Range.Text) - 1) 'liest den Text draus, incl. Punkt oder Komma am Ende
datN = Trim(liN) 'entfernt evtl. Leerzeichen davor und dahinter und hängt das alles zusammen
MsgBox datN 'Ausgabe in Messagebox
    ActivePrinter = "Adobe PDF"
    Application.PrintOut FileName:="", Range:=wdPrintCurrentPage, Item:= _
        wdPrintDocumentWithMarkup, Copies:=1, Pages:="", PageType:= _
        wdPrintAllPages, Collate:=True, Background:=True, PrintToFile:=False, _
        PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=0, _
        PrintZoomPaperHeight:=0
               
End Sub


so sieht es jetzt aus.

Danke euch
alexchrist
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4
Registriert: 13. Sep 2021, 07:51

Re: Hilfe zu Makro bei Word 2013

Beitragvon HKindler » 17. Sep 2021, 08:18

Hi,

ich zitiere einmal:
Juergen_R hat geschrieben:nun habe ich keine Erfahrung mit dem PDF-Export, aber
in der zweiten Zeile Deines geposteten Code übergibst Du einen Leerstring (""):
Code: Alles auswählen
Application.PrintOut FileName:="",

Statt des Leerstrings, brauchst doch doch meiner Meinung nach doch nur meinen Code
voranstellen und die Variable aus meinem Code einzusetzen, oder?
Hast du diesen Rat befolgt? Wenn ich mir deinen aktuellen Code anschaue, dann behaupte ich: NEIN!
Gruß,
Helmut

----------------------------
Windows 10 Enterprise (64 Bit) / Office 365 ProPlus (32 Bit)
Benutzeravatar
HKindler
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 6296
Registriert: 04. Jul 2013, 09:02
Wohnort: Schwarzwald

Re: Hilfe zu Makro bei Word 2013

Beitragvon alexchrist » 17. Sep 2021, 08:47

Mahlzeit

doch das hatte ich versucht aber dann bekomm ich einen Fehler :
Laufzeitfehler "5174"
Wir konnten Ihre Datei nicht finde. Wurde sie möglicherweise verschoben, umbenannt oder gelöscht?
(C:\User\User?.../Baustelle Mustermann)

wobei die ausgewählte Seite ist eigentlich Musterfrau gewesen, also leider auch die falsche Seite.

der Fehler kommt immer dann wenn ich in Application.PrintOut FileName:="", etwas eintrage
alexchrist
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4
Registriert: 13. Sep 2021, 07:51

Re: Hilfe zu Makro bei Word 2013

Beitragvon HKindler » 17. Sep 2021, 09:23

Hi,

ich kenne mich mit Word nicht wirklich gut aus, aber
alexchrist hat geschrieben:C:\User\User?.../Baustelle Mustermann
Ist nun einmal kein ungültiger Dateiname, da sowohl "?" als auch "/" nicht erlaubt sind.

Hmm, habe mir gerade nochmals die Hilfeseite angeschaut. Das hättest du selbst auch schon längst machen können. Bei Application.PrintOut Filename:="" gibt Filename nicht den Namen der Ausgabedatei an, sondern den Namen der zu druckenden Datei. Einen Dateiname für die Ausgabe setzt du mit PrintToFile:=True, OutputFileName:="xxx" an. Ich weiß allerdings nicht, ob das beim Adobe-Printer den gewünschten Effekt hat. Testen kann ich es nicht, da bei uns erstens für Word alle Makros grundsätzlich gesperrt sind und zweitens kein Adobe-Printer installiert ist. Falls die Angabe des Dateinamens zusammen mit dem Adobe-Printer nicht klappt, bietet Word zum Exportieren als PDF beim Document-Objekt auch die beiden Methoden .ExportAsFixedFormat und .ExportAsFixedFormat2 an. Damit sollte es auf alle Fälle klappen.
Gruß,
Helmut

----------------------------
Windows 10 Enterprise (64 Bit) / Office 365 ProPlus (32 Bit)
Benutzeravatar
HKindler
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 6296
Registriert: 04. Jul 2013, 09:02
Wohnort: Schwarzwald


Zurück zu Word Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 8 Gäste