Registriert seit: 04.02.2019
Version(en): 2010
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.
00202
Nicht registrierter Gast
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
Registriert seit: 04.02.2019
Version(en): 2010
Vielen Dank für die schnelle Antwort.
Könntest Du mir den kompletten Code einmal schreiben?
Bei mir zeigt er gleich einen Debugg-Fehler. :/
00202
Nicht registrierter Gast
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
Registriert seit: 04.02.2019
Version(en): 2010
Es gibt Momente im Leben, wo man einfach merkt wie dumm man ist :D :50:
Vielen Vielen Dank ! Funktioniert alles Bestens ! :18: :100:
Registriert seit: 04.02.2019
Version(en): 2010
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?
00202
Nicht registrierter Gast
Hallo, :19:
das lässt sich z. B. über "
Textmarken/Bookmarks" lösen. Siehe folgendes Beispiel: :21:
Excel -> Word in Textmarken (Bookmarks)...
Registriert seit: 04.02.2019
Version(en): 2010
Vielen Dank.
Dann versuche ich mich da mal schlau zu lesen. :100:
Registriert seit: 29.09.2015
Version(en): 2030,5
10.07.2019, 11:02
(Dieser Beitrag wurde zuletzt bearbeitet: 10.07.2019, 11:03 von snb.)
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.
Registriert seit: 04.02.2019
Version(en): 2010
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: