Solved

Export Access data to Excel using Access VBA

Posted on 2013-01-28
4
350 Views
Last Modified: 2013-01-28
Hi all.

I have the following code that exports my Access data to Excel. But I want to make some changes so instead of the data appearing in column A, B, C, D of row 1, I want it to appear as

Column A, row 1--"Contract Number" data
Column A, row 2--"Status" data
Column A, row 3--"Facility ID" data
Column A, row 4--"Facility Name" data

Any ideas?

Dim xlWb1 'Script for creating excel files
Dim xlWs1

    Set xlApp1 = CreateObject("Excel.Application")
    Set xlWb1 = xlApp1.Workbooks.Add
    Set xlWs1 = xlWb1.Worksheets("Sheet1")
    xlApp1.Visible = True
    xlApp1.UserControl = True
    xlApp1.DisplayAlerts = True
    Dim objCon1  As New ADODB.Connection
    Dim objRS1 As ADODB.Recordset
    Set objRS1 = New ADODB.Recordset
    Dim rsExcel1 As DAO.Recordset
    Set rsExcel1 = CurrentDb.OpenRecordset("Select tblContract_Header.Contract_ID,tblContract_Header.Status,  tblContract_Detail.Facility_ID,tblContract_Detail.Name  FROM tblContract_Header INNER JOIN tblContract_Detail ON tblContract_Header.Contract_Number = tblContract_Detail.Contract_Number where tblContract_Header.[Contract_Number] = " & Me.txtContract__Number)
    xlWs1.Cells.CopyFromRecordset rsExcel1
    xlWs1.Rows("1").Insert
    xlWs1.Cells(1).Value = "Contract Number"
    xlWs1.Cells(2).Value = "Status"
    xlWs1.Cells(3).Value = "Facility ID"
    xlWs1.Cells(4).Value = "Facility Name"
    

    xlApp1.Rows(1).Font.Bold = True
    xlWs1.UsedRange.Borders.LineStyle = 1
    xlApp1.Columns.AutoFit

    Set xlWs1 = Nothing
    Set xlWb1 = Nothing
    Set xlApp1 = Nothing 'End Excel

Open in new window

0
Comment
Question by:printmedia
  • 2
  • 2
4 Comments
 
LVL 119

Expert Comment

by:Rey Obrero
ID: 38827295
change this part

   xlWs1.Cells(1).Value = "Contract Number"
    xlWs1.Cells(2).Value = "Status"
    xlWs1.Cells(3).Value = "Facility ID"
    xlWs1.Cells(4).Value = "Facility Name"

with

   xlWs1.Cells(1,1).Value = "Contract Number"
    xlWs1.Cells(2,1).Value = "Status"
    xlWs1.Cells(3,1).Value = "Facility ID"
    xlWs1.Cells(4,1).Value = "Facility Name"



post sample excel file  result
0
 

Author Comment

by:printmedia
ID: 38827355
Thanks capricorn.

But that just makes the words "Contract Number", "Status", "Facility ID" and "Facility Name" appear in Column A, but the data is still placed on row 1 Column A, Column B, Column C and Column D.

I have attached a sample excel file of how it will need to appear.
Sample-Excel.xlsx
0
 
LVL 119

Accepted Solution

by:
Rey Obrero earned 500 total points
ID: 38827385
try this
Dim xlWb1 'Script for creating excel files
Dim xlWs1

    Set xlApp1 = CreateObject("Excel.Application")
    Set xlWb1 = xlApp1.Workbooks.Add
    Set xlWs1 = xlWb1.Worksheets("Sheet1")
    xlApp1.Visible = True
    xlApp1.UserControl = True
    xlApp1.DisplayAlerts = True
    Dim objCon1  As New ADODB.Connection
    Dim objRS1 As ADODB.Recordset
    Set objRS1 = New ADODB.Recordset
    Dim rsExcel1 As DAO.Recordset
    Set rsExcel1 = CurrentDb.OpenRecordset("Select tblContract_Header.Contract_ID,tblContract_Header.Status,  tblContract_Detail.Facility_ID,tblContract_Detail.Name  FROM tblContract_Header INNER JOIN tblContract_Detail ON tblContract_Header.Contract_Number = tblContract_Detail.Contract_Number where tblContract_Header.[Contract_Number] = " & Me.txtContract__Number)
   
   ' xlWs1.Cells.CopyFromRecordset rsExcel1
   
    xlWs1.Cells(1,1).Value = "Contract Number"
	xlWs1.Cells(1,2).Value =  rsExcel1("Contract Number")
    xlWs1.Cells(2,1).Value = "Status"
	 xlWs1.Cells(2,2).Value = rsExcel1("Status")
    xlWs1.Cells(3,1).Value = "Facility ID"
	 xlWs1.Cells(3,2).Value = rsExcel1("Facility ID")
    xlWs1.Cells(4,1).Value = "Facility Name"
	xlWs1.Cells(4,2).Value = rsExcel1("Facility Name")
    

    xlApp1.Rows(1).Font.Bold = True
    xlWs1.UsedRange.Borders.LineStyle = 1
    xlApp1.Columns.AutoFit

    Set xlWs1 = Nothing
    Set xlWb1 = Nothing
    Set xlApp1 = Nothing 'End Excel
                                  

Open in new window

0
 

Author Closing Comment

by:printmedia
ID: 38827416
Thanks!
0

Featured Post

Highfive Gives IT Their Time Back

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

It took me quite some time to sort out all the different properties of combo and list boxes available from Visual Basic at run-time. Not that the documentation is lacking: the help pages are quite thorough and well written. The problem was rather wh…
Regardless of which version on MS Access you are using, one of the harder data-entry forms to create is one where most data from previous entries needs to be appended to new records, especially when there are numerous fields and records involved.  W…
In Microsoft Access, learn how to use Dlookup and other domain aggregate functions and one method of specifying a string value within a string. Specify the first argument, which is the expression to be returned: Specify the second argument, which …
In Microsoft Access, when working with VBA, learn some techniques for writing readable and easily maintained code.

707 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

18 Experts available now in Live!

Get 1:1 Help Now