Export in Excel. Druckbereiche in Word einfügen. dringend Hilfe?

2 Antworten

Hallo Nayes

Klingt recht kompliziert. Aber ich kann mir vorstellen, dass man es evtl. mit einem "Virtuellen Drucker" erledigen kann.

Schau dir doch mal diesen an: https://www.zoliblog.com/2006/01/30/free-virtual-printer-creates-pdf-jpg-doc-xls-and-other-formats/

Das Programm und die Treiber werden installiert und er wird dir dann als "Drucker" im Drucker Menu angezeigt. Wenn du ihn auswählst, kannst du entscheiden, in was für ein Format er "Drucken" soll.

Wenn du aber sehr viele Rahmenlinien und Grafiken/Verschiebungen hast, kann nicht mal das beste Tool ein Excel so übernehmen, damit es von Word gelesen werden kann.

Mfg

LuKaLu

Nayes2020 
Fragesteller
 29.09.2016, 11:38

danke für deine Antwort

1

Das Grundgerüst wird nicht so schwierig sein, eher wenn es dann um die Details geht. Soll jeder Druckbereich auf eine eigene Seite in Word, also nach jedem Einfügen ein Seitenwechsel?

Das wären nun die drei ersten Tabellenblätter, das i=1 to 3 entsprechend ändern.

Wichtig ist allerdings, wenn Du aus Excel heraus in Word mit VBA hantierst, dass in Excel VBA die Microsoft Word 14.0 Object Library (heißt zumindest bei mir in Office 2010 so) eingerichtet ist. In VBA unter Extras > Verweise zu finden

Sub wordkopieren()
Dim AppWD As Object
Set AppWD = CreateObject("Word.Application")
AppWD.Visible = True
AppWD.Documents.Open "C:\users\xxx\desktop\dok1.docx"
For i = 1 To 3
With Sheets(i)
.Range(.PageSetup.PrintArea).Copy
End With
AppWD.Selection.endkey unit:=wdstory 'ans Textende springen
AppWD.Selection.Paste 'einfügen
AppWD.Selection.InsertBreak Type:=wdPageBreak 'seitenumbruch
Next
End Sub

Nayes2020 
Fragesteller
 29.09.2016, 11:42

ja jeder Druckbereich muss auf eine extra Seite.

Uhh VBA... ein Buch mit sieben Siegeln... xD. Ich hab alles mit Excel formeln machen müssen. zum einen weil ich in vba nicht fit bin und zum anderen war das vom Cheffe so gewollt.

kann ich das einfach in so einen Modul kopieren?

muss die zahl für i richtig sein? also wenn ich sage i= 1 to 100000

was würde dann passieren? wenn es dementsprechend weniger Sheets gibt?

1
Ninombre  29.09.2016, 11:50
@Nayes2020

Ohne VBA geht das mit dem Kopieren nicht, außer wenn Du ganz andere Ansätze noch verfolgst, wie LustenLu bspw. virtuelle Drucker genannt hat. Evtl. ist das sogar einfacher, damit kenne ich mich allerdings nicht aus und kann es nicht vergleichen.

Der Code gehört in ein Modul. Wenn mit sheets(i) kein gültiges Tabellenblatt gefunden wird, gibt es eine Fehlermeldung bzw. bricht das Makro ab. Wenn Du die Anzahl nicht ständig anpassen willst und immer alle Tabellenblätter übernommen werden sollen geht es mit
for i=1 to sheets.count einfacher. Dann zählt Excel die Anzahl der Tabellenblätter.

1
Nayes2020 
Fragesteller
 29.09.2016, 13:05
@Ninombre

also muss das sheet der zahl entsprechen? weil diese heißen nicht 1, 2,3 sondern haben eine bezeichnung. IW 001, IW 002, BP,001, BP002 usw.

1
Ninombre  29.09.2016, 13:34
@Nayes2020

Über VBA kannst Du die Tabellenblätter mit dem Namen ansprechen oder mit der Nummer. Das erste Tabellenblatt ist dann sheets(1).
Bei der verwendeten Schreibweise sheets(i) wird i mit der for-schleife hochgezählt und so beim ersten Tabellenblatt begonnen bis zum letzten. Wie die Tabellenblätter heißen ist hierbei egal.

1