AW: mehrere Word Documente einbinden
01.05.2007 20:33:00
fcs
Hallo Fettertiger,
vom Ablauf her ist es einfacher die Worddateien als Objekte zu laden, wobei prinzipiell die Vorgehensweise gleich ist.
Nachfolgend Makros für beide Probleme. Du kannst die beiden Makros auch zu einem zusammenfassen. dann entfällt die Schleife mit der Suche nach dem am weitesten unten eingefügten Shape-Objekt. Achte dann darauf, dass im zusammengefassten Makro alle Variablen-Deklarationen enthalten sind.
Gruß
Franz
Sub DateienEinbinden()
' Dateien als Objekte einbinden
Dim oleDatei As OLEObject, wks As Worksheet, Zelle As Range, I%, Abstand%
Dim strFileName$, wb As Workbook, Figur As Shape
Set wks = ActiveSheet
Abstand = 1 'Leere Tabellenzeilen zwischen zwei Dokumenten
Set Zelle = wks.Cells(20, 1) 'Startzelle für Worddateien
For I% = 1 To 15 'Dateienamen inklusive Pfad stehen in Zeilen 1 bis 15 der Spalte 1 (A)
strFileName = wks.Cells(I, 1).Value
If strFileName "" Then
If Dir(strFileName) "" Then
Set oleDatei = wks.OLEObjects.Add(FileName:=strFileName, Link:=False, _
DisplayAsIcon:=False)
oleDatei.Top = Zelle.Top
oleDatei.Left = Zelle.Left + 2
Set Zelle = wks.Cells(oleDatei.BottomRightCell.Row + Abstand + 1, 1)
Else
MsgBox "Folgende Datei nicht gefunden: " & strFileName
End If
End If
Next
Zelle.Select
End Sub
Sub GradikAusExcelDateiEinbinden()
'Grafik aus Ecxeldatei einbinden
Dim wks As Worksheet, Zelle As Range, I%, Abstand%
Dim strFileName$, wb As Workbook, Figur As Shape, wbAktiv As Workbook
Set wbAktiv = ActiveWorkbook
Set wks = ActiveSheet
Abstand = 1 'Leere Tabellenzeilen zwischen zwei Dokumenten
strFileName = wks.Cells(16, 1).Value 'TDS-Dateiname inklusive Pfadangabe
'Unterste Abbildung / Shape-Objekt ermitteln
For Each Figur In wks.Shapes
I% = Application.WorksheetFunction.Max(I%, Figur.BottomRightCell.Row)
Next
Set Zelle = wks.Cells(I% + Abstand + 1, 1)
If strFileName "" Then
If Dir(strFileName) "" Then
Set wb = Workbooks.Open(FileName:=strFileName, ReadOnly:=True)
Set Figur = wb.Worksheets(1).Shapes(1)
Figur.Copy
wbAktiv.Activate
wks.Paste
Set Figur = wks.Shapes(wks.Shapes.Count)
Figur.Top = Zelle.Top
Figur.Left = Zelle.Left + 2
wb.Close savechanges:=False
Set Zelle = wks.Cells(Figur.BottomRightCell.Row + Abstand + 1, 1)
Else
MsgBox "Folgende Datei nicht gefunden: " & strFileName
End If
End If
Zelle.Select
End Sub