Jump to content

Excel:Coping Workbook cells to another Workbook


Recommended Posts

Hello Everyone,

I have been stuck trying to figure out how to copy rows from one Workbook to another Workbook. My though process was in the for loop to read each row and write that same row to the new Workbook. Unfortunately I have not had any success. Any guide or help would great appreciated.

Thank you

 

#include <Array.au3>
#include <Excel.au3>
#include <ExcelConstants.au3>
#include <MsgBoxConstants.au3>
;###########################################################################################################################
$csvFile1 = "C:\temp\testFile1.csv"
$csvFile2 = "C:\temp\testFile2.csv"

Const $sType = $xlCSVMSDOS ;Set the type as CSV
;###########################################################################################################################
Local $oExcel = _Excel_Open() ; Create application object and create a new workbook
Local $oWorkbook1 = _Excel_BookOpen($oExcel, $csvFile1) ;Open TEST File1
Local $oWorkbook2 = _Excel_BookOpen($oExcel, $csvFile2) ;Open TEST File2
;###########################################################################################################################
Local $oTotalRow = $oWorkbook1.ActiveSheet.UsedRange.Rows.Count
;###########################################################################################################################
For $i = 1 To $oTotalRow Step +1

   ;_Excel_RangeRead($oWorkbook1, Default, ("A" & $i & ":" & "F" & $i))
   _Excel_RangeCopyPaste($oWorkbook1.WorkSheets(1), Default, ("A" & $i & ":" & "F" & $i))
   _Excel_RangeWrite($oWorkbook2, "testFile2", ("A" & $i & ":" & "F" & $i), ("A" & $i & ":" & "F" & $i))
Next

_Excel_BookSaveAs($oWorkbook2, $oWorkbook2, $xlCSVMSDOS)
;###########################################################################################################################
$oWorkbook1.Close
$oWorkbook2.Close
;###########################################################################################################################
_Excel_Close($oExcel)
;###########################################################################################################################

 

Link to comment
Share on other sites

Here is how to do line by line, although you could actually just use RangeRead to read "A:F" and just paste the entire column in the second workbook.

#include <Array.au3>
#include <Excel.au3>
#include <ExcelConstants.au3>
#include <MsgBoxConstants.au3>
;###########################################################################################################################
$csvFile1 = "C:\temp\testFile1.csv"
$csvFile2 = "C:\temp\testFile2.csv"

Const $sType = $xlCSVMSDOS ;Set the type as CSV
;###########################################################################################################################
Local $oExcel = _Excel_Open() ; Create application object and create a new workbook
Local $oWorkbook1 = _Excel_BookOpen($oExcel, $csvFile1) ;Open TEST File1
Local $oWorkbook2 = _Excel_BookOpen($oExcel, $csvFile2) ;Open TEST File2
;###########################################################################################################################
Local $oRange, $oTotalRow = $oWorkbook1.ActiveSheet.UsedRange.Rows.Count
;###########################################################################################################################
For $i = 1 To $oTotalRow Step +1
   $oRange = _Excel_RangeRead($oWorkbook1, Default, "A" & $i & ":" & "F" & $i)
   _Excel_RangeWrite($oWorkbook2, Default, $oRange, "A" & $i)
Next

_Excel_BookSaveAs($oWorkbook2, $oWorkbook2, $xlCSVMSDOS)
;###########################################################################################################################
$oWorkbook1.Close
$oWorkbook2.Close
;###########################################################################################################################
_Excel_Close($oExcel)
;###########################################################################################################################

 

Link to comment
Share on other sites

@Subz Thank you so much for your help. It works amazing. If you have the time to add another Notch to it, I am trying to append the Workbook with even more content. To summaries it, Workbook1 will copy over the rows to Workbook3 which you have shown me how to do. I am struggling to visualizes how I am able to copy the rows of Workbook2 to the bottom of Workbook3.

Than you again Subz

I owe you a coffee

