Andreas1964
2007-03-20 12:00:12 UTC
Hallo!
Ich möchte gerne 2 Arbeitsmappen zusammenführen, was aber ja nur
bedingt geht.
Sobald eine 2te Instanz geöffnet ist, dann komme ich an diese nicht
dran. Geht das und falls ja, wie?
Mfg, Andreas.
Hier mein bisheriger Code:
Sub Dateien_Zusammenführen()
Dim OurBook As Workbook
Dim NewBook As Workbook
Dim fs, TempDir
Dim Found As Boolean
Set fs = CreateObject("Scripting.FileSystemObject")
'Mehrere Arbeitsmappen offen?
If Workbooks.Count > 1 Then
formZusammenführen.Show
For Each NewBook In Workbooks
If NewBook.Name = WBname Then
Found = True
GoTo CopyIt
End If
Next
End If
'Den User eine Datei auswählne lassen, im temporären Verzeichnis
starten
TempDir = fs.GetSpecialFolder(2)
ChDir fs.GetDriveName(TempDir)
ChDir TempDir
EName = Application.GetOpenFilename("Exceldateien (*.xls), *.xls",
Title:="Excel-Dateien zusammenführen")
If EName = False Then Exit Sub
'Datei schon geöffnet?
Found = False
For Each NewBook In Workbooks
If fs.BuildPath(NewBook.Path, NewBook.Name) = EName Then
Found = True
Exit For
End If
Next
CopyIt:
Application.ScreenUpdating = False
Set OurBook = ActiveWorkbook
If Not Found Then
Workbooks.Open Filename:=EName, ReadOnly:=True
Set NewBook = ActiveWorkbook
End If
For Each S In NewBook.Sheets
S.Copy After:=OurBook.Sheets(OurBook.Sheets.Count)
Next
If Not Found Then NewBook.Close
Application.ScreenUpdating = True
End Sub
Ich möchte gerne 2 Arbeitsmappen zusammenführen, was aber ja nur
bedingt geht.
Sobald eine 2te Instanz geöffnet ist, dann komme ich an diese nicht
dran. Geht das und falls ja, wie?
Mfg, Andreas.
Hier mein bisheriger Code:
Sub Dateien_Zusammenführen()
Dim OurBook As Workbook
Dim NewBook As Workbook
Dim fs, TempDir
Dim Found As Boolean
Set fs = CreateObject("Scripting.FileSystemObject")
'Mehrere Arbeitsmappen offen?
If Workbooks.Count > 1 Then
formZusammenführen.Show
For Each NewBook In Workbooks
If NewBook.Name = WBname Then
Found = True
GoTo CopyIt
End If
Next
End If
'Den User eine Datei auswählne lassen, im temporären Verzeichnis
starten
TempDir = fs.GetSpecialFolder(2)
ChDir fs.GetDriveName(TempDir)
ChDir TempDir
EName = Application.GetOpenFilename("Exceldateien (*.xls), *.xls",
Title:="Excel-Dateien zusammenführen")
If EName = False Then Exit Sub
'Datei schon geöffnet?
Found = False
For Each NewBook In Workbooks
If fs.BuildPath(NewBook.Path, NewBook.Name) = EName Then
Found = True
Exit For
End If
Next
CopyIt:
Application.ScreenUpdating = False
Set OurBook = ActiveWorkbook
If Not Found Then
Workbooks.Open Filename:=EName, ReadOnly:=True
Set NewBook = ActiveWorkbook
End If
For Each S In NewBook.Sheets
S.Copy After:=OurBook.Sheets(OurBook.Sheets.Count)
Next
If Not Found Then NewBook.Close
Application.ScreenUpdating = True
End Sub