Excelarbeitsblatt in eine andere Exceldatei kopieren

  • Hi,
    ich hab dieses Script gefunden welches aber in einen Dehlerläuft.

    $sFile_a = "c:\a.xls"
    $sFile_b = "c:\b.xls"
    $oExcel_a = ObjCreate("Excel.Application")
    $oExcel_b = ObjCreate("Excel.Application")
    $oExcel_a.Visible = 1
    $oExcel_b.Visible = 1
    $oExcel_a.WorkBooks.Open($sFile_a)
    $oExcel_b.WorkBooks.Open($sFile_b)
    $oExcel_a.Sheets("Tabelle1").Select()
    $oExcel_b.Sheets("Tabelle1").Copy(Default, $oExcel_a.Sheets("Tabelle1"))

    >"W:\Programme\AutoIt3\SciTE\..\autoit3.exe" /ErrorStdOut "W:\Scripte\Tagesberricht3.au3"
    W:\Scripte\Tagesberricht3.au3 (44) : ==> The requested action with this object has failed.:
    $oExcel_a.Sheets("Tabelle1").Copy(Default, $oExcel_b.Sheets("Tabelle1"))
    $oExcel_a.Sheets("Tabelle1").Copy(Default, $oExcel_b.Sheets("Tabelle1"))^ ERROR
    >Exit code: 1 Time: 4.960

    Worauf weißt dieser ERROR hin.
    Es wird zumindest keine Kopie angelegt.

    • Offizieller Beitrag

    Du brauchst nur ein Objekt "Excel.Application". Ist eine Hierarchie: ExcelObjekt-Workbooks-Sheets
    Daraus resultierte auch der Fehler, weil die Workbooks in zwei getrennten Objekten "zu Hause" waren, konnten sie nicht miteinander kommunizieren.
    Ich verwende lieber die Tabellennummern, spart Schreibarbeit. :D Aber Name geht natürlich auch.

    [autoit]

    Local $oExcel = ObjCreate("Excel.Application")
    $oExcel.Visible = 1 ; oder 0 unsichtbar

    [/autoit][autoit][/autoit][autoit]

    Local $sFilePathA = 'FileA.xls'
    Local $sFilePathB = 'FileB.xls'
    Local $oBookA = $oExcel.Workbooks.Open($sFilePathA)
    Local $oBookB = $oExcel.Workbooks.Open($sFilePathB)

    [/autoit][autoit][/autoit][autoit]

    $oBookA.Sheets(1).Copy( Default, $oBookB.Sheets(1))

    [/autoit]