AtNotes Übersicht Willkommen Gast. Bitte einloggen oder registrieren.
29.03.20 - 03:53:33
Übersicht Hilfe Regeln Glossar Suche Einloggen Registrieren
News:
Schnellsuche:
+  Das Notes Forum
|-+  Lotus Notes / Domino Sonstiges
| |-+  OLE/COM-Programmierung
| | |-+  Mal wieder das Thema Export nach WORD
« vorheriges nächstes »
Seiten: [1] 2 3 Nach unten Drucken
Autor Thema: Mal wieder das Thema Export nach WORD  (Gelesen 25486 mal)
C_T
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 272


« am: 13.03.08 - 10:21:58 »

HI Leute

ich habe da mal wieder eine kleine Frage und bräuchte eure Unterstützung.

Ich habe einen Button, mit dem ich markierte DOkumente aus einer Ansicht in ein WordDokument exportieren kann. Dies klappt soweit auch ganz gut. Jedoch möchte ich in diesem Worddokument die Zeile mit dem "TEXT" mit dem Format "Überschrift 3" aus Word belegen, ausserdem möchte ich nachdem das WordDokument komplett gefüllt ist noch ein Inhaltsverzeichnis erstellen.

Das Mit dem Format müsste irgendwie mit "Style" gehen, jeodch hab ich das noch nicht hinbekommen,

das mit dem Inhaltsverzeichnis muss glaube ich mit "TableOfContents" gemacht werden!? Oder irre ich mich bei beidem Total?

Ich hoffe unter euch sind ein paar die sich mit dem Export nach Word besonders gut auskennen.

Hier der Code zum Exportieren der Dokumente:

Code:
Sub Click(Source As Button)
Dim workspace As New NotesUIWorkspace
Dim session As New NotesSession
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Dim db As NotesDatabase
Dim col As NotesDocumentCollection

Dim Ins As Variant

Set db = session.CurrentDatabase
Set col = db.UnprocessedDocuments


Set WordApp = CreateObject("Word.Application") 
Call WordApp.documents.add("c:\Word.dot")
Set WordDoc = WordApp.activedocument

Set Ins=  WordDoc.Paragraphs(WordDoc.Paragraphs.Count).Range

Set doc = col.GetFirstDocument
Do Until doc Is Nothing
Set uidoc = workspace.EditDocument(True, doc)
uidoc.EditMode = True
uidoc.AutoReload = False

WordDoc.Paragraphs(WordDoc.Paragraphs.Count).Style = wdStyleHeading3         <-------------  Eigentlcih müsste das doch mit dieser Zeiel klappen oder?
Call Ins.InsertAfter("TEXT: "+doc.TEST(0)+Chr$(10))

Call WordDoc.ParagraphFormat.Style("Standard")

Call uidoc.GotoField("Text")
Call uidoc.SelectAll
Call uidoc.Copy
If Not Err = 4407 Then
Err = 0
Call Ins.InsertAfter("Text: "+Chr$(10))
Set Past = WordDoc.Content
Call Past.Collapse(wdCollapseEnd)
Call Past.Paste
Call Ins.InsertAfter(Chr$(10))
End If

Call Ins.InsertAfter(Chr$(12))
uidoc.Close(True)
Set doc = col.GetNextDocument(doc)
Loop

Set WordDoc = WordApp.activedocument
End Sub



Schonmal Vielen Dank für eure Hilfe

Gruß Christian T.
« Letzte Änderung: 24.04.08 - 13:37:49 von C_T » Gespeichert

Viele Grüße

Christian T.
Axel
Freund des Hauses!
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 8658


It's not a bug, it's Notes


« Antworten #1 am: 13.03.08 - 10:45:32 »

Code:
[codeWordDoc.Paragraphs(WordDoc.Paragraphs.Count).Style = wdStyleHeading3 ]
       

Wo setzt du den Wert für Count?


Ich habe das mal so gelöst

Wordapp.Selection.Style = wdStyleNormal

Hast du auch die wd-Konstanten definiert?

z.B.
Const wdStyleNormal = -1
Const wdStyleHeading3 = -4


Axel
« Letzte Änderung: 13.03.08 - 10:52:36 von Axel » Gespeichert

Ohne Computer wären wir noch lange nicht hinterm Mond!
C_T
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 272


« Antworten #2 am: 13.03.08 - 10:56:20 »

