Importing from Excel

  • Thread starter Thread starter filnigeria
  • Start date Start date
F

filnigeria

i have an excel template that when my VBA program is run, extracts data from
a text file.
after this is done i want to export the 12 Sheets that are now full of data
into an Access Database so that i can do normal database stuff to it (query
etc)

Does anyone here understand me and can help with either procedures or a
code/macro in access that will import the excel sheets or something that
will make excel export it's data
 
Hi,

Should be
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, "Employees", "c:\Temp.xls", True, "Sheet3!A1:ZZ999"

Depending on the version of your Excel file (97 until 2002 = 8) you will have to change the acSpreadsheetTypeExcel8 (= default value, not necessary to enter) to acSpreadsheetTypeExcel3, 4, 5, 7 or 9.

True : if your Excel File contains column headings set it to True (or -1), else False (or 0)

"Sheet3!A1:ZZ999" : Sheet name (presuming it's "Sheet3") and range on sheet to import. If you specify a sheet you have to add a range on the sheet.

If you want to find out the 3rd sheet in your file you will need some more VBA: ( have a look at Access help - GetObject and CreateObject)

'************************************
Private Sub MySheetImport()
Dim XLapp As Object
Dim XLFile As String
Dim XLSheet As String
Dim XLRange As String
Dim TableName As String
Dim z As Integer
Dim SheetCount As Integer

Set XLapp = GetObject(, "Excel.Application")

XLapp.Visible = True 'Excel is visible!! or if False not visible!!
XLFile = "c:\temp.xls" 'Your File
TableName = "Employees" 'Table to import into
XLRange = "!a1:z10" 'Specifies the area to be imported

Set XLwb = XLapp.Workbooks.Open(XLFile) 'Opens your file in Excel

'if you want to import all sheets in your Excel file into one table use the following 6 lines of code

'if you need only sheet 3, remove the for-next construct, keep the 3 lines of code within and change the code from .Sheets(z).Name
' to .Sheets(3).Name

SheetCount = XLapp.ActiveWorkbook.Sheets.Count 'Gives you the total number of sheets
For z = 1 To SheetCount
XLSheet = XLapp.ActiveWorkbook.Sheets(z).Name 'get name of sheet number z
XLSheet = XLSheet & XLRange 'add range to sheetname
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, TableName, XLFile, True, XLSheet
Next z

MsgBox "Imported Successfully "

XLapp.Quit
Set XLapp = Nothing
Set XLwb = Nothing

End Sub
'*****************************
 
Back
Top