Solved

Export Access data to Excel using Access VBA

Posted on 2013-01-28
4
364 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

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In the previous article, Using a Critera Form to Filter Records (http://www.experts-exchange.com/A_6069.html), the form was basically a data container storing user input, which queries and other database objects could read. The form had to remain op…
Introduction The Visual Basic for Applications (VBA) language is at the heart of every application that you write. It is your key to taking Access beyond the world of wizards into a world where anything is possible. This article introduces you to…
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…
Show developers how to use a criteria form to limit the data that appears on an Access report. It is a common requirement that users can specify the criteria for a report at runtime. The easiest way to accomplish this is using a criteria form that a…

910 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

23 Experts available now in Live!

Get 1:1 Help Now