ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
12
返回列表 发新帖
楼主: lanny.mo

[求助] 用ADO不打开源文件,读取其资料,已成功,请教其中两个小问题

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-1-7 23:50 | 显示全部楼层
其实就是二个问题
问题一
[" & (k) & "$A5:w5] 此行号和列号变量,怎么写

cells(i,j).resize(r,100).address(0,0)表示已经OK,谢谢

问题二,

如果读取的内容“列”过大,就会报错

我看了规律是,存放的不能超出“Z”列,到AA列就会报错了

RST.Open "select * from [" & (3) & "$" & Cells(5, 1).Resize(1, 24).Address(0, 0) & "]",

反上面红色的“24”改为25或以上,马上报错

如附件所示

[ 本帖最后由 lanny.mo 于 2011-1-7 23:52 编辑 ]

QSS-1.rar

26.11 KB, 下载次数: 19

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-1-8 00:07 | 显示全部楼层
报错的地方是,数据存放的那些代码里[data$" & Chr(97 + j) & (i + 1) & ":" & Chr(97 + j) & (i + 1) & "],如果我把代码改为[data$" & Cells(5, 1).Resize(1, 24).Address(0, 0) & "]的话,向右延伸都是1,无论怎么改C的值

[ 本帖最后由 lanny.mo 于 2011-1-8 00:10 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-1-8 00:22 | 显示全部楼层
ASCII最多只到Z,如果超过Z的栏请改用Cells(Row,Column)

但我改成Cells(Row,Column)后,列的数据只能读取一列为什么呢,那里错了

TA的精华主题

TA的得分主题

发表于 2011-1-8 02:10 | 显示全部楼层
改为[data$" & Cells(5, 1).Resize(1, 24).Address时,5应该用变量,后面的set就不一样了,应该是:
strt = "update [Sheet1$" & Cells(i + 1, 5).Resize(1, 24).Address(0, 0) & "] set f1=' " & arr(i,1) & "' f2='" arr(i,2) "'" & ……

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-1-8 23:21 | 显示全部楼层
完美解决,非常感谢!

TA的精华主题

TA的得分主题

发表于 2013-3-28 17:52 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
做个记号,明天复习

TA的精华主题

TA的得分主题

发表于 2015-3-8 22:30 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Public Sub ado方法导入EXCEL文件()

Dim lcConnectSring, szSQL, lcCommandText As String
Dim loADODBConnection As Variant
Dim loADODBRecordset As Variant


Dim fileToOpen
  fileToOpen = Application.GetOpenFilename("打开所有文件,*.*")
  If fileToOpen <> False Then
          MsgBox "即将导入文件:" & fileToOpen & " 的内容!"
  End If
  
'  Dim fileToOpen As String
'  Dim fdg As FileDialog
'  Dim filename$
'  Set fdg = Application.FileDialog(msoFileDialogOpen)
'  With fdg
'    .Filters.Clear
'    .Filters.Add "EXCEL文件", "*.XLS"
'    filename = .Show
'    fileToOpen = fdg.SelectedItems(1)
'  End With

lcConnectionString = "Driver={Microsoft Excel Driver (*.xls)};" & _
                     "DBQ=" + fileToOpen + ";" & _
                     "ReadOnly=true"
                  
lcCommandText = "select * from [1$]"
Set loADODBConnection = CreateObject("ADODB.Connection")
Set loADODBRecordset = CreateObject("ADODB.Recordset")

'打开变量,将loADODBConnection的内容装入loADODBRecordset

loADODBConnection.Open lcConnectionString
loADODBRecordset.Open lcCommandText, loADODBConnection, 3, 1, 1
Sheets("Sheet1").Activate


Dim r, f As Integer
r = 1
For f = 0 To loADODBRecordset.Fields.Count - 1
Sheets("Sheet1").Cells(r, f + 1).Value = loADODBRecordset.Fields(f).Name
Next
While Not loADODBRecordset.EOF
r = r + 1
For f = 0 To loADODBRecordset.Fields.Count - 1
Sheets("Sheet1").Cells(r, f + 1).Value = loADODBRecordset.Fields(f).Value
Next
loADODBRecordset.MoveNext
Wend

        
         
loADODBConnection.Close
Cells.Rows.AutoFit
Cells.Columns.AutoFit

With ActiveWindow
        .SplitColumn = 0
        .SplitRow = 1
    End With
    ActiveWindow.FreezePanes = True

End Sub

TA的精华主题

TA的得分主题

发表于 2015-3-8 22:31 | 显示全部楼层
fileToOpen文件最好用变量,实用。

TA的精华主题

TA的得分主题

发表于 2023-5-18 19:09 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
gtwlren 发表于 2015-3-8 22:31
fileToOpen文件最好用变量,实用。

老师能否移步https://club.excelhome.net/threa ... tml?_dsign=577675d0,解决25楼问题。谢谢!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-16 09:25 , Processed in 0.044075 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表