Lotus Notes / Domino Sonstiges > OLE/COM-Programmierung
Aus Notes in Word Tabellen modifizieren
Barbara:
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:
--- Zitat ---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
--- Ende Zitat ---
mein code (Auszug):
--- Code: ---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
--- Ende Code ---
=> Fehlermeldung Variant does not contain an object (Selection)
nächster Versuch mit
--- Code: ---wwApp.ActiveDocument.Tables(1).cell(y+1, 2).Range.InsertRowsBelow 1
--- Ende Code ---
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
Axel:
Ich habe das bisher immer so gemacht, dass ich in der Tabelle in der letzten Zeile in der ganz rechten Spalte ein "MoveRight" ausgeführt habe. Dadurch wird eine neue Tabellenzeile angehängt und die Formatierung von der vorherigen übernommen.
Const wdCell = 12
...
wwApp.Selection.MoveRight(wdCell)
Axel
Barbara:
Hallo Axel,
--- Code: ---wwApp.ActiveDocument.Tables(1).cell(y+1,6).select
Selection.MoveRight(wdCell)
--- Ende Code ---
Funktioniert nicht, ich bekommen die Selection nicht hin, "Variant does not contain an object"
verzweifelter Versuch die Selection zu umgehen:
--- Code: ---wwApp.ActiveDocument.Tables(1).cell(y+1,6).select.MoveRight(wdCell)
--- Ende Code ---
=> "Select ist keine Eigenschaft"
Moveright auf die range losgelassen
--- Code: ---wwApp.ActiveDocument.Tables(1).cell(y+1,6).Range.MoveRight(wdCell)
--- Ende Code ---
=> "Instancemember Moveright does not exist"
Ich bin zu blöd für den MS-Kram >:(
Glombi:
Damit Du Selection. ... verwenden kannst, musst Du es erst setzen:
Set selection = wwApp.Selection
Andreas
Barbara:
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:
--- Code: ---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
--- Ende Code ---
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
--- Code: ---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
--- Ende Code ---
aus der VB Hilfe
--- Zitat ---ActiveDocument.Paragraphs(1).Range.Select
Selection.CopyFormat
ActiveDocument.Paragraphs(2).Range.Select
Selection.PasteFormat
--- Ende Zitat ---
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?
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln