1234

ExcelHome技术论坛

用户名  找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 获取不打开工作薄数据

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2025-4-2 15:20 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

谢谢老师的热心,可能我语言表达不准确。点“导入数据”按钮后,如下图: image.png 这时“合并企业”表数据到了第18行,我再点一次“导入数据”,导出表里的11行数据还要再加入进来,这时“合并企业”表数据到了18+11=29行,再按一次按钮,就有29+11=40行数据,也就是在点“导入数据”按钮时,不能清空原来”合并企业“表的原来数据,而是在原有数据基础上一直累加下去。老师代码精简有效,我许多看不懂,不能的话自己来修改。

TA的精华主题

TA的得分主题

发表于 2025-4-2 15:23 | 显示全部楼层
参与一下,仅供参考,使用SQL方法。。。
image.png
image.png

需导入数据表.zip

88.27 KB, 下载次数: 13

评分

4

查看全部评分

TA的精华主题

TA的得分主题

发表于 2025-4-2 15:24 | 显示全部楼层
本帖最后由 ykcbf1100 于 2025-4-2 15:26 编辑
yfxfsj 发表于 2025-4-2 15:20
谢谢老师的热心,可能我语言表达不准确。点“导入数据”按钮后,如下图:这时“合并企业”表数据到了第18 ...

现在就是递增式写入数据的,有问题吗?哦,取最大行的语句应该用第2列。我再改一下吧。

新建文件夹 (2).zip

34.11 KB, 下载次数: 6

TA的精华主题

TA的得分主题

发表于 2025-4-2 15:24 | 显示全部楼层
代码如下。。。
Sub test()
    Dim arr(1 To 10000, 1 To 11)
    Dim wb As Workbook, sht As Worksheet, sh As Worksheet
    Set wb = ThisWorkbook
    Set sht = wb.Sheets("合并企业")
    r = sht.Cells(Rows.Count, 2).End(3).Row
    Set cnn = New ADODB.Connection
    cnn.Open "provider=microsoft.Ace.oledb.12.0;extended properties=excel 12.0;data source=" & ThisWorkbook.Path & "\导出表.xlsx"
    Sql = "select * from [导出表$] "
    Set rs = New ADODB.Recordset
    rs.Open Sql, cnn, adOpenKeyset, adLockOptimistic
    For i = 1 To CLng(rs.RecordCount)
        n = n + 1
        arr(n, 1) = rs.Fields(2).Value
        arr(n, 2) = rs.Fields(0).Value
        arr(n, 3) = rs.Fields(3).Value
        arr(n, 6) = rs.Fields(4).Value
        arr(n, 7) = rs.Fields(5).Value
        arr(n, 10) = rs.Fields(6).Value
        arr(n, 11) = rs.Fields(7).Value
        rs.MoveNext
    Next i
    sht.Cells(r + 1, 2).Resize(n, 11) = arr
    Beep
    rs.Close
    cnn.Close
    Set rs = Nothing
    Set cnn = Nothing
End Sub
   

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2025-4-2 15:27 | 显示全部楼层
ykcbf1100 发表于 2025-4-2 15:24
现在就是递增式写入数据的,有问题吗?哦,取最大行的语句应该用第2列。我再改一下吧。

image.png
这个表头也给我清空了

TA的精华主题

TA的得分主题

 楼主| 发表于 2025-4-2 15:34 | 显示全部楼层
quqiyuan 发表于 2025-4-2 15:23
参与一下,仅供参考,使用SQL方法。。。

正解,谢谢老师帮助!

TA的精华主题

TA的得分主题

 楼主| 发表于 2025-4-2 15:38 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
ykcbf1100 发表于 2025-4-2 15:24
现在就是递增式写入数据的,有问题吗?哦,取最大行的语句应该用第2列。我再改一下吧。

完美解决,再次感谢老师。

TA的精华主题

TA的得分主题

发表于 2025-4-2 17:22 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
yfxfsj 发表于 2025-4-2 15:27
这个表头也给我清空了

标题行复制回去就行了。

新建文件夹 (2).zip

35.5 KB, 下载次数: 12

TA的精华主题

TA的得分主题

发表于 2025-4-2 18:27 | 显示全部楼层
Option Explicit
Sub test()
    Dim ar, br, cr, i&, j&, r&, strFileName$, strPath$
   
   
    strPath = ThisWorkbook.Path & "\"
    strFileName = strPath & "导出表.xlsx"
   
    If Dir(strFileName) = "" Then MsgBox "未找到数据": Exit Sub
   
    Application.ScreenUpdating = False
   
    cr = [{1,3;2,1;3,4;6,5;7,6;10,7;11,8}]
    ReDim ar(1 To 10 ^ 4, 1 To 11)
   
    With GetObject(strFileName)
        br = .Worksheets(1).[A1].CurrentRegion.Value
        For i = 2 To UBound(br)
            r = r + 1
            For j = 1 To UBound(cr)
                ar(r, cr(j, 1)) = br(i, cr(j, 2))
            Next j
        Next i
        .Close False
    End With
   
    r = Cells(Rows.Count, "B").End(xlUp).Row + 1
    Cells(r, 2).Resize(UBound(br) - 1, UBound(ar, 2)) = ar
    Application.ScreenUpdating = True
    Beep
End Sub

TA的精华主题

TA的得分主题

发表于 2025-4-2 18:27 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

1234

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

GMT+8, 2025-4-6 10:55 , Processed in 0.039683 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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