Autor Thema: Erzeugen von Tabellen in MS-Word  (Gelesen 3443 mal)

Offline Alirion

  • Frischling
  • *
  • Beiträge: 41
  • Geschlecht: Männlich
  • Nicht`s ist so, wie es scheint!
Erzeugen von Tabellen in MS-Word
« am: 26.06.03 - 08:49:53 »
Hallo zusammen,

folgendes Problem:

In einem Notesdokument werden Daten in Dokumenten erzeugt, die nach MS-Word exportiert werden sollen. Dabei ist die Anzahl der Dokumente unbegrenzt.
Aus den Dokumenten sollen verschiedene Tabellen in Word erstellt werden. Anzahl der Tabellen ergeben sich aus einer Logik aus den Dokumenten heraus.

Was ich benötige, ist eine Variante, bei der ich die von mir benötigten Tabellen im Hintergrund erzeugen und dann im Worddokument anzeigen lassen kann.

Bin für jeden Rat dankbar.

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Erzeugen von Tabellen in MS-Word
« Antwort #1 am: 26.06.03 - 09:44:51 »
... zeichne in Word ein Makro auf, mit dem du die Erstellung von Tabellen, Zeilen hinzufügen - eben all der Jobs di du benötigst - aufzeichnest. Dann schau dir den VBA-Code in Word an - daraus kannst du die OLE-Objekte ableiten.

... VBA verwendet für die Parameter Konstanten. In der Lotus-Sandbox findest du eine DB mit allen Konstanten zu Word und EXCEL...

... solltest du damit nicht klar kommen, dann melde dich nochmal. Ich habe zuhause noch eine DB, in der ich dynamisch Tabellen in Word erstelle...

ata
Grüßle Toni :)

Offline Alirion

  • Frischling
  • *
  • Beiträge: 41
  • Geschlecht: Männlich
  • Nicht`s ist so, wie es scheint!
Re:Erzeugen von Tabellen in MS-Word
« Antwort #2 am: 26.06.03 - 09:48:54 »
Danke erstmal auch für diese SUPERSCHNELLE Antwort.

Um die Datenbank würde ich doch gerne Bitten, da ich zwar in Script sehr gut klar komme, aber halt nur Notes Intern.

Wie willst Du die DB mir schicken?

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Erzeugen von Tabellen in MS-Word
« Antwort #3 am: 26.06.03 - 11:22:21 »
... ich werde den abgespeckten Code zur Verfügung stellen - entweder hier im Forum oder bei mir auf der Homepage - oder beides...

ata
Grüßle Toni :)

Offline Alirion

  • Frischling
  • *
  • Beiträge: 41
  • Geschlecht: Männlich
  • Nicht`s ist so, wie es scheint!
Re:Erzeugen von Tabellen in MS-Word
« Antwort #4 am: 26.06.03 - 12:05:12 »
Es muss wirklich nicht gleich heute sein, aber morgen wäre schon klasse!

Wenn das klappen würde wär`s echt super.

Vorab schon besten Dank und war echt superschnell.

Deine Homepage hat klasse features!!!!!

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Erzeugen von Tabellen in MS-Word
« Antwort #5 am: 26.06.03 - 12:10:58 »
... danke für die Blumen  ;D

ata
Grüßle Toni :)

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Erzeugen von Tabellen in MS-Word
« Antwort #6 am: 27.06.03 - 23:53:08 »
... hatte viel zu tun - hier nun Code-Schnipsel zu MS-WORD-OLE

Code
   ' Konstanten für Word zur Absatzformatierung
   Const wdAlignParagraphLeft = 0
   Const wdAlignParagraphCenter = 1
   Const wdAlignParagraphRight = 2
   ' # weitere Konstanten findest du in der Konstanten-DB in der Sandbox...
... Word als Objekt initialisieren
Code
   Dim wordDocObject As Variant
   Dim wordAppObject As Variant  ' = wordApplicationObject
   Dim WordDoc As Variant ' Dokumentvariable für Handling' Instanz zur Klärung, ob Word bereits geöffnet ist
   Dim TemplatePath As String
                
   Set wordAppObject = Nothing
   On Error Resume Next
   Set wordAppObject = GetObject("","Word.Application")
   If wordAppObject Is Nothing Then Set wordAppObject = CreateObject("Word.Application")   
   
   ' Zuweisung des Standartpfades für Vorlagen
   TemplatePath = wordAppObject.Options.DefaultFilePath(3)
   ' Wordfenster   
   wordAppObject.Visible = True ' # Erstellung vollzieht sich im Frontend - False = nur im Backend
   
   ' Öffnen eines neuen Word-File anhand der Standardvorlage und Zuweisung in Variable WordDoc für Handling
   Call wordAppObject.Documents.Add(TemplatePath)   'TemplatePath+WordVorlage
   Set WordDoc = wordAppObject.ActiveDocument

... Eine Überschrift mit bestimmter Formatierung einfügen:
Code
' Absatz mit der Überschrift einfügen
   WordDoc.Paragraphs.Add
   Set wordParagraphObject = WordDoc.Paragraphs(1)
   With wordParagraphObject
      .Range.Font.Size = 24
      .Range.Font.Bold = True
      .Range.Font.Name = "Arial"
      .Range.font.ColorIndex = 2 ' Blau
      .Range.Text = "Deine Überschrift ' Überschrift
      .Alignment = wdAlignParagraphLeft
      .SpaceAfter = 20  ' ... bestimmt den Zeilenabstand
   End With

