I found this code online and it works, however, there are 2 issues.
1. It creates an Excel file called OT Allocation.xls. When I open it, click on Window in the main menu, it actually shows 2 files are opened, the other one called Book 1. Book 1 contians only the header row. When I close OT Allocations.xls, it ask if I want to save Book 1. How can one Excel file open two ones? Where in the VBA code is it doing this?
2. Column A is a date field as mm/dd/yy, however, it writes to the Excel file as a number (General format). How can I format the column as Date?
Private Sub cmdExport_Click()
Dim oExcel As Object
Dim oBook As Object
Dim oSheet As Object
'Start a new workbook in Excel
Set oExcel = CreateObject("Excel.Application")
Set oBook = oExcel.Workbooks.Add
'Add data to cells of the first worksheet in the new workbook
Set oSheet = oBook.Worksheets(1)
oSheet.range("A1").Value = "Period End Dt"
oSheet.range("B1").Value = "Name"
oSheet.range("C1").Value = "OT Pay"
oSheet.range("D1").Value = "Jobcode 1"
oSheet.range("E1").Value = "Task 1"
oSheet.range("F1").Value = "Pct 1"
oSheet.range("G1").Value = "Jobcode 2"
oSheet.range("H1").Value = "Task 2"
oSheet.range("I1").Value = "Pct 2"
oSheet.range("J1").Value = "Jobcode 3"
oSheet.range("K1").Value = "Task 3"
oSheet.range("L1").Value = "Pct 3"
oSheet.range("M1").Value = "Jobcode 4"
oSheet.range("N1").Value = "Task 4"
oSheet.range("O1").Value = "Pct 4"
oSheet.range("P1").Value = "Jobcode 5"
oSheet.range("Q1").Value = "Task 5"
oSheet.range("R1").Value = "Pct 5"
oSheet.range("S1").Value = "Jobcode 6"
oSheet.range("T1").Value = "Task 6"
oSheet.range("U1").Value = "Pct 6"
oSheet.range("A1:U1").Font.Bold = True
Dim rs As Recordset
'Set rs = Me.subResults.Form.Recordset
Set rs = Me.Form.Recordset
Dim iRow As Integer
iRow = 2
Dim iRows As Integer
iRows = rs.RecordCount + 1
Dim test As String
Do While iRow <= iRows
oSheet.range("A" & iRow).Value = rs.Fields(0)
oSheet.range("B" & iRow).Value = rs.Fields(1)
oSheet.range("C" & iRow).Value = rs.Fields(2)
oSheet.range("D" & iRow).Value = rs.Fields(3)
oSheet.range("E" & iRow).Value = rs.Fields(4)
oSheet.range("F" & iRow).Value = rs.Fields(5)
oSheet.range("G" & iRow).Value = rs.Fields(6)
oSheet.range("H" & iRow).Value = rs.Fields(7)
oSheet.range("I" & iRow).Value = rs.Fields(8)
oSheet.range("J" & iRow).Value = rs.Fields(9)
oSheet.range("K" & iRow).Value = rs.Fields(10)
oSheet.range("L" & iRow).Value = rs.Fields(11)
oSheet.range("M" & iRow).Value = rs.Fields(12)
oSheet.range("N" & iRow).Value = rs.Fields(13)
oSheet.range("O" & iRow).Value = rs.Fields(14)
oSheet.range("P" & iRow).Value = rs.Fields(15)
oSheet.range("Q" & iRow).Value = rs.Fields(16)
oSheet.range("R" & iRow).Value = rs.Fields(17)
oSheet.range("S" & iRow).Value = rs.Fields(18)
oSheet.range("T" & iRow).Value = rs.Fields(19)
oSheet.range("U" & iRow).Value = rs.Fields(20)
iRow = iRow + 1
rs.MoveNext
Loop
rs.MoveFirst
'Save the Workbook and Quit Excel
Dim sSave As String
Dim sTime As String
'sTime = Replace(Replace(Now(), ":", "-"), "/", "-")
sSave = "OT Allocations.xls" '& sTime & ".xls"
oBook.SaveAs "C:\" & sSave
oExcel.Quit
Dim result
result = MsgBox("Excel Spreadsheet saved under your C:\" & sSave, _
vbOKOnly, "Export Successful")
End Sub
1. It creates an Excel file called OT Allocation.xls. When I open it, click on Window in the main menu, it actually shows 2 files are opened, the other one called Book 1. Book 1 contians only the header row. When I close OT Allocations.xls, it ask if I want to save Book 1. How can one Excel file open two ones? Where in the VBA code is it doing this?
2. Column A is a date field as mm/dd/yy, however, it writes to the Excel file as a number (General format). How can I format the column as Date?
Private Sub cmdExport_Click()
Dim oExcel As Object
Dim oBook As Object
Dim oSheet As Object
'Start a new workbook in Excel
Set oExcel = CreateObject("Excel.Application")
Set oBook = oExcel.Workbooks.Add
'Add data to cells of the first worksheet in the new workbook
Set oSheet = oBook.Worksheets(1)
oSheet.range("A1").Value = "Period End Dt"
oSheet.range("B1").Value = "Name"
oSheet.range("C1").Value = "OT Pay"
oSheet.range("D1").Value = "Jobcode 1"
oSheet.range("E1").Value = "Task 1"
oSheet.range("F1").Value = "Pct 1"
oSheet.range("G1").Value = "Jobcode 2"
oSheet.range("H1").Value = "Task 2"
oSheet.range("I1").Value = "Pct 2"
oSheet.range("J1").Value = "Jobcode 3"
oSheet.range("K1").Value = "Task 3"
oSheet.range("L1").Value = "Pct 3"
oSheet.range("M1").Value = "Jobcode 4"
oSheet.range("N1").Value = "Task 4"
oSheet.range("O1").Value = "Pct 4"
oSheet.range("P1").Value = "Jobcode 5"
oSheet.range("Q1").Value = "Task 5"
oSheet.range("R1").Value = "Pct 5"
oSheet.range("S1").Value = "Jobcode 6"
oSheet.range("T1").Value = "Task 6"
oSheet.range("U1").Value = "Pct 6"
oSheet.range("A1:U1").Font.Bold = True
Dim rs As Recordset
'Set rs = Me.subResults.Form.Recordset
Set rs = Me.Form.Recordset
Dim iRow As Integer
iRow = 2
Dim iRows As Integer
iRows = rs.RecordCount + 1
Dim test As String
Do While iRow <= iRows
oSheet.range("A" & iRow).Value = rs.Fields(0)
oSheet.range("B" & iRow).Value = rs.Fields(1)
oSheet.range("C" & iRow).Value = rs.Fields(2)
oSheet.range("D" & iRow).Value = rs.Fields(3)
oSheet.range("E" & iRow).Value = rs.Fields(4)
oSheet.range("F" & iRow).Value = rs.Fields(5)
oSheet.range("G" & iRow).Value = rs.Fields(6)
oSheet.range("H" & iRow).Value = rs.Fields(7)
oSheet.range("I" & iRow).Value = rs.Fields(8)
oSheet.range("J" & iRow).Value = rs.Fields(9)
oSheet.range("K" & iRow).Value = rs.Fields(10)
oSheet.range("L" & iRow).Value = rs.Fields(11)
oSheet.range("M" & iRow).Value = rs.Fields(12)
oSheet.range("N" & iRow).Value = rs.Fields(13)
oSheet.range("O" & iRow).Value = rs.Fields(14)
oSheet.range("P" & iRow).Value = rs.Fields(15)
oSheet.range("Q" & iRow).Value = rs.Fields(16)
oSheet.range("R" & iRow).Value = rs.Fields(17)
oSheet.range("S" & iRow).Value = rs.Fields(18)
oSheet.range("T" & iRow).Value = rs.Fields(19)
oSheet.range("U" & iRow).Value = rs.Fields(20)
iRow = iRow + 1
rs.MoveNext
Loop
rs.MoveFirst
'Save the Workbook and Quit Excel
Dim sSave As String
Dim sTime As String
'sTime = Replace(Replace(Now(), ":", "-"), "/", "-")
sSave = "OT Allocations.xls" '& sTime & ".xls"
oBook.SaveAs "C:\" & sSave
oExcel.Quit
Dim result
result = MsgBox("Excel Spreadsheet saved under your C:\" & sSave, _
vbOKOnly, "Export Successful")
End Sub