Hi,
I thought this was a simple issue, but apparently it's not. I need to export the contents of about 30 queries, each into a specific sheet, and cell range, of an existing Excel workbook.
Here are all of the details I need in one sample transfer:
Query = "Query A"
Excel workbook = "C:\Documents and Settings\All Users\Workbook1.xlsx"
Sheet = "BB DATA"
Range = B2:J32
HasFieldNames = True
There are a lot of threads about exporting to Excel from Access, but I have searched all afternoon and can't find an answer that works. Sorry if I'm being a noob on this, but I just can't figure this one out.
Thanks so much for any help
11 45602
Hi CarrieR,
Had you tried using the DoCmd.TransferSpreadsheet function? -
Dim fileName As String
-
fileName = "C:\Documents and Settings\All Users\Workbook1.xlsx"
-
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "Query A", fileName, True,"B2:J32"
Here's something extra I work along with as well, creating the file name more dynamically. The code below will create the excel file in the same location where the database located, and the file is named with current date when executed. - fileName = Left(CurrentDb.Name, Len(CurrentDb.Name) - Len(Dir(CurrentDb.Name))) & "Report" & "-" & Format(Date, "yyyymmdd") & ".xlsx"
The transferSpreadsheet command would only be exporting the query to a new excel file, or replacing an existing file. So put this as a reference for creating a new file.
Yes, the problem with the TransferSpreadsheet command, unfortunately, is that it won't export to a specific sheet. This is a pretty vital need, since the spreadsheet is a (complex) template for a lot of reporting...
Sorry I maybe mis-understood the question. As you want to put the generated records into existing workbooks (excel files), here's a sample code on what I've done from my work. - Dim xlApp As Excel.Application
-
Dim xlWB As Excel.Workbook
-
Dim xlWS As Excel.Worksheet
-
Dim acRng As Variant
-
Dim xlRow As Integer
-
-
Dim qry As QueryDef
-
Dim rst As Recordset
-
Set xlApp = New Excel.Application
-
Set xlWB = xlApp.Workbooks.Open("C:\Documents and Settings\All Users\Workbook1.xlsx")
-
Set xlWS = xlWB.Worksheets("BB Data")
-
-
xlRow = (xlWS.Columns("A").End(xlDown).Row)
-
-
Set qry = CurrentDb.QueryDefs("Query A")
-
Set rst = qry.OpenRecordset
-
-
Dim c As Integer
-
c = 1
-
xlRow = xlRow + 1
-
-
Do Until rst.EOF
-
For Each acRng In rst.Fields
-
xlWS.Cells(xlRow, c).Formula = acRng
-
c = c + 1
-
Next acRng
-
xlRow = xlRow + 1
-
c = 1
-
rst.MoveNext
-
If xlRow > 25 Then GoTo rq_Exit
-
Loop
-
-
rq_Exit:
-
rst.Close
-
Set rst = Nothing
-
Set xlWS = Nothing
-
xlWB.Close acSaveYes
-
Set xlWB = Nothing
-
xlApp.Quit
-
Set xlApp = Nothing
-
Exit Function
-
The code before at the end of loop is simply limiting the copy process only allow 25 records, so remove it as you like. In the end of the exit part, it is a good hand on having a .Close and .Quit, otherwise the excel won't close itself and you need to kill the process from Task manager.
Thanks for your help!
Sorry this response is a little late - I had to leave and come back to this particular problem for a while...
Problem is solved (mostly, except for one or two small issues that I can work around).
I did want to note the issues here, for others that might see this thread, or in case anyone wanted to respond.
To note, I followed the above code exactly. To adjust the starting row the query would be exported to, I changed these lines: -
Dim c As Integer
-
c = 1
-
xlRow = xlRow + 1
the "x1Rox + 1" will insert the file data starting in Row 3. So to begin the data in Row 41, it would be changed to: -
Dim c As Integer
-
c = 1
-
xlRow = xlRow + 39
If I misunderstood any of this please let me know. These were the two issues I had:
1. I couldn't adjust the column that the first record appeared in, even if I adjusted: -
xlRow = (xlWS.Columns("A").End(xlDown).Row)
to: -
xlRow = (xlWS.Columns("B").End(xlDown).Row)
Not sure if changing the first column can be done. To solve my issue, I just made sure all of my destinations began in column A, which worked out fine for this project.
2. Export did not export the field names, only the data. Again, this was OK, but not sure if this is because I was doing something wrong.
Yes you did misunderstood the code you tried to modified. - Dim c As Integer
-
c = 1
-
xlRow = xlRow + 1
xlRow simply record the row number of the 1st empty cell in your spreadsheet in column A. So if A3 is the first empty cell from top, then you will get 3 in xlRow+1, and therefore change the column from reading A to B is correct, if you are leaving column A for something else.
The variable c is the one that stores column number, in which c = 1 means column A, c will be 2 for column B and so on.
In part of the code I posted earlier. - xlWS.Cells(xlRow, c).Formula = acRng
If xlRow+1 is 41, and c = 3, then the xlWS.Cells will be point to cell C41
Thanks, I appreciate the clarification, and patience! This did exactly what I needed to do.
Just to note:
I changed the initial set of "xlRow = xlRow + 1" (the one before the loop) to simply set "xlRow = 3", or whatever row number I need for each of these I need to write. This worked perfectly.
Thanks again for your help!
No worries =)
As if you will be overwriting the information whenever you generate the data, then I do agree you use xlRow = 3, so that it will starts putting data from row 3 every time you execute the code.
hi,
I tried and this too works... - DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "Query A", fileName, True, "BB DATA!B2:J32"
change the range as required... may be for 6th row.. it may come like "BB DATA!A6:J32"
Hi, If you use a named range in your spreadsheet you can export directly to it, for example
On worksheet:
Create a named range for DATA A6:J32 = "Range1" - DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "Query A", fileName, True, "Range1"
This will export directly to the correct sheets and range.
zmbd 5,501
Expert Mod 4TB
hurude: Hi, If you use a named range in your spreadsheet you can export directly to it, for example (...)
Be advised, this is an "undocumented" and therefore unsupported method. Reliance upon this method is discouraged as it may be removed, amended, or provide un-reliable results either now or in the future.
From Microsoft's website:
---------- DoCmd.TransferSpreadsheet Method (Access)Office 2010 Range
Optional
Variant
A string expression that's a valid range of cells or the name of a range in the spreadsheet. This argument applies only to importing. Leave this argument blank to import the entire spreadsheet. When you export to a spreadsheet, you must leave this argument blank. If you enter a range, the export will fail.
----------
@hurude:
This method was already mentioned in Post#9
In the future, please carefully read the entire thread before posting to such an old thread. If dsatino had not already replied your post would simply have been removed as it covers old information.
Sign in to post your reply or Sign up for a free account.
Similar topics
by: DC Gringo |
last post by:
I have a simple button that should open another window and export a datagrid
to an Excel file. I'm getting: "Name 'window' is not declared."
What do I need to declare or import?
<INPUT...
|
by: Hemant Sipahimalani |
last post by:
The following piece of code is being used to export HTML to excel.
HttpContext.Current.Response.ContentType = "application/vnd.ms-excel"...
|
by: Pradnya Patil |
last post by:
Hi ,
I need to export some of the reports to MS EXCEL & MS WORD
in a WEB
APPLICATION.I also need to LOCK some of the Columns in
EXCEL-sheet.Right now I need to
run the Interoperability...
|
by: JawzX01 |
last post by:
Hello All,
First, thank you for any help you can provide.
I'm trying to do a simple export to excel. I've used the classic
code that is all over the internet, and of course it worked without a...
|
by: tasmontique |
last post by:
I am working on an access 2002 flight schedule database. I am new to access but have some basic understanding of sql and vb6 code.
I have learned a lot from this website. Thanks much
Hopefully...
|
by: yovation |
last post by:
Hi,
I have a 3 table database.
1 parent
1 child
1 child of child
I would like to get the data into excel as 1 sheet (similar to a
grouped report).
|
by: Access user |
last post by:
My apologies for crossposting this, but I did not get any response in
microsoft.public.access
...
|
by: hemantbasva |
last post by:
Note We need to have a template on server for generating report in multiple sheet
as we do not had msoffice on server
moreover this require a batch job to delete excel file created by the...
|
by: jay manu |
last post by:
I need to export excel data sheet to ESRI Arcmap10 frame work. Join using lat lons and make new layers and save it.
Can anyone help me to find the solution?
|
by: CloudSolutions |
last post by:
Introduction:
For many beginners and individual users, requiring a credit card and email registration may pose a barrier when starting to use cloud servers. However, some cloud server providers now...
|
by: isladogs |
last post by:
The next Access Europe User Group meeting will be on Wednesday 3 Apr 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM).
In this session, we are pleased to welcome former...
|
by: Charles Arthur |
last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
|
by: aa123db |
last post by:
Variable and constants
Use var or let for variables and const fror constants.
Var foo ='bar';
Let foo ='bar';const baz ='bar';
Functions
function $name$ ($parameters$) {
}
...
|
by: ryjfgjl |
last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
|
by: ryjfgjl |
last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
|
by: emmanuelkatto |
last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud.
Please let me know.
Thanks!
Emmanuel
|
by: BarryA |
last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
|
by: Hystou |
last post by:
There are some requirements for setting up RAID:
1. The motherboard and BIOS support RAID configuration.
2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
| | |