ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 647|回复: 9

[讨论] 内存数据中的五虎上将

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-4-5 11:59 | 显示全部楼层 |阅读模式
本帖最后由 OKJSJSF 于 2022-4-5 12:42 编辑

最近在练习VBA合并同一文件夹中的多个工作簿中(工作簿来源于系统下载)的第一个工作表中(有表头有表尾但有空行隔开数据区域)的数据,合并的同时要追加工作簿名称,要按指定列去重,发现速度很慢,提速的技术据我个人知识面只知道是通过内存变量实现,所以开本贴请家人们分享下经验,谈谈内存数据中的五大招:【名称、数组、集合、字典、无表记录集】,在完成工作表数据迁移中,如何组合速度才更快。

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-4-5 12:09 | 显示全部楼层
数据迁移的第一步,对话框指定文件夹。第二步是分析文件夹中的工作簿中的工作表中的数据表的标题行是否被更改,是否有筛选条件的同时工作表被保护,是否有合并单元格。

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-4-5 12:27 | 显示全部楼层
第三步是当数据源不正常时,把不正常的工作簿名称与不正常情况赋给内存数据,对话框提醒用户,由用户决定是将错就错执行下一步,还时退出程序纠正数据表。如选择退出,则新建工作簿,在活动工作表中第一列写入不正常的工作簿名称超链接,第二、三、四列写入三种不正常情况。
第四步,当数据源正常时,或用户纠正数据表后,或将错就错,程序操作第一个工作簿的数据。数据赋值给内存……

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-4-5 12:31 | 显示全部楼层
本帖最后由 OKJSJSF 于 2022-4-5 12:40 编辑

接下来是开始驾驶拖拉机在高速路上狂奔了。

TA的精华主题

TA的得分主题

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

TA的精华主题

TA的得分主题

发表于 2022-4-5 12:57 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
纸上谈兵终觉浅绝知此事要躬行

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-4-5 13:44 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-4-9 15:26 | 显示全部楼层

前期工作代码,提示哪些工作簿需密码才能打开。
Sub ggg()
    Dim p As String, oldn As String, r As Integer, i As Byte, wbn As String, wb As Workbook
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show = -1 Then
            p = .SelectedItems(1) & IIf(Right(.SelectedItems(1), 1) = "\", "", "\")
        Else
            Exit Sub
        End If
    End With
    Worksheets.Add
    Cells(1) = "下列文件需凭密码打开:"
    oldn = ActiveWorkbook.Name
    wbn = Dir(p & "*.xlsx")
    Do
        If wbn = "" Then Exit Sub
        r = ActiveSheet.UsedRange.Rows.Count + 1
        On Error Resume Next
        Set wb = Workbooks.Open(Filename:=p & wbn, Password:="")
        If wb.HasPassword Then
            Workbooks(oldn).Worksheets(1).Hyperlinks.Add Cells(r, 1), p & wbn, , wbn, wbn
            Cells(r + 1, 1).Select
        End If
        wb.Close False
        wbn = Dir
    Loop
    Set wb = Nothing
End Sub
上述代码无法在执行完毕后用对话框msgbox提示一下,选择单元格的语句放在最后也无法执行,不知这是一种什么情况?

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-4-9 15:32 | 显示全部楼层
文件打开如需密码,在循环取数时会逐个提示录入密码,所以应提前一步取消密码,如坐在电脑边等,也可以一个个操作,但如遇忘了密码,那就无法正常完成任务。

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-4-12 22:20 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 OKJSJSF 于 2022-4-13 12:38 编辑

今天在网上搜索工作表保护参数allowfiltering:=true时,居然第一次知道,原来,工作表保护只不过一层薄薄的肥皂泡,象爱情一样脆弱,一吹即破。工作表保护只是自己玩玩的东西,主要用于防止误操作破环格式内容。我自己设置保护时,就这样,基本只用没密的保护。解密只需二句代码,用上三个参数即可。如下插入一个宏:
sub unpr()
activesheet.protect drawingobjects:=false,contents:=true,allowfiltering:=true
activesheet.unprotect
end sub
就这么容易,运行一下宏即解除工作表保护。如此,我的“小程序”加载宏必须改进了。
这我就纳闷,莫非工作簿文件的打开保护也有简单的破解语句,或者VBE工程也可解密,只是我一个人不知道而已?我太单纯了,一直没注意过这个问题。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-6-3 07:50 , Processed in 0.030825 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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