Excel VBA - Tabelle in Word Datei kopieren

Allan Sche Sar

Lt. Commander
Registriert
Jan. 2004
Beiträge
1.891
Hallo ihr, ich komme nicht weiter bei meiner gestellten Aufgabe.

Ich habe Excel-Tabellen (sehr sehr viele die immer nach dem gleichen Schema aufgebaut sind). Diese müssen in ein Word Dokument kopiert werden (an einer bestimmte Stelle) und dann die Tabelle in Word mit Beschriftung beschriftet werden.

Das Problem ist aber, dass ich, nachdem ich meine Excel-Tabelle formatiert und kopiert habe, nicht in das Word Dokument wechseln kann.

Daher meine beiden Fragen:
  1. Wie Wechsele ich vom Excel-Sheet zu meinem Word Dokument?
  2. Wie finde ich das letzte Kriterium in der Suche, wenn es zum Beispiel 3 oder 4 Treffer gibt?

Zur besseren Verdeutlichung habe ich meine Word und Excel Datei angehängt. Außerdem noch die Information, dass ich mit Office 2010 arbeite und die Word Datei nicht als Vorlage (*.dot) Vorliegen kann. Diese unterscheidet sich je nach Datei im Inhalt - nicht im Aufbau, wird aber vorher von einem anderen Makro erstellt (nicht von mir geschrieben und Arbeitet auch nicht mit Excel zusammen).
Die Tabelle soll dann unter das letzte Bild mit dem Bezeichnung "Figure 3: FA001" eingefügt werden. Also die Tabellen werden immer nach dem letzten Treffer eingeordnet.

Könnt ihr mir weiterhelfen? Denn selbst die Suche bei Google hat kein Erfolg gebracht.
 

Anhänge

  • Beispiel_Word_kopie.zip
    61,4 KB · Aufrufe: 371
beispiel was ich nach kurzem googeln gefunden habe und welches funktioniert

Sub Test()


Dim objWord
Dim objDoc

Dim objSelection

Range("B3").Copy
Set objWord = CreateObject("Word.Application")
Set objDoc = objWord.Documents.Add
objWord.Visible = True
Set objSelection = objWord.Selection
objSelection.Paste


End Sub

Kopiert die Zelle B3 nach Word

Das Word Dokument öffnen kann man auch anders lösen

https://msdn.microsoft.com/en-us/library/office/ff835182.aspx
 
Zuletzt bearbeitet:
Das hatte ich heute auch schon mal nur war es mit nicht möglich die Zeile:
Code:
Set objDoc = objWord.Documents.Add
Gegen mein bestehendes Word Dokument auszutauschen.

Geschrieben hatte ich dann:
Code:
Set objDoc = objWord.Documents.Open Datei_Pfad

Da Problem daran ist, dass dieser Ausdruck mit Set nicht funktioniert. Also wie kann ich das anders schreiben?
 
Blödstell: was verböte dir denn das Doc stinkormal im Code zu öffnen und es dann (erst) zu einem Objekt zu stempeln?!

CN8
 
Ich bekomme das Objekt (Word Datei) nach dem öffnen nicht mehr angesprochen. Das ist mein Problem.
Also wenn ich:
Code:
objWord.Documents.Open Datei_Pfad
schreibe, dann wird das Objekt geöffnet, aber ich kann es nicht ansprechen.

Ich werde es morgen noch einmal probieren. Heute geht scheinbar gar nicht mehr bei, wobei das Problem offensichtlich simpel ist, wenn ich dich richtig verstehe cumulonimbus8
 
Sub Test()

Dim objSelection

Range("B3").Copy

Set WordApp = CreateObject("word.Application")
WordApp.Documents.Open "C:\Users\xxx\Desktop\Dateien\Vorlage.doc"
WordApp.Visible = True

Set objSelection = WordApp.Selection
objSelection.Paste

End Sub

dieser Code funktioniert bei mir.

hast du im VBA Editor unter Extras->Verweise den Verweis auf Microsoft.Word Object Library gesetzt?
 
Ich zweifele am Zwang zum Visible, habe das aber noch nicht probiert.

Warum (zum Kuckcuk) überhaupt diese Operation mit SET? Ich kann auch direkt referenzieren. Oder einfach alles über WITH abfrühstücken.

