Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA Excel in bestimmte Word datei
#1
Hallo zusammen,

ich brauche dringend Eure Hilfe.

Meine Excel Tabelle habe ich bereits in ein seperates Word Dokument einfügen lassen.

Hier der Code:

Sub Januar2019_Ausdruck()
Dim wordObj As Object
Dim worddoc As Object
Dim i As Integer
Sheets("Januar 2019").Activate
i = ActiveSheet.UsedRange.Rows.Count
Range("A12:J44").Copy
Set wordObj = CreateObject("word.application")
wordObj.Visible = True
Set worddoc = wordObj.documents.Add
With wordObj.Selection
.typeparagraph
.typeparagraph
End With
wordObj.Selection.PasteSpecial link:=True
Application.CutCopyMode = False
Set wordObj = Nothing
Set worddoc = Nothing
End Sub


Nun möchte ich aber die Excel Tabelle nicht in einem neuen Dokument generieren, sondern in ein bereits bestehendes Dokument (mit Kopf- und Fußzeile) einfügen. Am Besten sollte dann die Tabelle mittig im Word Dokument stehen. Ich habe mich fast überall erkundigt, aber keiner konnte mir einen Ansatz dafür nennen.

Vielleicht könnt ihr mir ja helfen.
Antworten Top
#2
Hallo, :19:

probiere es mal so: :21:


Code:
Const wdAlignRowCenter = 1
Dim wordObj As Object
Dim worddoc As Object
'.............
Set worddoc = wordObj.documents.Open("C:\Temp\Worddokument.docx")
'.............
Application.CutCopyMode = False
With worddoc.Tables(1).Rows
    .LeftIndent = 0
    .Alignment = wdAlignRowCenter
End With
worddoc.Save
Set wordObj = Nothing
Set worddoc = Nothing
________
Servus
Case
Antworten Top
#3
Vielen Dank für die schnelle Antwort.

Könntest Du mir den kompletten Code einmal schreiben?

Bei mir zeigt er gleich einen Debugg-Fehler. :/
Antworten Top
#4
Hallo, :19:

ich habe an deinem Code nichts verändert - lediglich etwas hinzugefügt. Bei mir läuft er. Pfad- und Dateiname muss natürlich angepasst werden. Ob du das ".typeparagraph" brauchst, kannst nur du entscheiden. :21:


Code:
Option Explicit
Sub Januar2019_Ausdruck()
    Const wdAlignRowCenter = 1
    Dim wordObj As Object
    Dim worddoc As Object
    Dim i As Integer
    Sheets("Januar 2019").Activate
    i = ActiveSheet.UsedRange.Rows.Count
    Range("A12:J44").Copy
    Set wordObj = CreateObject("word.application")
    wordObj.Visible = True
    ' Pfad- und Dateiname anpassen!!!!!!!!!!!!!!
    Set worddoc = wordObj.documents.Open("C:\Temp\Worddokument.docx")
    With wordObj.Selection
        .typeparagraph
        .typeparagraph
    End With
    wordObj.Selection.PasteSpecial link:=True
    Application.CutCopyMode = False
    With worddoc.Tables(1).Rows
        .LeftIndent = 0
        .Alignment = wdAlignRowCenter
    End With
    worddoc.Save
    Set wordObj = Nothing
    Set worddoc = Nothing
End Sub
________
Servus
Case
Antworten Top
#5
Es gibt Momente im Leben, wo man einfach merkt wie dumm man ist :D :50:

Vielen Vielen Dank ! Funktioniert alles Bestens ! :18: :100:
Antworten Top
#6
Gibt es irgendwie die Möglichkeit der Tabelle zu sagen, auf welche Position sie in Word rutschen soll? Und kann ich ein Logo mit VBA einprogrammieren und einfügen, so wie es in html die Möglichkeit gibt?
Antworten Top
#7
Hallo, :19:

das lässt sich z. B. über "Textmarken/Bookmarks" lösen. Siehe folgendes Beispiel: :21:

Excel -> Word in Textmarken (Bookmarks)...
________
Servus
Case
Antworten Top
#8
Vielen Dank.

Dann versuche ich mich da mal schlau zu lesen. :100:
Antworten Top
#9
Ich möchte bevorzügen:


Code:
Sub M_snb()
  With CreateObject("Word.document")
    .Content = String(30, vbCr)
    .Fields.Add .Paragraphs(20).Range, 56, "Excel.Sheet.12 " & Replace(ThisWorkbook.FullName, "\", "\\") & " sheet1!R12C1:R14C10  \a \h", False
  End With
End Sub

Verzichte auf Bookmarks in Word, verwende Docvariables.
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#10
Danke erstmal für Eure Hilfe.

Ich hab mal mit Bookmarks angefangen und es gefällt mir auch ganz gut. Leider stehe ich aber noch auf dem Schlauch.

Aktuell sieht mein Code folgendermaßen aus:

Sub januarnachwordkopieren()
Dim wachplan As Object
Dim appword As Object
Set appword = CreateObject("Word.Application")
Set wachplan = appword.Documents.Add("C:\Users\XXXXXX\Desktop\Wachplan.docx")

appword.Visible = True
wachplan.Activate
wachplan.bookmarks("Wochentag").Range.Text = Range("A3")
wachplan.bookmarks("Datum").Range.Text = Range("B3")
wachplan.bookmarks("DG1").Range.Text = Range("C3")
wachplan.bookmarks("Name1").Range.Text = Range("D3")
wachplan.bookmarks("Abt1").Range.Text = Range("E3")
wachplan.bookmarks("DG2").Range.Text = Range("F3")
wachplan.bookmarks("Name2").Range.Text = Range("G3")
wachplan.bookmarks("Abt2").Range.Text = Range("H3")
wachplan.bookmarks("Stand").Range.Text = Range("B2")
wachplan.bookmarks("Monat").Range.Text = Range("B1")
Set wachplan = Nothing
Set appword = Nothing
End Sub

Das funktioniert auch tadellos für die erste Zeile.... Wie sag ich denn dem Programm, dass es alle Tabelleninhalte einfügen soll?

Für "Wochentag" wären das beispielsweise die Zellen A3-A33.... ich könnte natürlich für jede Zeile eine einzelne Bookmark setzen, aber das geht doch bestimmt einfacher :20:
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste