I have multiple workbooks with invoice information laid out in an invoice format.
I need to extract various pieces of data and compile a worksheet that can be imported into another software.
Here is the code I have written:
Sub GetFile()
Dim fNameAndPath As Variant
Dim wbdata As Workbook
Dim wbsource As Workbook
Dim ShToCopy As Worksheet
Dim rangedata As Range
'set data workbook
Set wbdata = ThisWorkbook
Set rangedata = ActiveCell
'open other workbook and set as source workbook
fNameAndPath = Application.GetOpenFilename
If fNameAndPath = False Then Exit Sub
Set wbsource = Workbooks.Open(fNameAndPath)
Set ShToCopy = wbsource.Worksheets("PCO #")
Call Extract_Invoice_Data_1(wbdata, wbsource, ShToCopy, rangedata)
Call Extract_Invoice_Data_2(wbdata, wbsource, ShToCopy)
Call Extract_Invoice_Data_3(wbdata, wbsource, ShToCopy)
Call Extract_Invoice_Data_4(wbdata, wbsource, ShToCopy)
Call Extract_Invoice_Data_5(wbdata, wbsource, ShToCopy)
Call Extract_Invoice_Data_6(wbdata, wbsource, ShToCopy)
Call Extract_Invoice_Data_7(wbdata, wbsource, ShToCopy)
Call Extract_Invoice_Data_8(wbdata, wbsource, ShToCopy)
Call Extract_Invoice_Data_9(wbdata, wbsource, ShToCopy)
Call Extract_Invoice_Data_10(wbdata, wbsource, ShToCopy)
Call Extract_Invoice_Data_11(wbdata, wbsource, ShToCopy)
wbsource.Close SaveChanges:=False
Set wbsource = Nothing
End Sub
Sub Extract_Invoice_Data_1(wbdata As Workbook, wbsource As Workbook,
ShToCopy As Worksheet, rangedata As Range)
rangedata.Value = ShToCopy.Range("G5").Value
ActiveCell.Offset(0, 1).Activate
End Sub
Sub Extract_Invoice_Data_2(wbdata As Workbook, wbsource As Workbook,
ShToCopy As Worksheet)
Set rangedata = ActiveCell
rangedata.Value = ShToCopy.Range("G4").Value
ActiveCell.Offset(0, 1).Activate
End Sub
Sub Extract_Invoice_Data_3(wbdata As Workbook, wbsource As Workbook,
ShToCopy As Worksheet)
Set rangedata = ActiveCell
rangedata.Value = ShToCopy.Range("C3").Value
ActiveCell.Offset(0, 1).Activate
End Sub
Sub Extract_Invoice_Data_4(wbdata As Workbook, wbsource As Workbook,
ShToCopy As Worksheet)
Set rangedata = ActiveCell
rangedata.Value = ShToCopy.Range("C4").Value
ActiveCell.Offset(0, 1).Activate
End Sub
Sub Extract_Invoice_Data_5(wbdata As Workbook, wbsource As Workbook,
ShToCopy As Worksheet)
Set rangedata = ActiveCell
rangedata.Value = ShToCopy.Range("C5").Value
ActiveCell.Offset(0, 1).Activate
End Sub
Sub Extract_Invoice_Data_6(wbdata As Workbook, wbsource As Workbook,
ShToCopy As Worksheet)
Set rangedata = ActiveCell
rangedata.Value = ShToCopy.Range("C6").Value
ActiveCell.Offset(0, 1).Activate
End Sub
Sub Extract_Invoice_Data_7(wbdata As Workbook, wbsource As Workbook,
ShToCopy As Worksheet)
Set rangedata = ActiveCell
rangedata.Value = ShToCopy.Range("G32").Value
ActiveCell.Offset(0, 1).Activate
End Sub
Sub Extract_Invoice_Data_8(wbdata As Workbook, wbsource As Workbook,
ShToCopy As Worksheet)
Set rangedata = ActiveCell
rangedata.Value = ShToCopy.Range("G25").Value
ActiveCell.Offset(0, 1).Activate
End Sub
Sub Extract_Invoice_Data_9(wbdata As Workbook, wbsource As Workbook,
ShToCopy As Worksheet)
Set rangedata = ActiveCell
rangedata.Value = ShToCopy.Range("G28").Value
ActiveCell.Offset(0, 1).Activate
ActiveCell = "=RC[-1]*0.15"
ActiveCell.Offset(0, 1).Activate
End Sub
Sub Extract_Invoice_Data_10(wbdata As Workbook, wbsource As Workbook,
ShToCopy As Worksheet)
Set rangedata = ActiveCell
rangedata.Value = ShToCopy.Range("G21").Value
ActiveCell.Offset(0, 1).Activate
End Sub
Sub Extract_Invoice_Data_11(wbdata As Workbook, wbsource As Workbook,
ShToCopy As Worksheet)
Set rangedata = ActiveCell
rangedata.Value = ShToCopy.Range("G22").Value
ActiveCell.Offset(0, 1).Activate
ActiveCell = "=RC[-1]*0.15"
ActiveCell.Offset(0, 1).Activate
ActiveCell = "=SUM(RC[-4]:RC[-1])"
ActiveCell.Offset(0, 1).Activate
End Sub
The problem is I can't change ActiveCell. It will enter the data in the first cell of the worksheet and then not extract any of the other data.
Note: I am attempting to execute this on a Mac.