Das Count brauch ich ja definieren, denn das ist ja "ein Befehl"

und wieso muss ich den die wd sachen definieren? Ich dachte das wäre von Word vorgegeben.....
Gespeichert

Viele Grüße

Christian T.
MadMetzger
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1052


f.k.a. Alexis Pyromanis


« Antworten #3 am: 13.03.08 - 10:59:13 »

Aber woher soll Notes denn wissen, dass das Konstanten von Word sind? Deswegen musst du die Konstanten nochmal in Notes separat deklarieren.
Gespeichert

Axel
Freund des Hauses!
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 8658


It's not a bug, it's Notes


« Antworten #4 am: 13.03.08 - 11:04:05 »

Count ist kein Befehl, sondern eine Eigenschaft. Sie liefert sie anzahl der Absätze in einem Dokument zurück.

Wenn du ein Absatzformat zuweisen willst, dann musst du angeben welchem Absatz.

Hier mal ein Beispiel aus der Word VBA-Hilfe:

Zitat
Dieses Beispiel weist allen Absätzen im aktiven Dokument abwechselnd die Formatvorlagen Überschrift 3 und Normal zu.

For i = 1 To ActiveDocument.Paragraphs.Count
    If i Mod 2 = 0 Then
        ActiveDocument.Paragraphs(i).Style = wdStyleNormal
    Else
        ActiveDocument.Paragraphs(i).Style = wdStyleHeading3
    End If
Next i

Axel
Gespeichert

Ohne Computer wären wir noch lange nicht hinterm Mond!
C_T
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 272


« Antworten #5 am: 13.03.08 - 11:10:55 »

OK Schonmal danke habe ich alles bis jetzt Verstanden und das mit dem Befehl war einfach nur mies ausgedrückt.

Das Beispiel hab ich mir natürlich auch schon angeguckt, jedoch komm ich damit einfach nicht weiter...

Wie muss ich den dann die Konstanten in Notes deklarieren mite dem wd teilen?

Wordapp.Selection.Style = wdStyleNormal

Hast du auch die wd-Konstanten definiert?

z.B.
Const wdStyleNormal = -1
Const wdStyleHeading3 = -4


Irgendwie kann ich mit dem "-1" und "-4" gar ncihts anfagen?

kannst du das genauer erörtern?

Christian

Gespeichert

Viele Grüße

Christian T.
MadMetzger
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1052


f.k.a. Alexis Pyromanis


« Antworten #6 am: 13.03.08 - 11:28:04 »

Die Zahlen sind die tatsächlichen Werte hinter den Konstantennamen.

Irgendwo hier habe ich mal eine Notesdatenbank oder eine lss-Datei mit den Wordkonstanten gesehen, benutz mal die SuFu. Dann brauchst du die auch nicht selbst alle definieren...
Gespeichert

C_T
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 272


« Antworten #7 am: 13.03.08 - 11:31:42 »

Ich habe da acuh eine gefunden, jedoch steht da sowas wie "wdStyleNormal" oder "wdStyleHeading3" nicht drin....

kannst du mir sagen woher du die Werte hsat??

Und sollte der rest meines Codes so laufen oder is da ach noch was falsch?
Gespeichert

Viele Grüße

Christian T.
Axel
Freund des Hauses!
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 8658


It's not a bug, it's Notes


« Antworten #8 am: 13.03.08 - 11:32:18 »

Wie muss ich den dann die Konstanten in Notes deklarieren mite dem wd teilen?

So wie ich dir das in dem Beispiel geschrieben habe.

Const wdStyleNormal = -1

Irgendwie kann ich mit dem "-1" und "-4" gar ncihts anfagen?

kannst du das genauer erörtern?

In Word entspricht -1 der Konstante wdStyleNormal.

Guckst die hier: http://atnotes.de/index.php?topic=34333.0. Da kannst du dir eine Datenbank mit den entsprechenden Definitionen herunterladen. Oder du schaust im VBA-Editor von Word im Objektkatalog und suchst dir die wdStylexxx - Konstanten. Da findest du dann auch welcher Wert hinter einer Konstanten liegt.

Axel
Gespeichert

Ohne Computer wären wir noch lange nicht hinterm Mond!
C_T
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 272


« Antworten #9 am: 13.03.08 - 11:41:57 »

Hey Super soweit klappt es schonmal einwandfrei....