#include <Array.au3>
#include <Excel.au3>
#include <ExcelConstants.au3>
#include <MsgBoxConstants.au3>
;###########################################################################################################################
$csvFile1 = "C:\temp\testFile1.csv"
$csvFile2 = "C:\temp\testFile2.csv"
$csvFile3 = "C:\temp\testFile3.csv"
;###########################################################################################################################
Local $oExcel = _Excel_Open() ; Create application object and create a new workbook
Local $oWorkbook1 = _Excel_BookOpen($oExcel, $csvFile1) ;Open TEST File1
Local $oWorkbook2 = _Excel_BookOpen($oExcel, $csvFile2) ;Open TEST File2
Local $oWorkbook3 = _Excel_BookOpen($oExcel, $csvFile3) ;Open TEST File3
;###########################################################################################################################
Local $oRange1 = $oWorkbook1.ActiveSheet.UsedRange.Rows.Count
Local $oTotalRowFile1 = $oWorkbook1.ActiveSheet.UsedRange.Rows.Count
;###########################################################################################################################
Local $oRange2 = $oWorkbook2.ActiveSheet.UsedRange.Rows.Count
Local $oTotalRowFile2 = $oWorkbook2.ActiveSheet.UsedRange.Rows.Count
;###########################################################################################################################
For $i = 1 To $oTotalRowFile1 Step +1
   $oRange = _Excel_RangeRead($oWorkbook1, Default, "A" & $i & ":" & "F" & $i)
   _Excel_RangeWrite($oWorkbook3, Default, $oRange, "A" & $i & ":" & "F" & $i)
Next
_Excel_BookSave($oWorkbook3)
;###########################################################################################################################
For $i = 1 To $oTotalRowFile2 Step +1
   $oRange2 = _Excel_RangeRead($oWorkbook2, Default, "A" & $i & ":" & "F" & $i)
   ;^^^^^^^^^^Read from the beginning of the other file^^^^^^^^^^
   For $j = $oTotalRowFile1 To ($oTotalRowFile1 + $oTotalRowFile2) Step +1
      ;^^^^ End of the other file     ^^^^End of this file
      _Excel_RangeWrite($oWorkbook3, Default, $oRange2, "A" & $j & ":" & "F" & $j)
   Next
Next
;###########################################################################################################################
_Excel_BookSave($oWorkbook3)
;###########################################################################################################################
$oWorkbook1.Close
$oWorkbook2.Close
$oWorkbook3.Close
;###########################################################################################################################
_Excel_Close($oExcel)
;###########################################################################################################################

 

Link to comment
Share on other sites

@Subz Thanks again for everything. I think I figured it out. I just added the static number to the counter and it works. Sweet and simple. Thanks again.

I meant it when I said the next coffee of me

#include <Array.au3>
#include <Excel.au3>
#include <ExcelConstants.au3>
#include <MsgBoxConstants.au3>
;###########################################################################################################################
$csvFile1 = "C:\temp\testFile1.csv"
$csvFile2 = "C:\temp\testFile2.csv"
$csvFile3 = "C:\temp\testFile3.csv"
;###########################################################################################################################
Const $sType = $xlCSVMSDOS ;Set the type as CSV
;###########################################################################################################################
Local $oExcel = _Excel_Open() ; Create application object and create a new workbook
Local $oWorkbook1 = _Excel_BookOpen($oExcel, $csvFile1) ;Open TEST File1
Local $oWorkbook2 = _Excel_BookOpen($oExcel, $csvFile2) ;Open TEST File2
Local $oWorkbook3 = _Excel_BookOpen($oExcel, $csvFile3) ;Open TEST File3
;###########################################################################################################################
Local $oRange1 = $oWorkbook1.ActiveSheet.UsedRange.Rows.Count
Local $oTotalRowFile1 = $oWorkbook1.ActiveSheet.UsedRange.Rows.Count
;###########################################################################################################################
Local $oRange2 = $oWorkbook2.ActiveSheet.UsedRange.Rows.Count
Local $oTotalRowFile2 = $oWorkbook2.ActiveSheet.UsedRange.Rows.Count
;###########################################################################################################################
For $i = 1 To ($oTotalRowFile1) Step +1
   $oRange = _Excel_RangeRead($oWorkbook1, Default, "A" & $i & ":" & "F" & $i)
   _Excel_RangeWrite($oWorkbook3, Default, $oRange, "A" & $i & ":" & "F" & $i)
Next
;###########################################################################################################################
$oWorkbook1.Close
_Excel_BookSave($oWorkbook3)
;###########################################################################################################################
For $i = 1 To ($oTotalRowFile2 +1) Step +1
   $oRange2 = _Excel_RangeRead($oWorkbook2, Default, "A" & $i & ":" & "F" & $i)
   _Excel_RangeWrite($oWorkbook3, Default, $oRange2, "A" & (1 + $i + $oTotalRowFile2) & ":" & "F" & (1 + $i + $oTotalRowFile2))
Next
;###########################################################################################################################
$oWorkbook2.Close
_Excel_BookSave($oWorkbook3)
;###########################################################################################################################
;$oWorkbook3.Close
;###########################################################################################################################
_Excel_Close($oExcel)
;###########################################################################################################################

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...