[AccessD] DoCmd.TransferSpreadsheet tip

Gustav Brock gustav at cactus.dk
Thu Jun 22 04:40:13 CDT 2023


Hi Stuart

Ah, right you are, I can see. Now the naming restrictions make sense.
And renaming the worksheet has nothing to do with the NamedRange, of course.

/gustav

-----Oprindelig meddelelse-----
Fra: AccessD <accessd-bounces+gustav=cactus.dk at databaseadvisors.com> På vegne af Stuart McLachlan
Sendt: 22. juni 2023 10:31
Til: Access Developers discussion and problem solving <accessd at databaseadvisors.com>
Emne: Re: [AccessD] DoCmd.TransferSpreadsheet tip

Just picked up another factoid. If it's not a current range name, not only does the sheet get created with the range name, but a named range is also created for the data (Hit Ctrl+G in the spreadsheet and you will see the named ranges. )

Just found a good reference that points out a few other foibles   It's well worth a read:

http://www.accessmvp.com/KDSnell/EXCEL_Export.htm#ExpRange



On 22 Jun 2023 at 12:21, Stuart McLachlan wrote:

> Version2 (I haven't seen my previous similar post appear) Worked it 
> out:
>  If there is a named range in the workbook you are exporting to, your  
> data will be placed in that range.
> If there is no such named range, a new sheet will be created with that 
> name. Using the Range parameter always applies the standard Range name 
> conventions. There is no getting around that. i.e. It must start with 
> a letter or an underscore. If not it will get a preceeding underscore.
> It can be any single alpha character except R or C It cannot be 
> interpretable as a cell value. Column names range from A to XFD so any 
> one to three letters in that range followed by any number up to
> 1048576 will get a leading underscore. It can't contain any non 
> alphanumeric character other that period,question mark, underscore and 
> backslash .All invalid characters are replaced by underscores. If it 
> conflict with any existing name, the existing sheet will be replaced.
> 
> 
> On 21 Jun 2023 at 13:55, Gustav Brock via AccessD wrote:
> 
> > Hi Ryan
> > 
> > I tried that, also prefixing/suffixing with various signs (#, $, !) 
> > and quotes, but either error or no effect.
> > 
> > /gustav
> > 
> > -----Oprindelig meddelelse-----
> > Fra: AccessD <accessd-bounces+gustav=cactus.dk at databaseadvisors.com>
> > På vegne af Ryan Wehler Sendt: 21. juni 2023 15:33 Til: Access 
> > Developers discussion and problem solving 
> > <accessd at databaseadvisors.com> Emne: Re: [AccessD] 
> > DoCmd.TransferSpreadsheet tip
> > 
> > That´s good to know. I wonder if casting the value using Cstr() 
> > would remedy that? I wonder if it´s being treated like an integer 
> > and that´s causing a side effect?
> > 
> > > On Jun 21, 2023, at 7:02 AM, Gustav Brock via AccessD 
> > > <accessd at databaseadvisors.com> wrote:
> > > 
> > > Hi Ryan
> > > 
> > > This is the best tip I've seen in years. Thanks!
> > > 
> > > I see one issue though. If you pass a range/worksheet name with a 
> > > leading digit, for example "2023", the worksheet will be given 
> > > that name plus a leading underscore: "_2023". In general, Access 
> > > silently replaces spaces and special characters with underscores, 
> > > so this behaviour indicates, that a space or something has been 
> > > prefixed and then replaced.
> > > 
> > > Are you aware of a workaround?
> > > 
> > > The "method" I've found is to use a name having a letter as the 
> > > first character, like: "Balance 2023". This results, as expected, 
> > > in the worksheet name "Balance_2023", which is acceptable.
> > > 
> > > /gustav
> > > 
> > > 
> > > -----Oprindelig meddelelse-----
> > > Fra: AccessD
> > > <accessd-bounces+gustav=cactus.dk at databaseadvisors.com> På vegne 
> > > af Ryan W Sendt: 21. april 2023 18:17 Til: Access Developers 
> > > discussion and problem solving <accessd at databaseadvisors.com>
> > > Emne: [AccessD] DoCmd.TransferSpreadsheet tip
> > > 
> > > I was looking for a way to export some queries to a spreadsheet, 
> > > the client wanted 3 worksheets in the workbook.
> > > 
> > > Despite what the docs say about specifying a range argument for 
> > > exports causes it to fail, if you specify a string rather than a 
> > > range it WILL create the excel file and the sheet will be named 
> > > what you specify in the range.
> > > 
> > > Subsequent TransferSpreadsheet commands to the same file with a 
> > > different range name will add that data to a new worksheet.
> > > 
> > > I wish I'd known this some time ago as I've had to tell our 
> > > clients on occasion that we can only provide "flat" excel files.
> > > I didn't want or have the knowledge to build a spreadsheet routine 
> > > that used COM to try and stuff data into worksheets on a workbook, 
> > > so this makes it super convenient and easy.
> > > 
> > > 
> > > 
> > > 
> > > :
> > > https://learn.microsoft.com/en-us/office/vba/api/access.docmd.tran
> > > sf erspreadsheet
> > > 
> > > *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.* 


More information about the AccessD mailing list