如何获得Excel表格中各个Sheet的名字

jsjjms 2006-08-16 04:23:30
如下,我是以ADO 方式打开的。请问在这种情况下如何获得Excel表格各个Sheet的名字?谢谢!
Public Sub connectADO()
'=========================
Dim sBasePath As String
GetUpFolder App.path, sBasePath
Set cn = New ADODB.Connection
With cn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=" & sBasePath & "TEXT\resource.xls;Extended Properties=Excel 8.0;"
.CursorLocation = adUseClient
.Open
End With
'=========================
End Sub
...全文
350 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lskaaa666 2006-08-19
  • 打赏
  • 举报
回复
有一问题请教大师:我用VB编了一个软件,想把查询结果输出至Excel.但输出的结果中
有一两列总是不满意。代码如下:
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Dim i As Integer
Dim j As Integer
Dim iSheet As Integer
Dim mbBookMark As Variant

If rsqX.RecordCount > 0 Then 'rsqX是查询后的记录集。
rsqX.MoveFirst
mbBookMark = rsqX.Bookmark
iSheet = 1 '先把工作簿设为第一页。
Else
Exit Sub
End If

Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Add
xlStart:
Set xlSheet = xlBook.Worksheets(iSheet)
'设每列单元格的标题,在此数据集中,只有第2列,即日期那一列是
'日期类型,其余为文本类型。
xlSheet.Cells(1, 1) = "序号"
xlSheet.Cells(1, 2) = "日期"
xlSheet.Cells(1, 3) = "时间"
xlSheet.Cells(1, 4) = "卡号"
xlSheet.Cells(1, 5) = "姓名"
xlSheet.Cells(1, 6) = "职位"
xlSheet.Cells(1, 7) = "读卡头编号"
xlSheet.Cells(1, 8) = "巡更点名称"
xlSheet.Cells(1, 9) = "状态"
xlSheet.Cells(1, 10) = "部门名称"

rsqX.Bookmark = mbBookMark
i = 0
xlSheet.Cells(i + 2, 1) = i + 1
Do While Not rsqX.EOF
For j = 0 To rsqX.Fields.Count - 1
xlSheet.Cells(i + 2, j + 2) = Convertnull(rsqX.Fields(j).Value)
Next j
rsqX.MoveNext
If Not rsqX.EOF Then
mbBookMark = rsqX.Bookmark
If i > 500 Then '如果超过500行则换一个工作表
iSheet = iSheet + 1
GoTo xlStart
End If
i = i + 1
xlSheet.Cells(i + 2, 1) = i + 1
End If
Loop

xlApp.Visible = True
结果是:第四列的卡号本应是4位数,如0001,0002等,输出却是1,2等;
第七列,本应输出是08-1,09-1,...,13-1,...等,结果输出却是:
8月1日,9月1日,...13-1,....。也即是说,小于或等于12的变成了
日期格式,而大于12的才能正确显示。
我曾经先判断某一列是什么数据类型,然后强迫转换成那种类型,
如:
For j = 0 To rsqX.Fields.Count - 1
if isDate(rsqX.Fields(j).Value) then
xlSheet.Cells(i + 2, j + 2) =CDate(rsqX.Fields(j).Value)
else
xlSheet.Cells(i + 2, j + 2) =CStr(rsqX.Fields(j).Value)
end if
Next j
但还是不行。
不知为何?请问应在哪里转换类型?
seu31199113 2006-08-18
  • 打赏
  • 举报
回复
Set rs = cn.OpenSchema(adSchemaTables)

While Not rs.EOF
Debug.Print rs.Fields("TABLE_NAME")
rs.MoveNext
Wend
jsjjms 2006-08-18
  • 打赏
  • 举报
回复
Set ExcelRs = P_ExcelConn.OpenSchema(ADODB.adSchemaTables)
==========================================
我找过了呀,在ExcelRs里没有各个Sheet的name呀?
华芸智森 2006-08-18
  • 打赏
  • 举报
回复
Set ExcelRs = P_ExcelConn.OpenSchema(ADODB.adSchemaTables)
==========================================
我找过了呀,在ExcelRs里没有各个Sheet的name呀?

你有点可爱了....
华芸智森 2006-08-16
  • 打赏
  • 举报
回复
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ExcelPath & ";Extended Properties=""Excel 8.0;HDR=YES;IMEX=1"""
华芸智森 2006-08-16
  • 打赏
  • 举报
回复
Set ExcelRs = P_ExcelConn.OpenSchema(ADODB.adSchemaTables)
jsjjms 2006-08-16
  • 打赏
  • 举报
回复
没有人会吗?
自己UP一下!

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