Excel-Inhalte kopieren mtls. bat
Liebe Scripter,
ich würde gerne die Inhalte eines Excel Tabellenblattes mithilfe einer kleinen Batch in eine andere Datei kopieren.
Dabei gibt es viele leere Zellen und einige Kreuze "x".
Leider gelingt mir dies nicht und ich würde gerne wissen, was ich falsch mache:
ich würde gerne die Inhalte eines Excel Tabellenblattes mithilfe einer kleinen Batch in eine andere Datei kopieren.
Dabei gibt es viele leere Zellen und einige Kreuze "x".
Leider gelingt mir dies nicht und ich würde gerne wissen, was ich falsch mache:
set "pfad=%~dp0"
set "script=%pfad%print.vbs"
set "datei=%pfad%worksheets.xlsx
set "datei1=%pfad%worksheets1.xlsx
>%script% ECHO Set objXLS = WScript.CreateObject("Excel.Application")
>>%script% ECHO objXLS.Workbooks.open %datei%
>>%script% ECHO objXLS.%datei%("Tabelle1").Range("A1:D4").Copy _ destination:=%datei1%("Tabelle1").Range("A1")
>>%script% ECHO objXLS.Quit
"%script%"
del "%script%"
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1898290553
Url: https://administrator.de/forum/excel-inhalte-kopieren-mtls-bat-1898290553.html
Ausgedruckt am: 22.12.2024 um 18:12 Uhr
9 Kommentare
Neuester Kommentar
Moin.
Arghhh da kommt mir ehrlich gesagt das Mittagessen wieder hoch . Da ist einiges im Argen von fehlenden Anführunsgzeichen etc. pp ...
Schreib das doch gleich in ein VBS .
Grüße Uwe
Arghhh da kommt mir ehrlich gesagt das Mittagessen wieder hoch . Da ist einiges im Argen von fehlenden Anführunsgzeichen etc. pp ...
@echo off
set "pfad=%~dp0"
set "script=%pfad%print.vbs"
set "datei=%pfad%worksheets.xlsx"
set "datei1=%pfad%worksheets1.xlsx"
>%script% (
echo Set objXLS = CreateObject^("Excel.Application"^)
echo objXLS.DisplayAlerts = false
echo set wb = objXLS.Workbooks.open^("%datei%"^)
echo set wb1 = objXLS.Workbooks.open^("%datei1%"^)
echo wb.Sheets^("Tabelle1"^).Range^("A1:D4"^).Copy wb1.sheets^("Tabelle1"^).Range^("A1"^)
echo wb1.Close^(true^)
echo wb.Close^(false^)
echo objXLS.DisplayAlerts = true
echo objXLS.Quit
echo set objXLS = Nothing
)
"%script%"
del "%script%"
Grüße Uwe
Es ist doch auch notwendig, dass die Dateien noch gespeichert werden, oder?
Jain, du änderst ja nur das zweite Sheet, also musst du auch nur dieses speichern, das andere nicht, da ändert sich ja nichts, da du dort nur raus kopierst. Das explizite Speichern mit Save kannst du natürlich machen aber das erledigen die Close Befehle auch gleich mit, der Boolean Wert dahinter legt fest ob ja oder nein, bei true wird gespeichert bei false nicht.https://docs.microsoft.com/de-de/office/vba/api/excel.workbook.close
Klappt hier im Test einwandfei.
echo set appXLS = Nothing
echo set obXLS = Nothing
echo objXLS.Quit
Hier stimmt die Reihenfolge und die Variablennamen nicht,echo set obXLS = Nothing
echo objXLS.Quit
außerdem musst du das Objekt hinterher leeren nicht vor dem Aufruf einer Methode des selben.
echo objXLS.Quit
echo set objXLS = Nothing
ist das nicht etwas kompliziert? Ginge das nicht mit VBA einfacher:
https://www.excelcampus.com/vba/copy-paste-another-workbook/
https://www.excelcampus.com/vba/copy-paste-another-workbook/
Zitat von @holliknolli:
ist das nicht etwas kompliziert? Ginge das nicht mit VBA einfacher:
https://www.excelcampus.com/vba/copy-paste-another-workbook/
ist das nicht etwas kompliziert? Ginge das nicht mit VBA einfacher:
https://www.excelcampus.com/vba/copy-paste-another-workbook/
Im Endeffekt ist das ja VBA, der TO will den VBA Quelltext warum auch immer in einer Batch verwursten, ob das für ihn sinnvoll ist muss er dann für sich entscheiden 🤪