![]() |
Sheet von einer Excel-Datei in eine andere Exceldatei
Hallo,
Ich möchte einen Sheet einer Excel-Datei in eine andere Excel-Datei kopieren. Innerhalb einer Exceldatei funktioniert das kopieren ja, in eine andere aber nicht. Das funktioniert (innerhalb einer Exceldatei) Excel.sheets[1].Copy(Excel.Sheets[3]); Das funktioniert nicht (zwischen 2 Exceldateien) Excel1.sheets[1].Copy(Excel2.Sheets[3]); Was muss ich beachten ? Mfg Nimmersatt |
AW: Sheet von einer Excel-Datei in eine andere Exceldatei
Gibt es denn im 2. Excel-Sheet bereits 3 andere Sheets (Excel2.Sheets[3])? Denn der Parameter im Copy-Befehl ist ja das Sheet hinter dem das neue Sheet eingefügt werden soll (oder war es vor dem?). Also muss da was existieren.
Kann aber auch sein, dass der Copy Befehl nicht zw. Arbeitsmappen funzt. In dem Fall eine Kopie in der ersten Mappe anlegen und diese anschließend mit Move in die 2. Mappe schieben. Aber da gilt dann auch das oben zuerst gesagte bzgl. vorhandener Sheets. ![]() |
AW: Sheet von einer Excel-Datei in eine andere Exceldatei
Hast Du es mal mit lokalen Variablen versucht?
etwa so:
Code:
(hab z.Zt. kein Excel z.Hd. ggf. mußt Du mit einer selection oder einer Range arbeiten)
dim es excelworksheet
es=Excel.sheets[3]; //activesheet ! actveworkfile(?) wechseln! excel1.copy(es) Gruß K-H |
AW: Sheet von einer Excel-Datei in eine andere Exceldatei
Hallo Jumpy,
Mit dem Move-Befehl ist es wie mit dem Copy-Befehl, innerhalb einer Excel-datei ja, in eine andere nein. Hallo p80286, Ich habe alles mögliche ausprobiert. Eine andere Variante wäre, die 2. Exceldatei in ein anderes Workbook der ersten Excel-Datei zu laden, um es dann mit dem Kopieren zu versuchen. Aber auch da bin ich gescheitert. mfg Nimmersatt |
AW: Sheet von einer Excel-Datei in eine andere Exceldatei
Das Problem ist gelöst.
Excel1.sheets[1].Activate; Excel1.cells.select; Excel1.Selection.Copy; Excel2.ActiveWorkbook.sheets[3].paste; mfg Nimmersatt |
AW: Sheet von einer Excel-Datei in eine andere Exceldatei
Zitat:
|
AW: Sheet von einer Excel-Datei in eine andere Exceldatei
Hallo Jumpy,
Move-Befehl Könntest du das in Delphi übersetzen ? Bei der jetzt gefundenen Lösung kann ich nicht die Abfrage bezüglich des Zwischenspeichers abschalten, Displayalerts:=false funktioniert nicht. mfg Nimmersatt |
AW: Sheet von einer Excel-Datei in eine andere Exceldatei
Lass Dir doch den Vorgang per Makro aufzeichnen.
|
AW: Sheet von einer Excel-Datei in eine andere Exceldatei
Zitat:
Du greifst ja später dann per OLE vermute ich mal auf Excel zu und da kannst du dann den erzeugten Code mit leichten Anpassungen (:= statt =, [] statt (), usw.) übernehmen. Ich mache das i.d.R. ohne irgendwelche Excel-Wrapper in Delphi, einfach mit LateBinding. |
AW: Sheet von einer Excel-Datei in eine andere Exceldatei
Ich habe schon viel zu viel Zeit wegen des Move-Befehls vergeudet.
Eine Lösung reicht mir, auch wenn ich da nicht die Abfrage abschalten kann. Falls jemand die Move-Lösung findet, kann er sie ja posten. mfg Nimmersatt |
AW: Sheet von einer Excel-Datei in eine andere Exceldatei
Da ich ja bereits Zeit verschwendet habe um auf die Frage zu Antworten verschwende ich doch glatt nochmal 10 Minuten um das selber mal zu testen und siehe da, funzt doch sowohl mit Copy als auch mit Move. Das Sheet wird jeweils an letzter Stelle eingefügt.
Delphi-Quellcode:
uses [...], ComObj;
procedure TForm1.Button1Click(Sender: TObject); var XLApp:OleVariant; wbSource,wbTarget:OleVariant; wsSource:OleVariant; begin XLApp:=CreateOleObject('Excel.Application'); //XLApp.Visible:=true; wbSource:=XLApp.Workbooks.Open('C:\Test\wb1.xls'); wbTarget:=XLApp.Workbooks.Open('C:\Test\wb2.xls'); wsSource:=wbSource.WorkSheets['Test']; wsSource.Copy(EmptyParam,wbTarget.WorkSheets[wbTarget.WorkSheets.Count]); wbTarget.Save; wbTarget.Close; wbSource.Save; wbSource.Close; XLApp.Quit; XLApp:=Unassigned; end; |
AW: Sheet von einer Excel-Datei in eine andere Exceldatei
Hallo Jumpy,
Ich habe dein Code getestet und da wurde mir klar, dass die Probleme ganz woanders lagen. Zuerst versuchte ich dein Code in mein Programm zu integrieren, es funktionierte nicht. Dann habe ich nur dein Code getestet, mit meinen Exceldateien, es gab keine Fehlermeldung, aber der Sheet wurde nicht kopiert. Erst als ich andere Exceldateien getestet habe, funktionierte auch dein Code. Und siehe da, mein ursprünglicher Copy-Befehl der nicht funktionierte Excel1.sheets[1].Copy(Excel2.Sheets[3]); funktionierte plötzlich. Ich habe 2 Fehlerquellen, die ich noch nicht begriffen habe. Ich hatte vorher ein paar Excel-Operationen, da hat sich irgendetwas verschoben. Die andere Fehlerquelle, die Excel-Datei hat wohl zu viele Sheets, oder sie ist zu voll. Mit der vollen Exceldatei gibt es zwar keine Fehlermeldung, das Kopieren des Sheets wird aber nicht ausgeführt. Nun würde ich gerne wissen, ob auch bei dir dieser Effekt eintritt. mfg Nimmersatt mfg Nimmersatt |
AW: Sheet von einer Excel-Datei in eine andere Exceldatei
Ach, ja,
Noch einmal recht herzlichen Dank für deine Mühe.:thumb: |
AW: Sheet von einer Excel-Datei in eine andere Exceldatei
Hier mal ein Link zu Excel-Beschränkungen:
![]() Ich hätte jetzt gedacht, da du das ja scheinbar manuell kopieren kannst (auch in den Dateien mit den vielen Sheets) sollte es auch per Programmierung gehen. Ausserdem funzt es ja auch mit deinem alternativen Code, dem mit der Nachfrage. Daher jast du recht: Es ist immer noch seltsam. Also ohne die betroffenen Dateien und die genauen Sheets kann man das nicht weiter testen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz