Hi Ben,
hey genial, tausend Dank, funktioniert super! ![laugh laugh](https://excel.vba-forum.de/ckeditor/plugins/smiley/images/teeth_smile.png)
Danke auch für den Tipp mit den Steuerzeichen. Die verkürzte Version geht in 365 nicht.
Wenn du magst, hätte ich noch eine Sache die mir in dieser Abfrage aktuell noch Kopfzerbrechen bereitet:
Ich habe probiert, dass man eine bestimmte Worddatei aus einem vorgegebenen Pfad auswählt und öffnet, das aber nicht hinbekommen.
es wird zwar Word geöffnet, und anschließend kann ich auch im Explorer wählen, die "richtige" Datei öffnet sich allerdings nicht, und es werden dementsprechend auch keine Daten nach Excel exportiert. Ds ist der Codeschnipsel, ganz unten füge ich nochmal die komplette Abfrage ein:
Dim dateipfad As string
Dim dateiname as string
Dim dateiauswahl as FileDialob
Set Dateiauswahl = application.file Dialog (msoFiledialogFilePicker)
With Dateiauswahl
.Title = "wählen Sie eine Datei aus"
.Filters.Clear
.Filters.Add "Word-Dateien", "*.doc*; *.docx"
.AllowMulitiSelect = False
If .show <> -1 Then
Exit Sub
End if
Dateipfad = Left(.SelectedItems (1), InStrRev (.selectedItems (1), "/"))
Dateiname = Mid(SelectedItems (1), InStrRev (.selectedItems (1), "/")+1)
d.open (dateipfad & dateiname)
hier der komplette Code:
Sub ExportVonWordInExcel4automatisiert()
'Variable definieren
Dim w As Word.Application
Dim d As Word.Document
Dim tbl As Word.Table, tblRow As Word.Row
Dim xltbl As Integer, xlcol As Integer
Dim ws As Worksheet
Dim i As Long
Dim dateipfad As String
Dim dateiname As String
Dim dateiauswahl As FileDialog
'geöffnete Word-Vorlage als aktives Dokument kennzeichnen
Set ws = ActiveSheet
On Error Resume Next
Set w = GetObject("word.application")
If Err.Number <> 0 Then
Set w = CreateObject(Word.Application)
Err.Clear
Set w = CreateObject("word.application")
w.Visible = True
'w.WindowState = wdWindowStateMaximize
'Else: w.Activate
'w.Visible = True
'w.WindowState = wdWindowStateMaximize
End If
'word öffnen
'//da sich die Dateinamen ja ständig ändern, wäre die Auswahl aus dem Explorer heraus mein Favorit.
'Mit diesem Schnipsel funktioniert es alternativ optimal: w.Documents.Open "C:\Users\VBA\IDEE 2_mit 2spTabelle.docx"
' deswegen der Versuch hiermit:
Set dateiauswahl = Application.FileDialog(msoFileDialogFilePicker)
With dateiauswahl
.Title = "wählen Sie eine Datei aus"
.Filters.Clear
.Filters.Add "Word-Dateien", "*.doc*; *.docx"
.AllowMultiSelect = False
If .Show <> -1 Then
Exit Sub
End If
dateipfad = Left(.SelectedItems(1), InStrRev(.SelectedItems(1), "/"))
dateiname = Mid(.SelectedItems(1), InStrRev(.SelectedItems(1), "/") + 1)
d.Open (dateipfad & dateiname)
End With
'dokument aktivieren, 1. Artikel Parameter finden und exportieren
Set d = w.ActiveDocument
'letzte Zeile in Word ermitteln:
xltbl = (Worksheets(1).UsedRange.Rows.Count - 1) + Worksheets(1).UsedRange.Row
For Each tbl In d.Tables
xltbl = xltbl + 1
xlcol = 0
For Each tblRow In tbl.Rows
xlcol = xlcol + 1
'Worksheets(1).Cells(xltbl, xlcol).Value = tblRow.Cells(2).Range.Text (hier nimmt er ein Leerzeichen am Ende der Zeile 'mit!!!)
Worksheets(1).Cells(xltbl, xlcol).Value = Left(tblRow.Cells(2).Range.Text, Len(tblRow.Cells(2).Range.Text) - 1)
Next
Next
d.Close False
Set d = Nothing
w.Quit
Set w = Nothing
Set ws = Nothing
End Sub
Viele Grüße, Gabi
|