Ich verwende ein Makro in VBA für den Export von Daten aus Excel in Word.VBA-Makro - Exportieren Sie Tabellendaten aus Excel-Datei nach Word und erstellen Sie einen Abschnitt für jedes Arbeitsblatt
Sub ExportToWord()
Set obj = CreateObject("Word.Application")
obj.Visible = True
Set newobj = obj.Documents.Add
For Each ws In ActiveWorkbook.Sheets
ws.UsedRange.Copy
newobj.ActiveWindow.Selection.PasteExcelTable False, False, False
newobj.ActiveWindow.Selection.InsertBreak Type:=7
Next
newobj.ActiveWindow.Selection.TypeBackspace
newobj.ActiveWindow.Selection.TypeBackspace
obj.Activate
newobj.SaveAs Filename:=Application.ActiveWorkbook.Path & "\OLD\" & Split(ActiveWorkbook.Name, ".")(0)
End Sub
Alle Daten und Tabellen-Layout werden in Word abgerufen werden. Die Prozedur kopiert usedRange jedes Worksheets in Word und Seitenumbrüche nach jedem Arbeitsblatt.
Ich möchte dieses Skript aktualisieren, indem Sie den Namen des Arbeitsblatts kurz vor dem Kopieren/Einfügen von Daten für jedes Arbeitsblatt setzen.
Können Sie mir sagen, wie das geht?
Nach dem Code aktualisiert:
Sub export_workbook_to_word()
Dim sheetName As String
Set obj = CreateObject("Word.Application")
obj.Visible = True
Set newobj = obj.Documents.Add
For Each ws In ActiveWorkbook.Sheets
sheetName = ws.Name
ws.UsedRange.Copy
newobj.ActiveWindow.TypeText ws.Name
newobj.ActiveWindow.Selection.PasteExcelTable False, False, False
newobj.ActiveWindow.Selection.InsertBreak Type:=7
Next
newobj.ActiveWindow.Selection.TypeBackspace
newobj.ActiveWindow.Selection.TypeBackspace
obj.Activate
newobj.SaveAs Filename:=Application.ActiveWorkbook.Path & "\" & Split(ActiveWorkbook.Name, ".")(0)
End Sub
I erhalten, um den Fehler Object doesn't support this property or method
auf der Linie newobj.ActiveWindow.TypeText ws.Name
Könnten Sie mir bitte helfen?
Hallo, Danke für die Antwort, aber es funktioniert nicht. Ich habe den Fehler "ungültiger Qualifier". – coeurdange57
Wenn 'sheetName' eine' Zeichenkette' ist, müssen Sie 'sheetName = ws.Name' anstelle von' sheetName.Text = ws.Name' verwenden. (Oder benutzen Sie einfach 'newobj.ActiveWindow.TypeText ws.Name'.) – YowE3K
Ich weiß nicht, wo ich das hinstellen muss. Wenn ich das vor dem nächsten setze, erhalte ich einen Fehler. Kannst du mir bitte Helfen? – coeurdange57