ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

学习VBA,由宏开始——ACCESS篇

[复制链接]

TA的精华主题

TA的得分主题

发表于 2003-8-14 12:52 | 显示全部楼层 |阅读模式
学习VBA,由宏开始 ——ACCESS篇 说起宏和VBA,不能不提到EXCEL。在EXCEL中,录制宏就是编写VBA代码,可以省下不少时间和学到不少东西.因此在99年,我就通过这种方法及在EXCEL HOME的启发下为单位编写了几个程序,即得到了领导的肯定又确实为经办人员减轻了工作负担,自己得意了好一阵。但是EXCEL在导入、导出外部数据方面远不如ACCESS灵活和简单(其实是自己VBA功力不深),于是根据实际工作的需求,经过一段时间的摸索,基本解决了需求,现记流水帐如下,希望对开始学习VBA FOR ACCESS的兄弟有帮助。 工作目的:从ZIP文件中解压指定的 TXT文件,并将TXT文件中符合条件的记录筛选出来,并另存为一个TXT文件。 解决方法: 1 使用VBA解压指定文件; 主要思路如以下链接:http://mdw.vicp.net/show.asp?id=219 补充以上文章,如果压缩文件中包含目录并要指定文件释放我是按如下格式编写: Rarexe = "C:\program files\winrar\winrar" FileString = Rarexe & " x " & " -o+ " & Source & " " & "?11013.txt" & " " & "c:\aas\" Result = Shell(FileString, vbHide) Rarexe是WINRAR的路径; " x " & " -o+ "是WINRAR命令意为解压并覆盖文件; "?11013.txt"是指定的文件,使用通配符是因为使用完整文件名总是提示找不到文件,加入了路径也是如此。使用通配符后,问题解决。 2 按照指定格式将TXT文件导入ACCESS表中; 首先建立导入(导出)TXT文件的规则;文件——获取外部数据(另存为、导出)——链接表——选择需要链接的文件——链接——高级(设置规则)——保存即可。 然后建立新宏,操作中选择TransferText并在参数设置中填写参数,执行有效后保存。接着通过工具——宏——将宏转换为VBA代码。根据实际需求将代码编写如下: DoCmd.TransferText acImportFixed, "A11013 链接规格", _ yyyy & mm & q, "c:\aas\" & yyyy & mm & q & "\0009\a11013.txt", False, "" 3 ACCESS中筛选指定的记录到新表中; 建立新宏,操作中选择RunSQL并在参数设置中填写正确的SQL语句,执行有效后保存。接着通过工具——宏——将宏转换为VBA代码。根据实际需求将代码编写如下:(定义H为SQL语句) H = "select * into " & I & " from " & timeyy & " WHERE ((([" & timeyy & "].帐号)= """ & I & """));" DoCmd.RunSQL (H) 其中I为ACCESS表中某字段第一条记录的值。通过如下代码实现: Dim b, c, d, e, f, G, H, j As Variant Dim I As String Set b = DBEngine.Workspaces(0).Databases(0) Set c = b.TableDefs(1) Set d = c.Fields(1) Set e = CurrentDb.OpenRecordset("select * from qq") j = 0 For j = 0 To 1 e.Move j Set f = e("帐号") I = f.Value NEXT 4 将产生的新表按指定格式另存为TXT文件 参考导入TXT文件。 通过编辑由宏编译过来的VBA代码,在加入循环语句,基本完成了工作的自动化。 经过这个过程,一直抱怨ACCESS中没有提供录制宏功能的你发现通过将宏转化为VBA代码已经让你窥视了VBA FOR ACCESS的世界。而且ACCESS提供了近百条的宏,一一解读后,你俨然戴上高手的光环。GOOD LUCK!! (文中例,见EXCEL HOME论坛。感谢给予帮助的朋友!) 朱斌 2003/8/14 附录完整代码: Sub 解压缩单全() On Error Resume Next Dim Rarexe As String 'WINRAR执行文件的位置 Dim Source As String ' 解压缩前的原始文件 Dim Target As String ' 解压缩后的目标文件 Dim FileString As String 'Shell指令中的字符串 Dim Result As Long Dim timeyy, yyyy, mm, dd, q As Variant Rarexe = "C:\program files\winrar\winrar" timeyy = InputBox("输入开始解压时间按YYYYMMDD格式", "北京路营业室") yyyy = Left(timeyy, 4) mm = Mid(timeyy, 5, 2) dd = Right(timeyy, 2) q = dd Source = "C:\mfbreport\zipfiles\" & yyyy & mm & q & "_3602-0009" 'MsgBox (q) FileString = Rarexe & " x " & " -o+ " & Source & " " & "?11013.txt" & " " & "c:\aas\" Result = Shell(FileString, vbHide) DoCmd.DeleteObject acTable, timeyy DoCmd.TransferText acImportFixed, "A11013 链接规格", _ yyyy & mm & q, "c:\aas\" & yyyy & mm & q & "\0009\a11013.txt", False, "" Dim b, c, d, e, f, G, H, j As Variant Dim I As String Set b = DBEngine.Workspaces(0).Databases(0) Set c = b.TableDefs(1) Set d = c.Fields(1) Set e = CurrentDb.OpenRecordset("select * from qq") 'G = InputBox("输入时间按YYYYMMDD格式", "北京路营业室") j = 0 For j = 0 To 1 e.Move j Set f = e("帐号") 'MsgBox (f.Value) I = f.Value H = "select * into " & I & " from " & timeyy & " WHERE ((([" & timeyy & "].帐号)= """ & I & """));" 'MsgBox (H) DoCmd.RunSQL (H) DoCmd.TransferText acExportDelim, "A11013 导出规格g", I, "f:\qtsj\" & I & timeyy & ".txt", True, "" DoCmd.DeleteObject acTable, I Next End Sub
[此贴子已经被作者于2003-8-14 13:11:06编辑过]

TA的精华主题

TA的得分主题

发表于 2003-8-16 12:10 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
谢谢!

TA的精华主题

TA的得分主题

发表于 2003-8-22 13:18 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2007-4-8 21:13 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2003-8-23 01:48 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-9-10 01:35 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-9-19 21:44 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2011-3-9 21:28 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

回复 1楼 tof 的帖子

做个记号 明天回单位用

TA的精华主题

TA的得分主题

发表于 2011-11-3 20:03 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
年代久远,排版就乱了。。
现在看着好吃力。

TA的精华主题

TA的得分主题

发表于 2011-11-5 20:34 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-24 10:00 , Processed in 0.042090 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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