AW: versteckte Tabellenblätter laden
15.01.2008 14:40:00
fcs
Hallo Mario,
ob und wie das Wiedereinfügen der Blätter/Daten in die Ursprungsdatei möglich ist hängt davon ab, wie das Blatt A mit den Blättern B und C durch Formeln verknüpft ist.
Falls es keine Formelverknüpfungen zwischen den Blättern gibt, dann kann man die Blätter B und C in der Original-Datei löschen und anschließend die Blätter aus der Kopie ins Original einfügen.
Sub BlattImport()
Dim wbThis As Workbook, wbCopy As Workbook, strCopy
strCopy = Application.GetOpenFilename(Filefilter:="Exceldateien(*.xls),*.xls", _
Title:="Bitte Datei mit Blattkopien öffnen")
If strCopy = False Then Exit Sub
Set wbThis = ThisWorkbook
Set wbCopy = Workbooks.Open(FileName:=strCopy)
wbThis.Sheets("B").Visible = xlSheetVisible
wbThis.Sheets("C").Visible = xlSheetVisible
Application.DisplayAlerts = False
wbThis.Sheets(Array("B", "C")).Delete
Application.DisplayAlerts = True
wbCopy.Sheets("C").Visible = xlSheetVisible
wbCopy.Sheets(Array("B", "C")).Copy After:=wbThis.Sheets("A")
wbCopy.Close savechanges:=False
End Sub
Falls Formelverbindungen existieren, dann ist das Löschen und zurückkopieren der Blätter nicht _
möglich, da dabei Bezüge verloren gehen. In diesem Fall kann man maximal die Inhalte in den Blättern B und C löschen und die Inhalte aus den Blättern der Kopie hineinkopieren.
Sub BlattImport2()
Dim wbThis As Workbook, wbCopy As Workbook, strCopy
strCopy = Application.GetOpenFilename(Filefilter:="Exceldateien(*.xls),*.xls", _
Title:="Bitte Datei mit Blattkopien öffnen")
If strCopy = False Then Exit Sub
Set wbThis = ThisWorkbook
Set wbCopy = Workbooks.Open(FileName:=strCopy)
wbThis.Sheets("B").Visible = xlSheetVisible
wbThis.Sheets("C").Visible = xlSheetVisible
wbThis.Worksheets("B").UsedRange.ClearContents
wbThis.Worksheets("C").UsedRange.ClearContents
wbCopy.Sheets("C").Visible = xlSheetVisible
wbCopy.Worksheets("B").UsedRange.Copy _
Destination:=wbThis.Worksheets("B").Range(wbCopy.Worksheets("B").UsedRange.Address)
wbCopy.Worksheets("C").UsedRange.Copy _
Destination:=wbThis.Worksheets("C").Range(wbCopy.Worksheets("C").UsedRange.Address)
wbCopy.Close savechanges:=False
End Sub
Dieser Kopiervorgang arbeitet aber nur korrekt, wenn an den Tabellen keine struturellen Änderungen vorgenommen wurden sondern nur Inhalte geändert wurden.
Gruß
Franz