SET ist meist nur eine Handhabungsvereinfachung um einem Ding einen kürzeren, sprechenderen Namen zu geben. Außer ich kann ein Objekt gar nicht anders greifen, und diese Not sehe ich hier nicht.

CN8
 
Wer schreibt das es einen Zwang gibt zum Visible?

Aber ich nehme mal an du willst das Ergebnis deines Programms begutachten, dafür wäre es nicht schlecht wenn man das Word File auch sieht in das man was reinkopiert.

aber du hast recht ein SET ist hier unnötig.

Sub Test()

Range("B3").Copy

Set WordApp = CreateObject("word.Application")
WordApp.Documents.Open "C:\Users\Philipp\Desktop\Dateien\Vorlage.doc"
WordApp.Visible = True

WordApp.Selection.Paste

End Sub
 
Zuletzt bearbeitet:
Ich klebe nun halt ungern ein ;)
Eher TypeText oder analoge Dinge; und auf Tabellen stehe ich im Moment gar nicht (akute Allergie)… Da würde ich eher in Word eine Tabelle anlegen und die dann mit den Werten aus XL füttern statt Ranges nei'zu'pappe.
Ob ich dazu das DOC sehen müsste oder nicht ist mir unklar; ein Makro soll in diesen Fällen ohne meine Eingriffe ›liefern‹ (und das DOC auch gleich speichernd schließen).

Man sieht sich :D
CN8
 
Ihr beide seit super, ich kann nun an der ersten Stelle im Word Dokument meine Tabelle einkopieren, aber ich muss dazu vorher noch ein Kriterium finden und nach dem letzten Kriterium die Tabelle kopieren.

Mir folgenden Code zähle ich wie häufig das Kriterium vorkommt:
Code:
 Dim strText As String
 Dim lngAnzahl As Long
 Dim strGesucht As String

     strText = objwd.Range.Text
     strGesucht = "A001"
     strGesucht = UCase(strGesucht)
     strText = UCase(strText) 'Groß/kleinschreibung unbeachtet lassen'
     lngAnzahl = (Len(strText) - Len(Replace(strText, strGesucht, "", 1, -1, 1))) / Len(strGesucht)
    
     MsgBox "das Wort: " & strGesucht & " kommt " & lngAnzahl & " mal darin vor!", , "Demo!"

Mein Kriterium A001, derzeit statisch, finde ich 4 mal, aber ich kann den Cursor nicht platzieren. Wenn ihr mir also helfen könnt den Cursor zum 4 Suchergebnis zu platzieren, seit ihr beiden meine Überhelden.
 
Öh, ja, gut. Aber warum? Oder aus meiner Warte gesehen: kann man nicht anders angreifen denn über solche Suchen?!

CN8
 
Da lässt sich immer was drehen. (Ich kann diese Suchfunktionen der Oberfläche auch nicht recht leiden.)
Aber woher könnte eine programmierte Suche wissen, dass immer der 4. Treffer der ist der dann der Aufhänger der Folgeaktion ist?

CN8
 
Es wurde reichen, wenn der Cursor in die Zeile des Suchergebnis gesetzt wird. Den Rest könnte ich selbst hinbekommen.
Wenn ich in Word mit Strg + F suche, dann werden die Suchergebnisse orange markiert und ich kann mit den Pfeiltasten zu den Ergebnissen springen. Aber diese Suche bekomme ich nicht hin.
 
Auch wenn es mir eigentlich zu dämlich ist auf solche Trollkommentare zu Antworten, aber erkläre mir doch bitte ausführlich, wie es mit OpenOffice funktionieren soll über 400 Tabellen an die korrekte Position zu setzen.

Ich bin gespannt, was jetzt kommt :rolleyes:
 
So unmöglich wie mit Office (id est: VBA) wenn diese konkreten Stellen vom Prog aus nicht identifiziert (gewiss aber gefunden) werden können.

Meiner einer hat dumm in Excel Zelle um Zelle abgegrast; meist mit gewissen Vorgaben oder der tumben Logik, dass ich erst «Sau» finden muss bevor sich die Suche nach «Eber» lohnt.

CN8
 
Zurück
Oben