Wenn Ihr meinen zweiten Teil der Frage auch super beantworten könnt wäre das Spitze....

Wie kriege ich jetzt ein Inhaltsverzeichnis in das Dokument rein?
Gespeichert

Viele Grüße

Christian T.
MadMetzger
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1052


f.k.a. Alexis Pyromanis


« Antworten #10 am: 13.03.08 - 11:47:00 »

Ich weiß nicht genau, wie das geht, aber einen Anhaltspunkt kann das Aufzeichnen eines Makros von der Inhaltsverzeichniserzeugung bieten.

Das sagt mein Makro-Rekorder mit Word 2003:
Code:
Sub Inhaltsverzeichnis()
    With ActiveDocument
        .TablesOfContents.Add Range:=Selection.Range, RightAlignPageNumbers:= _
            True, UseHeadingStyles:=True, UpperHeadingLevel:=1, _
            LowerHeadingLevel:=3, IncludePageNumbers:=True, AddedStyles:="", _
            UseHyperlinks:=True, HidePageNumbersInWeb:=True, UseOutlineLevels:= _
            True
        .TablesOfContents(1).TabLeader = wdTabLeaderDots
        .TablesOfContents.Format = wdIndexIndent
    End With
End Sub

Leider sehe ich mich auch nicht direkt in der Lage den Code nach LS zu portieren.

Fraglich ist für mich noch, wie du das Inhaltsverzeichnis dann an die richtige Stelle bekommst... Aber das kommt auf einen Versuch an.
« Letzte Änderung: 13.03.08 - 11:51:14 von MadMetzger » Gespeichert

C_T
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 272


« Antworten #11 am: 13.03.08 - 12:03:22 »

Ich denke das krieg ich schon hin hab mir das auch mal aufgenommen und dann schau ich mal und teste

jetzt habe ich aber direkt wieder 2 fragen....

und zwar

1. wie kriege ich text fett geschrieben? Ich habe folgendes ausprobiert...

Code:

Set Ins =  WordDoc.Paragraphs(WordDoc.Paragraphs.Count).Range
Ins.Bold = True
Call Ins.InsertAfter("TEXT: ")
Ins.Bold = False



2. Wie kann ich den Text den ich aus einem RichText Feld (Notes) nach word "Paste" nochmal bearbeiten und z.b. da auch ein Format drauflegen?
« Letzte Änderung: 24.04.08 - 13:39:02 von C_T » Gespeichert

Viele Grüße

Christian T.
Axel
Freund des Hauses!
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 8658


It's not a bug, it's Notes


« Antworten #12 am: 13.03.08 - 12:07:53 »

Mal aus dem Bauch heraus umgesetzt.

...
   Const wdTabLeaderDots = 1
   Const wdIndexIndent = 0
...
    With WordDoc
        .TablesOfContents.Add
        Range:=WordApp.Selection.Range,
        RightAlignPageNumbers:= True,
        UseHeadingStyles:=True,
        UpperHeadingLevel:=1,
        LowerHeadingLevel:=3
        IncludePageNumbers:=True,
        AddedStyles:="",
        UseHyperlinks:=True,
        HidePageNumbersInWeb:=True,
        UseOutlineLevels:= True
        .TablesOfContents(1).TabLeader = wdTabLeaderDots
        .TablesOfContents.Format = wdIndexIndent
    End With
...

Ich hab's nicht getestet ob's auch wirklich so funktioniert.


Axel
Gespeichert

Ohne Computer wären wir noch lange nicht hinterm Mond!
Axel
Freund des Hauses!
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 8658


It's not a bug, it's Notes


« Antworten #13 am: 13.03.08 - 12:13:35 »

1. wie kriege ich text fett geschrieben? Ich habe folgendes ausprobiert...

Code:

Set Insert =  WordDoc.Paragraphs(WordDoc.Paragraphs.Count).Range
Insert.Bold = True
Call Insert.InsertAfter("Kategorie: ")
Insert.Bold = False



So z.B.

...
WordApp.Selection.Font.Bold = True   'Fett einschalten
WordApp.Selection.TypeText "Kategorie:"
WordApp.Selection.Font.Bold = False  'Fett ausschalten
...

Du kannst dir auch hier http://atnotes.de/index.php?topic=39875.0 noch ein paar Infos holen.



Axel
Gespeichert

Ohne Computer wären wir noch lange nicht hinterm Mond!
C_T
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 272


