PDA

Vollständige Version anzeigen : Kopie eines Sheets mit Verlinkung


Scharlie
22.03.2009, 19:49
Hallo zusammen.

Ich habe mir eine Funktion geschrieben, die mir aus dem aktuellen Workbook die einzelnen Worksheets herauskopiert und in andere Dateien wegspeichert.

Sub splitten(anzahl, SPVerz)
For i = 1 To anzahl
Workbooks("Book2.xls").Sheets(i).Copy
ActiveWorkbook.SaveAs Filename:=SPVerz & "ppt" & i & ".xls", FileFormat:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
ActiveWorkbook.Close
Next
End Sub

Das funktioniert auch alles wunderbar, nur ich bräuchte jetzt eine etwas abgewandelte Form davon, und da komme ich nicht weiter.

Die Zieldateien (die mit nur einem Worksheet) sollen nicht die wirklichen Werte enthalten, sondern nur eine Zellreferenz (=ZelleXY) auf die Quelldatei (mit mehreren Sheets). Also in der Quelldatei steht in Zelle A1 "Text" und in der Zieldatei soll nur "=[Datei]Worksheet!Zelle" stehen.

Wie kann ich dieses Problem lösen?
Hat hier jemand eine Idee?
Vielen Dank schon einmal für eure Hilfe.

Viele Grüße
Scharlie

jinx
22.03.2009, 20:18
Moin, Scharlie,

im genutzten Bereich der kopierten Tabelle die Werte durch die Formel ersetzen - Du hast den Namen und den Pfad der Mappe mit dem Code, den Namen der Tabelle, die Adresse. Was das aber bringen soll, ist mir schleierhaft - es macht nur Sinn, wenn keine Aktualisierung beim Öffnen vorgenommen wird, oder?

P.S.: Das ist eine Sub, keine Funktion (die würde mit Function und nicht mit Sub beginnen und enden). ;)

Scharlie
22.03.2009, 21:58
Hab eine Lösung gefunden Danke trotzdem für die Antworten.

Sub splitten(anzahlWS, SPVerz, Quelldatei)
Dim cletter As String
For i = 1 To anzahlWS
lastR = Workbooks(Quelldatei).Sheets(anzahlWS - i + 1).Cells(Rows.Count, 1).End(xlUp).Row
lastC = Workbooks(Quelldatei).Sheets(anzahlWS - i + 1).Cells(1, Columns.Count).End(xlToLeft).Column

Workbooks(Quelldatei).Sheets(anzahlWS - i + 1).Copy
ActiveWorkbook.SaveAs Filename:=SPVerz & "ppt" & i & ".xls", FileFormat:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
For r = 1 To lastR
For c = 1 To lastC
ActiveWorkbook.ActiveSheet.Cells(r, c).FormulaR1C1 = "=[Book2.xls]Sheet2!R" & r & "C" & c
Next
Next
ActiveWorkbook.Save
ActiveWorkbook.Close
Next
End Sub

jinx
23.03.2009, 04:50
Moin, Scharlie,

wobei ich nicht verstehe, dass immer Tabelle2 als Referenz genommen wird... ;)

ThisWorkbook.Sheets("Sheet2").UsedRange.Copy
Workbooks.Add
ActiveSheet.Paste Link:=True