ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 想直接用Acess VBA收拾TXT文件然后导入到表里

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-6-11 10:49 | 显示全部楼层 |阅读模式
因为Access的水平菜,所以我现在是把ERP的TXT报表先用EXCEL VBA处理之后,再将EXCEL文件导入到ACCESS的表里去。

现在想请教如何直接用ACCESS处理并导入TXT文件。我的TXT文件是固定字段位数来分割列的,没有用符号分隔符。而且有些重复出现的表头还要先整理删除才能导入到
Access的表里去。

我用EXCEL VBA的代码如下:
FileName = Application.GetOpenFilename("txt,*.txt", , "select", , False)
   
    Open FileName For Input As #1
    aa = Split(StrConv(InputB(LOF(1), 1), vbUnicode), vbCrLf)
    Close #1
     ReDim orr(1 To UBound(aa), 1 To 20)
    m = 0
    For i = 5 To UBound(aa)
                If Len(Trim(aa(i))) < 50 Then GoTo L1
                If InStr(aa(i), "-------") > 0 Then GoTo L1
                If InStr(aa(i), "Custname") > 0 Then GoTo L1
                m = m + 1
                n = 1: orr(m, n) = Trim(Left(aa(i), 45))
                n = 2: orr(m, n) = Trim(Mid(aa(i), 46, 26))
                n = 3: orr(m, n) = Trim(Mid(aa(i), 73, 26))
                n = 4: orr(m, n) = Trim(Mid(aa(i), 100, 38))
                n = 5: orr(m, n) = Trim(Mid(aa(i), 139, 25))                    
                n = 0
L1:           Next
                [a2].Resize(m, 12) = orr

通过上述代码,将所需要的数据赋值给了数组orr。 这个代码应该在ACCESS VBA也可以运行。
现在的问题是如何将数组Orr赋值给表? 请指教。

TA的精华主题

TA的得分主题

发表于 2013-6-11 22:25 | 显示全部楼层
本帖最后由 Renco 于 2013-6-11 22:26 编辑

两个方案:
1.每for ...next 形成一条 insert语句进行表添加
2.组成数组完成后,对数组再进行 For ...next。。进行表添加

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-6-13 11:54 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Renco 发表于 2013-6-11 22:25
两个方案:
1.每for ...next 形成一条 insert语句进行表添加
2.组成数组完成后,对数组再进行 For ...nex ...

假设Access里的表的名字叫“Report1” ,可否赐教添加数组入表“Report1”的代码?

对于Access的对象不熟,不知如何下手,还请多帮助。谢谢

TA的精华主题

TA的得分主题

发表于 2013-6-13 15:26 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
示例文件放上来吧

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-6-13 21:34 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Renco 发表于 2013-6-13 15:26
示例文件放上来吧

是这样的,要处理的TXT是财务系统里的一份报表。单位有制度,无法贴出来。

如果可以,就给示范一条 将数组通过循环insert语句到表Report1就行。 我可以自己再摸索。
谢啦

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-6-22 13:31 | 显示全部楼层
Renco 发表于 2013-6-11 22:25
两个方案:
1.每for ...next 形成一条 insert语句进行表添加
2.组成数组完成后,对数组再进行 For ...nex ...

实在是搞不定。附件里是我的数据库和待导入的TXT文件
表PI1已经建好了。
窗体里有一个按键。希望按下按钮就可以执行TXT文件处理和导入。
代码在窗体下面。请达人帮帮看看

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-6-22 13:32 | 显示全部楼层
{:soso_e175:}附件

Desktop.zip

16.84 KB, 下载次数: 11

TA的精华主题

TA的得分主题

发表于 2013-6-23 10:09 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
xiaoangel 发表于 2013-6-22 13:32
附件

能不能把ACCESS转成2003版的,再发上来。。。不好意思。。没安装2007+
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-17 19:32 , Processed in 0.039207 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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