« Antworten #14 am: 13.03.08 - 13:13:57 »

Leider klappt das mit dem Bold ebend nicht so...

das merkwürdige ist jedoc, wenn ich das Bold mit Italic tausche schreibt er mir den Text Kursiv aber mit Fett klappt es nicht.....
Gespeichert

Viele Grüße

Christian T.
Axel
Freund des Hauses!
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 8658


It's not a bug, it's Notes


« Antworten #15 am: 13.03.08 - 13:17:30 »

Was nutzt du denn für eine Schriftart?


Axel
Gespeichert

Ohne Computer wären wir noch lange nicht hinterm Mond!
C_T
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 272


« Antworten #16 am: 13.03.08 - 13:25:54 »

Arial

und ja habe auch schon versucht die kann Fett darstellen...
« Letzte Änderung: 24.04.08 - 13:01:11 von C_T » Gespeichert

Viele Grüße

Christian T.
C_T
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 272


« Antworten #17 am: 13.03.08 - 15:51:18 »

So Ich habe den Code mehr oder weniger nochmals komplett über den Haufen geworfen. Anbei findet Ihr meinen neuen Code der bis jetzt auch super läuft.


Code:
Sub Click(Source As Button)
Dim workspace As New NotesUIWorkspace
Dim session As New NotesSession
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Dim db As NotesDatabase
Dim col As NotesDocumentCollection

Dim Ins asVariant

Set db = session.CurrentDatabase
Set col = db.UnprocessedDocuments

On Error Resume Next

Const wdStyleNormal = -1
Const wdStyleHeading3 = -4

Set WordApp = CreateObject("Word.Application") 
Call WordApp.documents.add("c:\WORD.dot")
Set WordDoc = WordApp.activedocument

Set Ins =  WordApp.Selection

Set doc = col.GetFirstDocument
Do Until doc Is Nothing
Set uidoc = workspace.EditDocument(True, doc)
uidoc.EditMode = True

With Ins
.Style = wdStyleHeading3
.TypeText "TEXT: "
.TypeText doc.TEST(0) + Chr$(10)
.Style = wdStyleNormal
End With

Err = 0
Call uidoc.GotoField("TEXT")
Call uidoc.SelectAll
Call uidoc.Copy
If Not Err = 4407 Then
With Ins
.Font.Bold = True
.TypeText "TEXT: "+ Chr$(10)
.Font.Bold = False
.Paste
End With
End If

Ins.TypeText Chr$(12)

uidoc.Close(True)
Set doc = col.GetNextDocument(doc)
Loop



Set WordDoc = WordApp.activedocument
End Sub


Jetzt bleiben mir immernoch fragen über bzw. aufgaben die ich erledigen möchte.

1. Weiß jemand von euch wie an den Anfang des Dokumentes springen kann mit dem Cursor?Huh

2. Inhaltsverzeichnis erstellen (Krieg ich schon irgendwie selbst hin)

3. Wieder an den anfange des Dokuments springen (siehe 1)



Vielen Dank schonmal


P.S.

Nimmt das Forum noch spenden an? Ihr habt mir schon so oft geholfen, ich will mich revanchieren.
Schreibt mir einfach dazu ne PN

CU
« Letzte Änderung: 24.04.08 - 13:40:37 von C_T » Gespeichert

Viele Grüße

Christian T.
klaussal
Gast
« Antworten #18 am: 13.03.08 - 15:57:13 »

Zitat
Nimmt das Forum noch spenden an?

JA:


http://atnotes.de/index.php?topic=20132.0

 Smiley Smiley Smiley
Gespeichert
C_T
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 272


« Antworten #19 am: 13.03.08 - 16:04:29 »

@Klaus(s)

Natürlich liest du nur das wichtigeste was?Huh  Grin Grin Grin


Naj wie dem auch sei  Hier die Lösung auf meine eigene Frage

Code:

Set Ins =  WordApp.Selection
With Ins
  .StartOf(wdStory)
  .TypeText "Dies ist ein TEst auf der 1. Seite...." + Chr$(12)
End With
« Letzte Änderung: 24.04.08 - 13:41:14 von C_T » Gespeichert

Viele Grüße

Christian T.
Seiten: [1] 2 3 Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006, Simple Machines Prüfe XHTML 1.0 Prüfe CSS
Impressum Atnotes.de - Powered by Syslords Solutions - Datenschutz | Partner: