VB6.0+SP6 如何操作Excel2007(xlsx)文件

hcl8260 2016-12-13 10:31:43
我有一段VB6.0+SP6 操作Excel2003(xls)文件的代码,如何能转为操作Excel2007(xlsx)格式的文件?求大神指点

Private xlApp As Object ' Excel.Application
Private xlBook As Object ' Excel.Workbook
Private xlSheet As Object ' Excel.Worksheet


Private Sub SaveExecl()
Dim I As Long
Dim vSql As String
Dim vAdoRes As ADODB.Recordset
On Error Resume Next
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = False
Set xlBook = xlApp.workbooks.Open(txtFile.Text)
Set xlSheet = xlBook.Worksheets(1)
xlSheet.Activate
I = 3
While xlSheet.cells(I, 1) <> ""
vSql = vSql & vbCr & " Insert into AAA(FKey,FTransDate,FNote,FAttachments,FYear) " _
& " values ('" & mKey & "','" & xlSheet.cells(I, 1) & "'," & Str(I) & ",'" & xlSheet.cells(I, 22) & "' ,2016)"

If I Mod 100 = 0 Then
Set vAdoRes = GLData.GetAnyRecordset(vSql)
End If
vSql = ""
I = I + 1
Wend
If vSql <> "" Then Set vAdoRes = GLData.GetAnyRecordset(vSql)
xlBook.Close (True)
xlApp.Quit
Set xlApp = Nothing
End Sub
...全文
527 点赞 收藏 10
写回复
10 条回复
smithlzh 2020年12月03日
楼上的 hcl8260 正解:点赞 cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Persist Security Info=True;" & _ "Data Source=" & txtFile.Text & ";Extended Properties='Excel 12.0;HDR=Yes;IMEX=1'"
回复 点赞
Tiger_Zhao 2016年12月15日
新手必读:提问的智慧
回复 点赞
Tiger_Zhao 2016年12月14日
琼瑶老太毒害了几代人,遗祸无穷啊
回复 点赞
hcl8260 2016年12月14日
百度到答案了, cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Persist Security Info=True;" & _ "Data Source=" & txtFile.Text & ";Extended Properties='Excel 12.0;HDR=Yes;IMEX=1'" 多谢楼上各位
回复 点赞
熊孩子开学喽 2016年12月14日
一边追问"为什么" 一边Resume Next"不说不说我就不说" 这显然是VB版的琼瑶剧嘛, 哈哈
回复 点赞
hcl8260 2016年12月14日
哦,我知道我的问题在哪了,应该是连接字符串有问题,之前的是这样: cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;" & _ "Data Source=" & txtFile.Text & ";Extended Properties='Excel 8.0;HDR=No;IMEX=1'" 请教如果是excel2007的文件,这个字符串应该如何写? 多谢!!
回复 点赞
Tiger_Zhao 2016年12月14日
1楼说得没错。
不响应错误,执行过程对错都不知道,凭什么追究“数据没能插入表中”。
回复 点赞
一如既往哈 2016年12月14日
2003和2007的vba里,确实存在一些不一样的方法或属性,这个需要自己去发现。 楼主提供的代码不完整,提供一个解决思路,仅供参考: 分别打开2003和2007,将createobject改为getobject,然后单步执行知道找到错误位置......
回复 点赞
hcl8260 2016年12月13日
谢谢楼上 不过这样执行后,数据没能插入表中。换成2003文件就没问题~
回复 点赞
舉杯邀明月 2016年12月13日
操作“2003”跟“2007”的代码,没什么区别的。 另: 别动不动在程序中On Error Resume Next !!! 有“错误”是需要解决、处理,而不是选择“无视”!!! 别把那些搞VBS病毒的习惯带到VB6或VBA代码中来。
回复 点赞
发动态
发帖子
VB基础类
创建于2007-09-28

2748

社区成员

19.7w+

社区内容

VB 基础类
社区公告
暂无公告