ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Why is Excel appending numbers to querytables. (https://www.excelbanter.com/excel-programming/325498-why-excel-appending-numbers-querytables.html)

Bing

Why is Excel appending numbers to querytables.
 
Hi,

Still haven't figured this one out.. hopefully someone knows why.

Programmatically i add a querytable (name=qt) to the querytables collection
of a worksheet:

ie.
With activesheet.QueryTables.Add(Connection:="TEXT;c:\l og.txt"),
Destination:=Range("A2"))
.Name="qt"
End With

I then delete that querytable by: qt.delete.

But when i go to recreate that query table using the same name, "qt" for
some reason excel starts appending an underscore than a number to the query
table name each time i delete, then add that querytable with the same name
"qt". Ie. excel changes the name to "qt_1", or "qt_2", etc.

Anyone know why and how to stop this so taht i can use the same name "qt" to
reference the query table each time i add and delete it.

Bing

Why is Excel appending numbers to querytables.
 
Sorry, but a typo..

i delete the querytable (name="qt") using the reference to the querytable
returned when i added it to the worksheet querytables collection, not via
qt.delete:

qtable = activesheet.querytables.add (... )
qtable.name = "grp"

qtable.delete

when i then add that table again:
qtable = activesheet.quertables.add(..)
qtable.name = "grp"

excel actually creates teh query table with name "grp_1", or "grp_2", not
"grp" as i specified.. Why?


"Bing" wrote:

Hi,

Still haven't figured this one out.. hopefully someone knows why.

Programmatically i add a querytable (name=qt) to the querytables collection
of a worksheet:

ie.
With activesheet.QueryTables.Add(Connection:="TEXT;c:\l og.txt"),
Destination:=Range("A2"))
.Name="qt"
End With

I then delete that querytable by: qt.delete.

But when i go to recreate that query table using the same name, "qt" for
some reason excel starts appending an underscore than a number to the query
table name each time i delete, then add that querytable with the same name
"qt". Ie. excel changes the name to "qt_1", or "qt_2", etc.

Anyone know why and how to stop this so taht i can use the same name "qt" to
reference the query table each time i add and delete it.


OJ[_2_]

Why is Excel appending numbers to querytables.
 
Hi,
what version are you using because I cannot replicate this in 2002.
Works fine for me.

OJ


Bing

Why is Excel appending numbers to querytables.
 
I'm using excel 2003.


"OJ" wrote:

Hi,
what version are you using because I cannot replicate this in 2002.
Works fine for me.

OJ



OJ[_2_]

Why is Excel appending numbers to querytables.
 
Hi,
perhaps if you posted your entire routine(s) then I might be able to
help. My instincts ask me why delete and then recreate....can you not
just change the connection string and use the same table each time?

OJ


Bing

Why is Excel appending numbers to querytables.
 
Hi OJ, Let me first say thanks for helping!

I suppose you could use same table, it just seemed cleaner to start from a
new querytable each time a new data file was loaded.. in any case here is the
code:

function parameters i used we
qtName="grp"
qtConnection = "TEXT;" & commaDelimitedFilenameToImport
qtSht = any worksheet
qtCell = "A2"

Run this function a few times in the same VB session and inspect the
querytable name in the worksheet querytables collection each time you this is
function is called. I created a querytable name of "grp" I noticed that
eventho i thought i was deleting the "grp" query table, when i did a
qtSht.Querytables.count it was actually incrementing by 1 each time and the
names of each query table was "grp", "grp_1", "grp_2", etc.

Public Function InitQueryTable(qtName As String, qtConnection As String,
qtSht As Worksheet, qtCell As String) _
As QueryTable

On Error Resume Next
qtSht.QueryTables(qtName).Delete
Err.Clear

Dim qt As QueryTable
Set qt = qtSht.QueryTables.Add(Connection:=qtConnection, _
Destination:=qtSht.Range(qtCell))

With qt
.Name = qtName
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 850
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
' .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1)
.TextFileTrailingMinusNumbers = True
.BackgroundQuery = False
End With
Set InitQueryTable = qt
"OJ" wrote:

Hi,
perhaps if you posted your entire routine(s) then I might be able to
help. My instincts ask me why delete and then recreate....can you not
just change the connection string and use the same table each time?

OJ



OJ[_2_]

Why is Excel appending numbers to querytables.
 
Hi,
well...what happens when you remove the On Error Resume Next statement?
I would suggest that the Querytable is not getting deleted but rather
throwing an error. If I were you I would split this in to two
functions....one to create and one to destroy....

Public Function InitQueryTable(qtName As String, qtConnection As
String, _
qtSht As Worksheet, qtCell As String) As QueryTable

On error resume next
Set InitQueryTable = qtSht.QueryTables.Add(Connecti*on:=qtConnection,
_
Destination:=qtSht.Range(qtCel*l))
Let Err = 0

