Home |
Search |
Today's Posts |
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Good day Group,
Uses the code below to get the worksheet names from a closed workbook, How to modify the code to also get the column name of the first column into the listbox? Grateful for help, Brgds CG Rosen Sub GetSheetNames() Dim cnn As ADODB.Connection Dim cat As ADOX.Catalog Dim tbl As ADOX.Table Dim lRow As Long Dim szConnect As String Dim szTableName As String Dim Columns As ADOX.Columns szBookName = sConString1 If Val(Application.Version) < 12 Then szConnect = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & sConString & ";" & _ "Extended Properties=Excel 8.0;" Else szConnect = "Provider=Microsoft.ACE.OLEDB.12.0;" & _ "Data Source=" & sConString1 & ";" & _ "Extended Properties=Excel 12.0 Xml;" End If Set cnn = New ADODB.Connection cnn.Open szConnect Set cat = New ADOX.Catalog Set cat.ActiveConnection = cnn UserForm1.ListBox1.Clear For Each tbl In cat.Tables szTableName = tbl.Name If Right(szTableName, 1) = "$" Then item1 = Left(szTableName, Len(szTableName) - 1) UserForm1.ListBox1.AddItem item1 ????????????????????????????????????????????? End If Next tbl cnn.Close Set cat = Nothing Set cnn = Nothing End Sub |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
First thing to do is turn on the 'Require Variable Declaration' option
on the 'Editor' tab of the VBE Options dialog. This will cause code execution to halt as "item1" and "szBookName" are not declared locally in this sub, and since it doesn't appear to use module/global naming convention techniques I assume you're letting VBA implicitly decide its type. If you declared these elsewhere at module or global level then you should make that apparent in your naming convention: Global scope: g_szBookName; g_item1 Module scope: m_szBookName; m_item1 This will make your code much easier to be understood by others!<g Anything we let VBA do by implicity requires extra processing and so results in poor code performance when we have lots of that happening all over the place.<g You bothered to both explicitly declare all the other variables so why not this one?, AND explictly destroyed the objects you created rather than let VBA do this implicitly! --- To get the name of Fields(1) into the listbox you have to set the ColumnCount property to '2'. The ListBox1 index starts at '0'. That concludes, then, that... ListBox1.List(0, 0) = tbl.Name ListBox1.List(0, 1) = tbl.Fields(1).Name It might be easier to add the table names first and then loop the listbox to add the field names... Dim i As Integer For i = 0 to ListBox1.ListCount - 1 With ListBox1 .List(i, 1) = cat.Tables(.List(i, 0)).Name End With 'ListBox1 Next 'i --- Another way... Dim sTableNames As String, sTableName As String For Each tbl In cat.Tables sTableName = Replace(tbl.Name, "$", "") sTableNames = sTableNames & "|" & sTableName Next 'tbl Dim vTableNames vTableNames = Split(Mid$(sTableNames, 2), "|") Dim lNumTables As Long, i As Long lNumTables = UBound(vTableNames) Dim aListItems(lNumTables, 1) For i = LBound(vTableNames) To UBound(vTableNames) aListItems(i, 0) = vTableNames(i) aListItems(i, 1) = cat.Tables(i + 1).Name Next 'i ListBox1.ColumnCount = 2 ListBox1.List = aListItems HTH -- Garry Free usenet access at http://www.eternal-september.org ClassicVB Users Regroup! comp.lang.basic.visual.misc |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Change the following part of my previous post as shown below...
--- Another way... Dim sTableNames As String, sTableName As String For Each tbl In cat.Tables sTableName = Replace(tbl.Name, "$", "") sTableNames = sTableNames & "|" & sTableName Next 'tbl Dim vTableNames, aListItems() '//**change1 vTableNames = Split(Mid$(sTableNames, 2), "|") Dim lNumTables As Long, i As Long lNumTables = UBound(vTableNames) ReDim aListItems(lNumTables, 1) '//**change2 For i = LBound(vTableNames) To UBound(vTableNames) aListItems(i, 0) = vTableNames(i) aListItems(i, 1) = cat.Tables(i + 1).Name Next 'i ListBox1.ColumnCount = 2 ListBox1.List = aListItems HTH -- Garry Free usenet access at http://www.eternal-september.org ClassicVB Users Regroup! comp.lang.basic.visual.misc |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Ado / Adox ? | Excel Programming | |||
Ado / Adox ? | Excel Programming | |||
Ado / Adox ? | Excel Programming | |||
Ado / Adox ? | Excel Programming | |||
Ado / Adox ? | Excel Programming |