... eine Tabelle erstellen mit 3 Spalten und einer Zeile
Code
   WordDoc.Paragraphs.Add
   Set wordParagraphObject = WordDoc.Paragraphs(2)             
   With wordParagraphObject
      .Range.Font.Size = 10
      .Range.Font.Bold = False
      .SpaceAfter = 3
   End With 
   Set wordRangeObject = wordParagraphObject.Range
   Set wordTableObject = WordDoc.Tables.Add(wordRangeObject, 1, 3) '  1 entspricht Zeilen, 3 entspricht Spalten
   ' Deaktivieren der Zelenumrandung   
   With WordDoc.Tables(1).Borders
      .InsideLineStyle = wdLineStyleNone
      .OutsideLineStyle= wdLineStyleNone
   End With

   ' Neue Zeile in die Tabelle aufnehmen
   wordDoc.Tables(1).Rows.Add 

... einer Zelle Werte zuweisen
Code
   Set wordCellObject = WordDoc.Tables(1).Cell(1,1) ' # Cell( Zeile , Spalte )
   wordCellObject.Column.Width = 125 ' # Breite
   Set wordParagraphObject = WordDoc.Paragraphs.Add (wordCellObject.Range)
   With wordParagraphObject
      .Range.Font.Size = Size
      .Range.Font.Name = "Arial"
      .Range.Font.Bold = True
      .Range.Text = "Das ist der Text, der eingefügt werden soll"
      .Alignment = wdAlignLeft
      
   End With

... speichern, ausdrucken und beenden der Word-Instanz
Code
'  ###  Dokument speichern, Referenz- Instanzenzähler zurücksetzen ######
Pfad = "C:\Temp\Deine_Datei.doc"
Call WordDoc.ActiveWindow.Document.SaveAs(Pfad)
         ' Ausdruck des Dokumentes         
         ' Call WordDoc.ActiveWindow.Document.PrintOut
Call WordDoc.ActiveWindow.Document.Close
Set wordAppObject = Nothing 
Set WordDoc = Nothing

... bleibt noch zu bemerken - das sind Schnipsel - die Ojekte sind nicht ordentlich dimensioniert - der eigentliche Code muß entsprechend strukturiert erstellt werden...

... ich verwende auch Konstanten aus Word - die müssen noch entsprechend deklariert werden...

... ich hoffe das hilft schon mal ein bißchen...

ata
« Letzte Änderung: 28.06.03 - 00:26:59 von ata »
Grüßle Toni :)

Offline Alirion

  • Frischling
  • *
  • Beiträge: 41
  • Geschlecht: Männlich
  • Nicht`s ist so, wie es scheint!
Re:Erzeugen von Tabellen in MS-Word
« Antwort #7 am: 01.07.03 - 10:47:46 »
Hat soweit sehr gut geklappt.

Jetzt ein weiteres Problem:

Wie kann ich in der erzeugten Tabelle Zellen miteinander verbinden und dann Text hinzufügen.

Schließlich soll die Tabelle im entsprechenden Format erscheinen.

Danke vorab!

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Erzeugen von Tabellen in MS-Word
« Antwort #8 am: 01.07.03 - 16:26:12 »
... cih ahbe dir oben bereits einen Tip dazu gegeben, wie man an die Objekte herankommt - hast du es damit denn schon mal probiert - ich müßte es mir genau so herauslesen und ausprobieren...

ata
Grüßle Toni :)

Offline Alirion

  • Frischling
  • *
  • Beiträge: 41
  • Geschlecht: Männlich
  • Nicht`s ist so, wie es scheint!
Re:Erzeugen von Tabellen in MS-Word
« Antwort #9 am: 01.07.03 - 20:06:32 »
Hat jetzt alles gut geklappt! Danke!

Noch eine Frage:

Wie setze ich den Focus des Word-Objektes auf ein bestimmte Bookmark, damit ich die Tabelle nachträglich formatieren kann?

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Erzeugen von Tabellen in MS-Word
« Antwort #10 am: 01.07.03 - 20:10:00 »
... eine Bookmark ist ein Objekt und eine Tabelle ebenso - nicht so einfach vermengen - as möchtest du - an einer Bookmark was bearbeiten oder in einer Tabelle in einer bestimmten Zelle...?

ata
Grüßle Toni :)

Offline Alirion

  • Frischling
  • *
  • Beiträge: 41
  • Geschlecht: Männlich
  • Nicht`s ist so, wie es scheint!
Re:Erzeugen von Tabellen in MS-Word
« Antwort #11 am: 01.07.03 - 23:06:00 »
Ich möchte gerne in eine Tabelle gelangen, die ich bevor Sie befüllt wird, formatieren möchte.
Innerhalb des Worddokumentes habe ich eine unbestimmte Zahl von Grafiken, deren Ausdehnung ich noch nicht erfassen kann.
Die Formatierung der Zellen der Tabelle soll mittels mergen geschehen, das heißt, ich will Zellen verbinden.

Mein Word-Objekt steht an dem Anfang des Dokumentes. Wenn ich meine Bookmarks gefüllt habe und ich zu der bestimmten Tabelle mittels dem Letter und Range gelange, steht mein Word Objekt noch am Anfang.

Irgendwie muss ich aber zu der Tabelle gelangen, damit ich z.B. mit:

"Call Word.Selection.MoveRight(wdCharacter,3, wdExtend)
Call Word.Selection.Cells.Merge
Call Word.Selection.MoveDown"

arbeiten kann.

Dieser Weg war bisher sehr erfolgreich bei meinem Problem.

Aber jetzt reicht das nicht mehr.

Ich weiss, das ich Bookmarks füllen kann, aber nicht, wie ich sie als "Anker" verwende!

Für Rat bin ich dankbar.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz