Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Excel Daten auslesen mit Word Makro

Forumthread: Excel Daten auslesen mit Word Makro

Excel Daten auslesen mit Word Makro
07.04.2020 13:02:34
Geogar
Hi. Ich möchte mit einem Cmd-Button, welcher sich in einer Word-Datei befindet, einen Code ausführen, um das selbe Word-Dokument als PDF zu speichern. Der Datei-Pfad soll dabei aus einer Excel-Datei gelesen werden aus Zelle E1 im ersten Tabellenblatt. Das Tabellenblatt ist schreibgeschützt, ich weiß aber nicht wo ich
ThisWorkbook.Worksheets("Statistik").Unprotect "1"
ThisWorkbook.Worksheets("Statistik").Protect "1"
einbauen soll. Die Excel-Datei befindet sich im selben Ordner wie das Word-Dokument. Ich habe einen Code zusammengestellt, die beiden Quellen stehen oben im Code, jedoch wird mir hier "Laufzeitfehler" angezeigt. Auch, wenn ich den Schreibschutz raus nehme, da ich wie gesagt nicht weiß, wie ich den Code dafür einbauen soll. Hier jetzt der Code und danke schonmal im vorraus :)
Sub PDF_Speichern()
'https://www.pctipp.ch/praxis/office/word-makro-fuers-speichern-als-pdf-1961452.html
'https://www.herber.de/forum/archiv/196to200/199449_Excel_Daten_von_Word_auslesen.html
Dim strDateiname As String
Dim strPfad As String
Dim strPDF As String
Dim intPosition As Integer
Dim intLaenge As Integer
Dim intEndung As Integer
Dim iCounter As Integer
Set xlApp = CreateObject("Excel.Application")
Set xlWkb = xlApp.Workbooks.Open(ActiveDocument.Path & "\" & "Haupttabelle 3.1.xlsm")
Set xlWks = xlWkb.Worksheets(1)
Set rng = xlWks.Range("E1").CurrentRegion
strPfad = xlWks.Range("E1").CurrentRegion
strDateiname = ActiveDocument.Name
intLaenge = Len(strDateiname)
intPosition = InStrRev(strDateiname, ".")
Select Case intEndung
Case 0
strPDF = strPfad & strDateiname & ".pdf"
Case 3
strDateiname = Left(ActiveDocument.Name, Len(ActiveDocument.Name) - 3)
strPDF = strPfad & strDateiname & Left(strDateiname, i) & "pdf"
Case 4
strDateiname = Left(ActiveDocument.Name, Len(ActiveDocument.Name) - 4)
strPDF = strPfad & strDateiname & Left(strDateiname, i) & "pdf"
Case Else
MsgBox "Die Dateiendung wurde nicht erkannt!", vbExclamation, "Unbekannte Dateiendung"
End Select
ActiveDocument.ExportAsFixedFormat OutputFileName:=strPDF, ExportFormat:=wdExportFormatPDF, _
OpenAfterExport:=True, OptimizeFor:=wdExportOptimizeForPrint, Range:= _
wdExportAllDocument, From:=1, To:=1, Item:=wdExportDocumentContent, _
IncludeDocProps:=True, KeepIRM:=True, CreateBookmarks:= _
wdExportCreateNoBookmarks, DocStructureTags:=True, BitmapMissingFonts:= _
True, UseISO19005_1:=False
End Sub

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel Daten auslesen mit Word Makro
07.04.2020 13:47:01
Luschi
Hallo Geogar,

Der Datei-Pfad soll dabei aus einer Excel-Datei gelesen werden aus Zelle E1 im ersten Tabellenblatt.
Dann ist doch
Set rng = xlWks.Range("E1").CurrentRegion nicht erforderlich
sondern
Set rng = xlWks.Range("E1")
und im Range-Objekt rng ist der Value-Wert der angestrebte Pfad.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Excel Daten auslesen mit Word Makro
07.04.2020 16:21:29
Geogar
Danke für die Antwort. Es speichert jetzt, jedoch nicht im Dateipfad der in der Zelle steht sondern im selben Ordner wie sich die Word und Excel-Datei befinden. Weißt du, wie ich die Zelle einbinden kann?
;
Anzeige
Anzeige

Infobox / Tutorial

Excel Daten auslesen mit Word Makro


Schritt-für-Schritt-Anleitung

  1. Öffne das Word-Dokument, in dem Du den Cmd-Button einfügen möchtest.
  2. Füge einen Cmd-Button hinzu und weise ihm das folgende Makro zu:

    Sub PDF_Speichern()
       Dim strDateiname As String
       Dim strPfad As String
       Dim strPDF As String
       Dim intPosition As Integer
       Dim intLaenge As Integer
       Dim xlApp As Object
       Dim xlWkb As Object
       Dim xlWks As Object
    
       Set xlApp = CreateObject("Excel.Application")
       Set xlWkb = xlApp.Workbooks.Open(ActiveDocument.Path & "\" & "Haupttabelle 3.1.xlsm")
       Set xlWks = xlWkb.Worksheets(1)
    
       ' Unprotect the worksheet if necessary
       ThisWorkbook.Worksheets("Statistik").Unprotect "1"
    
       strPfad = xlWks.Range("E1").Value
       strDateiname = ActiveDocument.Name
       strPDF = strPfad & strDateiname & ".pdf"
    
       ActiveDocument.ExportAsFixedFormat OutputFileName:=strPDF, ExportFormat:=wdExportFormatPDF
    
       xlWkb.Close False
       xlApp.Quit
    End Sub
  3. Speichere die Excel-Datei im gleichen Ordner wie das Word-Dokument.
  4. Teste das Makro, indem Du auf den Cmd-Button klickst. Das PDF sollte im angegebenen Pfad gespeichert werden.

Häufige Fehler und Lösungen

  • Laufzeitfehler: Wenn Du einen Laufzeitfehler erhältst, stelle sicher, dass der Pfad in Zelle E1 korrekt ist und dass die Excel-Datei nicht schreibgeschützt ist. Füge den Code zum Entsperren der Tabelle vor dem Auslesen des Wertes ein:
    ThisWorkbook.Worksheets("Statistik").Unprotect "1"
  • Speicherung im falschen Verzeichnis: Wenn das PDF nicht im richtigen Verzeichnis gespeichert wird, überprüfe den Wert in Zelle E1 und stelle sicher, dass er den vollständigen Pfad enthält.

Alternative Methoden

Anstelle eines Cmd-Buttons in Word kannst Du auch ein Makro direkt in Excel erstellen, um die Daten auszulesen und die PDF-Datei zu speichern. Dies kann durch die Verwendung der Workbook- und Worksheet-Objekte erfolgen, um den Pfad aus der Excel-Datei zu lesen und die PDF-Datei zu erstellen.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie Du den Dateipfad in der Excel-Datei setzen kannst:

  1. Öffne Deine Excel-Datei und gehe zu Zelle E1.
  2. Setze den vollständigen Pfad, z.B.: C:\Users\DeinBenutzername\Documents\.
  3. Vergewissere Dich, dass der Pfad mit einem Backslash (\) endet.

So wird das PDF im gewünschten Verzeichnis gespeichert.


Tipps für Profis

  • Fehlerbehandlung einfügen: Implementiere eine Fehlerbehandlung, um das Makro robuster zu machen:
    On Error GoTo ErrorHandler
    ' Dein Code hier
    Exit Sub
    ErrorHandler:
      MsgBox "Ein Fehler ist aufgetreten: " & Err.Description
  • Sicherheitseinstellungen: Überprüfe die Makrosicherheit in Word, um sicherzustellen, dass sie aktiviert sind.

FAQ: Häufige Fragen

1. Wie kann ich den Schreibschutz der Excel-Datei aufheben?
Füge einfach den Code ThisWorkbook.Worksheets("Statistik").Unprotect "Passwort" vor dem Auslesen der Daten hinzu. Vergiss nicht, das Arbeitsblatt danach wieder zu schützen.

2. Was mache ich, wenn der Dateipfad in Zelle E1 nicht korrekt erkannt wird?
Stelle sicher, dass der Pfad vollständig und korrekt eingegeben ist. Überprüfe auch auf unnötige Leerzeichen oder falsche Zeichen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige