theeternalphenom
Goto Top

Mit Excel Makro Wordvorlage öffnen und Daten von Excel nach Word kopieren

Hallo Forengemeinde,

ich hätte gerne ein Problem.

Ich soll eine automatisierte Rechnung in Excel erstellen. Das ganze ist ein Schulprojekt, welches ohne Vorgabe des Lösungsweges erstellt werden soll. Ich habe die ganze Geschichte über eine UserForm gelöst. Bei der ganzen Sache funktioniert alles ohne Probleme außer eine Kleinigkeit.

Ich möchte die gesamte Rechnung in Word exportieren. Prinzipiell funktioniert dies auch. Mir ist aber die Idee gekommen ein Vorlage mit einer optisch ansprechenderen Kopf- und Fußzeile zu nutzen. Nach längerem suchen im Netz habe ich diverse Codes zum Lösen des Problems gefunden. Leider hat kein Code die gesamt gewünschten Funktionen. Eigentlich alle Codes haben entweder eine neue Word Datei geöffnet oder eine definierte Datei.
Durch etwas herum experimentieren bin ich zu folgendem Code gekommen:

Private Sub CommandButton5_Click()
Dim AppWord As Word.Application

Set AppWord = CreateObject("Word.Application")  
AppWord.Visible = True

Sheets("Tabelle1").Range(Cells(1, 1), Cells(50, 7)).Copy  
AppWord.Documents.Add
AppWord.Selection.Paste

Application.CutCopyMode = False

Set AppWord = Nothing
End Sub 

Das Programm kopiert die Rechnung in ein neues Worddokument. Bisher sind alle Versuche gescheitert eine spezielle Worddatei zu öffnen. Entweder ich wurde von Fehlermeldungen zu geschüttet oder die Vorlage wurde geöffnet und für die Rechnung wurde ein neues Dokument geöffnet.

Momentan bin ich mit meinem Latein am Ende.
Ich würde mich über etwas Hilfe sehr freuen.

Schon einmal vielen Dank für eure Bemühungen im voraus.

Mit vorweihnachtlichen Grüßen

duffman521

Content-Key: 156110

Url: https://administrator.de/contentid/156110

Ausgedruckt am: 29.03.2024 um 00:03 Uhr

Mitglied: 76109
76109 01.12.2010 um 19:35:26 Uhr
Goto Top
Hallo duffman521!

Versuchs mal so:
Const wdMove = 0        'Word-Konstanten  
Const wdLine = 5
Const wdStory = 6

Const InsertLine = 4    'Word-Einfügzeile  

Const DocPath = "E:\Test\Test.doc"	'Word-Dokument  

Private Sub CommandButton5_Click()
    Dim AppWord As Object

    Set AppWord = CreateObject("Word.Application")  
    
    Sheets("Tabelle1").Range("A1:G50").Copy  
    
    With AppWord
        .Visible = True
        .Documents.Open DocPath
         With .Selection
            .HomeKey Unit:=wdStory, Extend:=wdMove      'Position 1. Zeile setzen  
            .MoveDown Unit:=wdLine, Count:=InsertLine   'Position n. Zeilen nach unten  
            .Paste
         End With
    End With

    Set AppWord = Nothing
    
    Application.CutCopyMode = False
End Sub
Wobei die Einfügzeile im Dokument schon existieren muss. D.h. per Cursor-Tasten navigierbar.

Gruß Dieter

[edit] Codezeile 22 in ein einfaches Paste geändert [/edit]
Mitglied: TheEternalPhenom
TheEternalPhenom 02.12.2010 um 10:02:10 Uhr
Goto Top
Hallo didi1954,

vielen Dank für deine Hilfe ich hätte da aber noch ein Problem.

Zitat von @76109:
Wobei die Einfügzeile im Dokument schon existieren muss. D.h. per Cursor-Tasten navigierbar.

Wie darf ich das verstehen?

Ich nutze momentan ein Worddokument mit einr Kopf- und Fußzeile. Beim speichern des Dokumentes steht der Cursor im eigentlichen Dokument (nicht in Kopf- oder Fußzeile) in der ersten Zeile.
Ich erhalte in Zeile 22 die Fehlermeldung:

Laufzeitfehler '428':

Objekt unterstützt diese Eigenschaft oder Methode nicht.


Ich vor dem ausführen des Codes nur den Pfad der Datei und die Range verändert. Es dürfte also nicht an meinen Änderungen liegen. Kann es ggf. an Office 2000 liegen?

Gruß

duffman521
Mitglied: 76109
76109 02.12.2010 um 16:53:19 Uhr
Goto Top
Hallo duffman521!

Zitat von @TheEternalPhenom:
> Wobei die Einfügzeile im Dokument schon existieren muss. D.h. per Cursor-Tasten navigierbar.

Wie darf ich das verstehen?
Mhm, soll heißen, dass der MoveDown nur funktioniert, wenn die entsprechende Zeile mit den Cursor-Tasten (Pfeil-Unten) angesteuert werden kann. Z.B. Neues Dokument 4 mal Return drücken, dann hat das Dokument schon mal 5 Zeilen und mit MoveHome wird die Zeile 1 angesteuert und mit anschließendem MoveDown 4 Zeilen nach unten (= Zeile 5). Ansonsten müsste die entsprechende Zeile per Paragraphs.Add - sowas in der Art - erst erzeugt werden.

Im Beispielcode habe ich gleich auf die Möglichkeit hinweisen wollen, wie die Tabelle auch wahlweise in einer anderen Zeile als der 1. Zeile per Move-Anweisungen eingefügt werden kannface-wink

Ich nutze momentan ein Worddokument mit einr Kopf- und Fußzeile. Beim speichern des Dokumentes steht der Cursor im
eigentlichen Dokument (nicht in Kopf- oder Fußzeile) in der ersten Zeile.
Die erste Text-Zeile entspricht MoveHome.
Ich erhalte in Zeile 22 die Fehlermeldung:
Word 2000 keine Ahnung? Sollte in Codezeile 22 mit:
.Paste
genauso funktionieren

Gruß Dieter

[edit] obigen Code entsprechend geändert [/edit]
Mitglied: TheEternalPhenom
TheEternalPhenom 02.12.2010 um 17:14:33 Uhr
Goto Top
Ich merke gerade das ich heute morgen auf der Leitung stand bzw. saß.

Jetzt ergibt alles Sinn. Funktioniert mit .Paste einwandfrei.

Vielen Herzlichen Dank für die Hilfe. Jetzt werden mich meine Klassenkameraden noch mehr hassen. *g*

Gruß

duffman521
Mitglied: 76109
76109 04.12.2010 um 18:50:30 Uhr
Goto Top
Hallo duffman521!

Zitat von @TheEternalPhenom:
Ich merke gerade das ich heute morgen auf der Leitung stand bzw. saß.
War mir beim verfassen schon irgendwie klar, dass die Erklärung etwas unglücklich ausgedrückt istface-sad
Jetzt ergibt alles Sinn. Funktioniert mit .Paste einwandfrei.
Freu mich zu hörenface-wink
Vielen Herzlichen Dank für die Hilfe.
Yepp, gern geschehenface-wink
Jetzt werden mich meine Klassenkameraden noch mehr hassen. *g*
Besser Dich (Streber) als mich face-smile

Gruß Dieter