Hallo zusammen,
Entschuldigung für den Threadtitel, mir ist nichts aussagekräftigeres eingefallen.
Zu meinem Problem habe ich auch einen Thread im ms-office-forum gepostet, dort bekomme ich leider keine Antworten, denke ich bin dort auch nicht richtig. http://www.ms-office-forum.de/forum/showthread.php?t=261198
Situation:
Es können mehrere Referenzen (Notesdokumente) ausgewählt werden, die dann in formatierte Worddokumente exportiert werden. Die Dots sind Vorgaben aus dem Marketing, Corporate Desgin .....
Prinzipiell auch kein Problem.
Die Dots enthalten Tabellen. Faste jede Spalte hat eine andere Formatvorlage. In einer Zelle gibt es sogar 2 Formatvorlagen. Funktioniert auch noch.
Um das Ganze dynamisch zu halten (die Anzahl der ausgewählten Dokumente kann jede beliebige Menge annehmen), möchte ich nach jedem Export eine neue Zeile anhängen. Die Formatvorlagen sollen natürlich übernommen werden.
Das aufgezeichnete Makro lieferte mir die Zeile: "Selection.InsertRowsBelow 1" ; es wurde jedoch immer nur 1 bzw. in der Zelle mit den 2 Vorlagen nur die letzte Formatvorlage übernommen.
Aus der Visual Basic Hilfe:
Beispiel
In diesem Beispiel wird die zweite Zeile in der ersten Tabelle ausgewählt und darunter eine neue Zeile eingefügt.
ActiveDocument.Tables(1).Rows(2).Select
Selection.InsertRowsBelow
mein code (Auszug):
Liste = auslesen(db,session,doc)
wwApp.ActiveDocument.Tables(1).cell(y+1,1).Range.text =Liste(0,0)+Chr(13)+Liste(0,1)
wwApp.ActiveDocument.Tables(1).cell(y+1,2).Range.text = Liste(1,0) +Chr(13) + Chr(10)
wwApp.ActiveDocument.Tables(1).cell(y+1,2).Range.insertafter Liste(1,1)
wwApp.ActiveDocument.Tables(1).cell(y+1,3).Range.text =Liste(2,0)
wwApp.ActiveDocument.Tables(1).cell(y+1,4).Range.text =Liste(4,0)
wwApp.ActiveDocument.Tables(1).cell(y+1,5).Range.text =Liste(5,0)
wwApp.ActiveDocument.Tables(1).cell(y+1,6).Range.text = Liste(6,0)
wwApp.ActiveDocument.Tables(1).rows(y+1).Select
Selection.InsertRowsBelow 1
=> Fehlermeldung Variant does not contain an object (Selection)
nächster Versuch mit
wwApp.ActiveDocument.Tables(1).cell(y+1, 2).Range.InsertRowsBelow 1
kommt die Fehlermeldung:Instancemember InsertRowsbelow does not exist
Wie hänge ich eine Zeile an, wie bringe ich die Formatvorlagen in die Zellen?
Gruß
Barbara
Hallo Axel,
wwApp.ActiveDocument.Tables(1).cell(y+1,6).select
Selection.MoveRight(wdCell)
Funktioniert nicht, ich bekommen die Selection nicht hin, "Variant does not contain an object"
verzweifelter Versuch die Selection zu umgehen:
wwApp.ActiveDocument.Tables(1).cell(y+1,6).select.MoveRight(wdCell)
=> "Select ist keine Eigenschaft"
Moveright auf die range losgelassen
wwApp.ActiveDocument.Tables(1).cell(y+1,6).Range.MoveRight(wdCell)
=> "Instancemember Moveright does not exist"
Ich bin zu blöd für den MS-Kram >:(
so, mit Hilfe von Axel und Andreas füge ich jetzt Zeilen ein. Die Formatvorlagen sind auch übernommen, bis auf die Zelle mit den 2 Formatvorlagen.
Meine Idee, ich kopiere das Format aus der vorhergehenden Zeile in die neu eingefügte:
Set Selection = wwApp.Selection
wwApp.Selection.MoveRight(wdCell)
wwApp.ActiveDocument.Tables(1).cell(y+1,2).range.select
Selection.copyformat
wwApp.ActiveDocument.Tables(1).cell(y+2,2).range.select
Selection.pasteformat
Aber: jetzt hat die Zelle auch in der ursprünglichen Zeile nur noch die erste Formatvorlage.
Also, wie spreche ich jetzt den 1. Absatz an, weise ihm Vorlage 1 zu, alle weiteren Absätzen bekommen dann Vorlage 2?
Irgendwie mit dem paragraphen
wwApp.ActiveDocument.Tables(1).cell(y+1,2).paragraph(1).range.select
Selection.copyformat
wwApp.ActiveDocument.Tables(1).cell(y+2,2).paragraph(1).range.select
Selection.pasteformat
aus der VB Hilfe
ActiveDocument.Paragraphs(1).Range.Select
Selection.CopyFormat
ActiveDocument.Paragraphs(2).Range.Select
Selection.PasteFormat
Das geht aber nicht in der Zelle: mein obiger code liefert mir "Instance member PARAGRAPH does not exist.
Habt Ihr noch ein bißchen input?
Guten Morgen,
@Andreas: natürlich paragraphs, irgendwann sollte man einfach die Kiste runterfahren und was ganz anderes machen :)
@Axel: die Idee war super, jetzt klappts.
hier der code:
....
While Not doc Is Nothing
y=y+1
Liste = auslesen(db,session,doc)
wwApp.ActiveDocument.Tables(1).cell(y+1,1).Range.text =Liste(0,0)+Chr(13)+Liste(0,1)
wwApp.ActiveDocument.Tables(1).cell(y+1,2).Range.text = Liste(1,0) +Chr(13) + Chr(10)
wwApp.ActiveDocument.Tables(1).cell(y+1,2).Range.insertafter(Liste(1,1))
wwApp.ActiveDocument.Tables(1).cell(y+1,3).Range.text =Liste(2,0)
wwApp.ActiveDocument.Tables(1).cell(y+1,4).Range.text =Liste(4,0)
wwApp.ActiveDocument.Tables(1).cell(y+1,5).Range.text =Liste(5,0)
wwApp.ActiveDocument.Tables(1).cell(y+1,6).Range.text = Liste(6,0)
'neue Zeile anhängen
Set Selection = wwApp.Selection
Selection.MoveRight(wdCell)
Selection.MoveRight(wdCell)
Selection.MoveRight(wdCell)
Selection.MoveRight(wdCell)
Selection.MoveRight(wdCell)
If y=1 Then Selection.MoveDown(wdLine) 'nur in der Titelzeile muss nach unten gesprungen werden
wwApp.Selection.MoveRight(wdCell)
'2.Zelle kopieren um Formate zu übernehmen
wwApp.ActiveDocument.Tables(1).cell(y+1,2).Range.copy
wwApp.ActiveDocument.Tables(1).cell(y+2,2).Range.paste
Set doc = view.GetNextDocument(doc)
wend
wwApp.ActiveDocument.Tables(1).rows(y+2).delete 'letzte Zeile löschen enthält nur kopierte 2. Zelle
Call wwbook.saveas(Pfad(0)+"RefList_01_"+dateidatum.dateonly+".doc")
Vielen, vielen Dank - ich frage mich warum ich überhaupt erst noch im ms-office-forum fremdgegangen bin. Hier ist man immer wieder gut aufgehoben. :love:
Ein schönes Wochenende
Barbara