Hallo zusammen,
ich fange gerade an mich mit VBA zu beschaeftigen und habe nach einem Tutorial eine simple Uebergabe aus Excel zu Word nachgebaut.
Das ganze funktioniert auch super und ich bin jetzt dabei, die Codezeilen an meine Befuerfnisse anzupassen.
Eine wahrscheinlich super simple Sache die einfach nicht funktionieren will ist die genaue Positionierung der Tabelle in Word.
Aktuell wird der Bereich aus Excel oben links in Word platziert.
Ich habe auch schon die MoveDown/Right Funktionen gefunden, schaffe es aber nicht diese einzubinden - es passiert nichts, auch keine Fehlermeldung.
Ich frage mich auch was der sinnvollste Weg ist, wenn ich z.b. in der Excel Tabelle einen Bereich habe fuer Name, Datum, Kunde etc, darunter dann ein freies Textfeld habe um direkt in Word ein paar Saetze zu schreiben und dann unter diesem freien Textfeld der naechste Bereich aus Excel eingefueht wird, z.b. Produktinformationen, Kosten etc.
Hier mal eine Beispielgrafik:
https://abload.de/img/excel_to_worddairl.jpg
Ein weiteres Problem ist, dass mit dem aktuellen Code das Dokument ja jedes mal neu geoeffnet wird und wenn ich z.b. schon Text geschrieben habe, wird das Dokument zurueckgesetzt und ich habe wieder nur den importierten Bereich aus Excel.
Daher dachte ich, ob man irgendwie eine Tabelle/Code-Bereich in Word erstellt und in diese dann aus Excel die Tabellen importiert.
Sry, mir fehlen auch irgendwie die Begriffee fuer die ganzen Sachen, weiss nicht nach was ich genau suchen muss.
Hier der Code, ist nach einem Youtube-Tutorial:
Sub ActivateWordTransferData()
Worksheets("Tabelle1").UsedRange.Copy
Dim wdapp As Object, wddoc As Object
Dim strdocname As String
On Error Resume Next
Set wdapp = GetObject(, "Word.Application")
If Err.Number = 429 Then
Err.Clear
Set wdapp = CreateObject("Word.Application")
End If
wdapp.Visible = True
strdocname = "Z:\Isabel\excel_to_word.docx"
If Dir(strdocname) = "" Then
MsgBox "The file " & strdocname & vbCrLf & "was not found " & vbCrLf & "Z:\Isabel\.", vbExclamation, "The document does not exist."
Exit Sub
End If
wdapp.Activate
Set wddoc = wdapp.Documents(strdocname)
If wddoc Is Nothing Then Set wddoc = wdapp.Documents.Open(strdocname)
wddoc.Activate
wddoc.Range.Paste
wddoc.Save
wddoc.Quit
Set wddoc = Nothing
Set wdapp = Nothing
Application.CutCopyMode = False
End Sub
Viele Gruesse und Danke,
isabel
|