If Not initQueryTable is nothing then
With InitQueryTable
.Name = qtName
.FieldNames = True
......
.BackgroundQuery = False
End With
End If
End Function

'''This will return true if the table is found and then deleted...False
if there was no table to begin with

Public Function RemoveQTable(qtSht As Worksheet, strQTableName as
String) as Boolean
On Error Resume Next

qtSht.querytables(strQTableName).delete
If Err = 0 then RemoveQTable = True

End Function

Do you see what I'm trying to do here? It is usually best to write
functions to perform only one operation and then "sew" them together
with a sub routine....

Hth,
OJ


Dick Kusleika[_4_]

Why is Excel appending numbers to querytables.
 
Bing

I've had inconsistent results adding and deleting qts. When you create a
qt, Excel also creates a range name. Deleting the qt doesn't delete the
range name, however. If you create a qt with the same name as an existing
range name, Excel will append an incrementing digit to the end.

Based on that, you'd think you could just delete the named range when you
delete the qt, but that doesn't always work. I can't figure out what I'm
doing differently, because sometimes it does work.

The best way, in my opinion, is to not delete the qt in the first place. If
you want to change the qt, change the Connection and Commandtext properties
and Refresh it. Then you have the same qt object the whole time (with the
same name) and you just change certain aspects of it.


--
Dick Kusleika
Excel MVP
Daily Dose of Excel
www.dicks-blog.com

Bing wrote:
Sorry, but a typo..

i delete the querytable (name="qt") using the reference to the
querytable returned when i added it to the worksheet querytables
collection, not via qt.delete:

qtable = activesheet.querytables.add (... )
qtable.name = "grp"

qtable.delete

when i then add that table again:
qtable = activesheet.quertables.add(..)
qtable.name = "grp"

excel actually creates teh query table with name "grp_1", or "grp_2",
not "grp" as i specified.. Why?


"Bing" wrote:

Hi,

Still haven't figured this one out.. hopefully someone knows why.

Programmatically i add a querytable (name=qt) to the querytables
collection of a worksheet:

ie.
With activesheet.QueryTables.Add(Connection:="TEXT;c:\l og.txt"),
Destination:=Range("A2"))
.Name="qt"
End With

I then delete that querytable by: qt.delete.

But when i go to recreate that query table using the same name, "qt"
for some reason excel starts appending an underscore than a number
to the query table name each time i delete, then add that querytable
with the same name "qt". Ie. excel changes the name to "qt_1", or
"qt_2", etc.

Anyone know why and how to stop this so taht i can use the same name
"qt" to reference the query table each time i add and delete it.




Bing

Why is Excel appending numbers to querytables.
 
Hi Dick, OJ,

Thanks to both of you for trying to help out. Well i have just about given
up on this one too. Like you guys said, i'll just keep the old querytable
and reinit the connection parameters.

Thanks again for helping! Very much appreciated.

Cheers,


"Dick Kusleika" wrote:

Bing

I've had inconsistent results adding and deleting qts. When you create a
qt, Excel also creates a range name. Deleting the qt doesn't delete the
range name, however. If you create a qt with the same name as an existing
range name, Excel will append an incrementing digit to the end.

Based on that, you'd think you could just delete the named range when you
delete the qt, but that doesn't always work. I can't figure out what I'm
doing differently, because sometimes it does work.

The best way, in my opinion, is to not delete the qt in the first place. If
you want to change the qt, change the Connection and Commandtext properties
and Refresh it. Then you have the same qt object the whole time (with the
same name) and you just change certain aspects of it.


--
Dick Kusleika
Excel MVP
Daily Dose of Excel
www.dicks-blog.com

Bing wrote:
Sorry, but a typo..

i delete the querytable (name="qt") using the reference to the
querytable returned when i added it to the worksheet querytables
collection, not via qt.delete:

qtable = activesheet.querytables.add (... )
qtable.name = "grp"

qtable.delete

when i then add that table again:
qtable = activesheet.quertables.add(..)
qtable.name = "grp"

excel actually creates teh query table with name "grp_1", or "grp_2",
not "grp" as i specified.. Why?


"Bing" wrote:

Hi,

Still haven't figured this one out.. hopefully someone knows why.

Programmatically i add a querytable (name=qt) to the querytables
collection of a worksheet:

ie.
With activesheet.QueryTables.Add(Connection:="TEXT;c:\l og.txt"),
Destination:=Range("A2"))
.Name="qt"
End With

I then delete that querytable by: qt.delete.

But when i go to recreate that query table using the same name, "qt"
for some reason excel starts appending an underscore than a number
to the query table name each time i delete, then add that querytable
with the same name "qt". Ie. excel changes the name to "qt_1", or
"qt_2", etc.

Anyone know why and how to stop this so taht i can use the same name
"qt" to reference the query table each time i add and delete it.






All times are GMT +1. The time now is 03:06 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com