ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 数据量稍微一大就内存不够用 大神来助

[复制链接]
头像被屏蔽

TA的精华主题

TA的得分主题

发表于 2018-10-10 16:18 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

TA的精华主题

TA的得分主题

发表于 2018-10-10 16:23 来自手机 | 显示全部楼层
ado多薄首表合并,f1等于合并工作薄名称

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-10 18:09 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
朱荣兴 发表于 2018-10-10 16:18
意思基本看懂了,其实你是思路没有考虑好,才会导致那么长的代码,频繁的打开工作簿文件,最终才会导致运行 ...

多谢 我试试看

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-10 18:10 | 显示全部楼层
LMY123 发表于 2018-10-10 16:23
ado多薄首表合并,f1等于合并工作薄名称

不懂 我尝试学下 谢谢

TA的精华主题

TA的得分主题

发表于 2018-10-10 22:51 | 显示全部楼层
Sub 收集数据()
Dim datawb As Object
[A1:D1] = Array("日期", "项目", "测值", "源数据文件名")
[h1] = ThisWorkbook.Path & "\源数据" '设置源数据文件夹
For i = 2 To [F65535].End(xlUp).Row '从F列获取工作薄名称
Path = [h1] & "\" & Format(Cells(i, "f"), "yyyy-m-d") & ".xlsx" '设置源数据文件路径
Set datawb = GetObject(Path) '获取工作薄workbook对象
mylastrow = Sheets("收集数据").Range("A65535").End(xlUp).Row '当前表A列最后一行
datalastrow = datawb.Sheets(1).Range("a65535").End(xlUp).Row '源数据表数据行数
n = mylastrow + 1 '写入当前表的行数标识
For j = 2 To datalastrow
    Cells(n, "A") = datawb.Sheets(1).Cells(1, 1) '日期
    Cells(n, "B") = datawb.Sheets(1).Cells(j, 1) '测量项目
    Cells(n, "C") = datawb.Sheets(1).Cells(j, 2) '测值
    Cells(n, "D") = datawb.Name '源数据工作薄名称
n = n + 1 '写入行+1准备写入下一行
Next j '下一条源数据
datawb.Close '关闭源数据工作薄
Next i '下一个源数据工作薄
End Sub

复件3 库存.rar

25.18 KB, 下载次数: 0

数据整理.rar

1.59 MB, 下载次数: 5

TA的精华主题

TA的得分主题

发表于 2018-10-10 22:58 | 显示全部楼层
本帖最后由 wuxianyu86 于 2018-10-10 23:00 编辑

先把所有数据都收集到一起让后再分析,最近我也是在学习VBA,代码写的不咋滴,只写了个收集数据的.希望对你有帮助;直接取的数据,估计速度不行;

TA的精华主题

TA的得分主题

发表于 2018-10-10 23:26 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
传个附件怎么莫名的多了个 复件3 库存.rar 还不能删除

TA的精华主题

TA的得分主题

发表于 2018-10-11 09:42 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
hexaking 发表于 2018-10-10 18:10
不懂 我尝试学下 谢谢

Sub ADO_多薄首表_合并_无标题行()
    Range("A2:Z1048576") = ""
    Set conn = CreateObject("adodb.connection")
    Path = ThisWorkbook.Path
    n = UBound(Split(Path, "\"))
    sPath = Replace(Path, Split(Path, "\")(n), "源数据/")
    Fn = Dir(sPath & "*.xls?")
    Set Rst = VBA.CreateObject("ADODB.Recordset")
    Application.ScreenUpdating = False
    Do While Len(Fn)
        If InStr(Fn, "0030") = 0 And InStr(Fn, "test") = 0 Then
            sConnect = "Provider=Microsoft.ACE.OLEDB.12.0;extended Properties='excel 12.0;HDR=no';data source=" & sPath & Fn
            SQL = "Select F2 from [A:B] Where f1='" & Split(ThisWorkbook.Name, ".")(0) & "'"
            Rst.Open SQL, sConnect, 3, 1
            If Not (Rst.BOF And Rst.EOF) Then
                Set Rng = Cells(Rows.Count, 2).End(3).Offset(1)
                Rng.CopyFromRecordset Rst
                Rng.Offset(, -1).Resize(Rst.RecordCount) = "'" & Split(Fn, ".")(0)
            End If
            Rst.Close
        End If
        Fn = Dir()
    Loop
    Application.ScreenUpdating = True
    Set Rst = Nothing
    Set Rng = Nothing
End Sub
Sub 批量复制文件() ''代码在另一工作薄中使用
    Path = ThisWorkbook.Path
    For h = 2 To 100
        FileCopy Path & "\A1.xlsm", Path & "\" & "A" & h & ".xlsm"
    Next h
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-11 14:02 来自手机 | 显示全部楼层
wuxianyu86 发表于 2018-10-10 22:51
Sub 收集数据()
Dim datawb As Object
[A1:D1] = Array("日期", "项目", "测值", "源数据文件名")

我试试看 多谢大佬

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-11 14:03 来自手机 | 显示全部楼层
LMY123 发表于 2018-10-11 09:42
Sub ADO_多薄首表_合并_无标题行()
    Range("A2:Z1048576") = ""
    Set conn = CreateObject("adod ...

谢谢指教 我研究下
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-17 03:00 , Processed in 0.024345 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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