在txt文件中,有固定的格式内容,比如 生产厂商:甲厂 生产规格:乙系列 想用VBA直接写到excel里
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在txt文件中,有固定的格式内容,比如 生产厂商:甲厂 生产规格:乙系列 想用VBA直接写到excel里相关的知识,希望对你有一定的参考价值。
写到excel里,表格中有对应的生产厂商和生产规格的空格,空格中要对应txt中的内容,这个要通过按钮的形式转换,请问怎么办啊。。。每天都会有很多这样的txt文件需要转到excel中, 求大家帮忙啊。。。谢谢啦
就好像图片上的,通过按钮提取txt中的相应内容,表格中的第三行不需要从txt中转换过来,是自己输入的标题。
在Excel VBA中可以使用Add方法新建查询表后导入文本文件,如下面的代码所示。
#001 Sub AddQuery()
#002 Sheet1.UsedRange.ClearContents
#003 With Sheet1.QueryTables.Add( _
#004 Connection:="TEXT;" & ThisWorkbook.Path & "\工资表.txt", _
#005 Destination:=Range("A1"))
#006 .TextFilePlatform = 936
#007 .TextFileCommaDelimiter = True
#008 .Refresh
#009 End With
#010 End Sub
代码解析:
AddQuery过程使用QueryTable对象的Add方法新建查询表后将文本文件“工资表.txt”的内容导入到工作表中。
应用于QueryTable对象的Add方法新建一个查询表,返回QueryTable对象,该对象代表新建的查询表,语法如下:
expression.Add(Connection, Destination, Sql)
参数expression是必需的,返回一个QueryTables对象。
参数Connection是必需的,查询表的数据源。如果数据源是文本文件,是“TEXT;<文本文件路径和名称>”形式的字符串,其他数据源请参阅帮助。
参数Destination是必需的,Range类型,查询表目标区域左上角单元格用于放置生成的查询表的区域。目标区域必须在包含expression 指定的QueryTables对象的工作表上。
参数Sql是可选的,在ODBC数据源上运行的SQL查询字符串,当将QueryTable对象、文本文件、或是ADO或DAO Recordset对象指定为数据源时不能使用该参数。
第3行到第5行代码在工作表中建立对位于同一目录中的“工资表.txt”文本文件的查询,并将查询结果放置到工作表中。
第6行代码设置导入的文本文件的原始格式,QueryTables对象的TextFilePlatform属性返回或设置正向查询表中导入的文本文件的原始格式,默认值是在“文本导入向导”的“文件原始格式”选项中的当前设置。
第7行代码设置文本文件导入查询表中时,是以逗号作为分隔符。
第8行代码使用Refresh方法更新外部数据区域,应用于QueryTable对象的Refresh方法更新外部数据区域,语法如下:
expression.Refresh(BackgroundQuery)
参数expression是必需的,返回一个QueryTable对象。
参数BackgroundQuery是可选的的,只用于基于SQL查询结果的QueryTable。追问
谢谢回复,我比较菜,基本没怎么看懂,帮忙发到我邮箱吧,zhangxi1103@yahoo.de 谢谢啦。
追答已经发了。Rufeng_00
参考技术A 1. 所有TXT 文件放一目录2. 用 msoFileDialogFolderPicker , 用 DIR() 得文件名到数量到数组
或者 msoFileDialogFilePicker (multiple selection) ,selected item做个循环, 一个个读入文件
3. ActiveSheet.QueryTables.Add 加到 sheet1
4. 用FIND “生产地”,循环COPY到SHEET2 。FIND “发货人”...
这种算法不太好,希望高手有其他逻辑。追问
恩,谢谢啦,我先试试看,不一定能写出来啊。。。。自己太菜了
参考技术B 使用替换功能不行吗?空格中要对应txt中的内容是都不相同还是有相同的?追问请问替换功能怎么用啊, 对应的都是相同的,比如txt中有 发货地点:北京 然后对应的表格中 就有发货地点,相对应的我想把txt中的北京转移到表格对应的发货地点的单元格下面,最好可以一次处理多个txt。
追答那发货地点有什么标识呢,如果有对应是北京的,就这样用替换功能就是.
参考技术C 找个会的人写个VBA吧追问周围身边的朋友没有人会写啊,都是学设计的,所以只会画图什么的。。。。
在matlab中怎么读取txt格式的数据文件
我有一个文本格式的数据文件具体如下:
*code1 换行 1,2,3 换行4,5,6 换行*code2换行7,8,9 也就是一个标题下面就是一个矩阵数据,但注意数据之间有逗号,我想通过matlab将每个标题下数据读取到一个数组中,怎么办?我在网上查的方法不管用,哪位编程高手帮忙解决下,小弟不胜感激!
一、纯数据文件(没有字母和中文,纯数字) 对于这种txt文档,从matalb中读取就简单多了 。
例如test.txt文件,内容为“17.901 -1.1111 33.045
17.891 -1.1286 33.045 17.884 -1.1345 33.045” 可以在command window中输入load test.txt ,然后就会产生一个test的数据文件,内容跟test.txt中的数据一样;另一种方法是在file/import data....../next/finish 也可产生一个叫test的数据文件。
二、中英文和数据如test1.txt
“你好 欢迎来到 振动论坛
vib.hit.edu.cn 1 11 111 1111 2 22 222 2222 3 33 333 3333 4 44 444 4444 5 55 555 5555”
这样的文件怎么读入数据呢?
方法有多种,现举两个比较简单实用的。
方法一:
file/import data....../next/finish >> whos
Name Size Bytes Class data 5x4 160 double array textdata 4x1 300 cell array Grand total is 54 elements using 460 bytes >> data data =
1 11 111 1111 2 22 222 2222 3 33 333 3333 4 44 444 4444 5 55 555 5555 >> textdata textdata =
'你好'
'欢迎来到' '振动论坛'
'vib.hit.edu.cn'
方法二:
[a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4)
说明:%s可以是其他形式,跟读入的数据类型有关,比如这里也可以用%n,%f等。
这里%s的个数和[a1,a2,a3,a4]对应。
>> [a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4) a1 = '1' '2' '3' '4' '5' a2 = '11' '22' '33' '44' '55' a3 = '111' '222' '333' '444' '555' a4 =
'1111' '2222' '3333' '4444' '5555'
因以字符串的形式读入,所以有''。 参考技术A 首先Matlab是可以解决这个问题,这里有哥们写了一些code,我觉得太麻烦了。
给你推荐一个简单办法,进入txt 按CTRL+H 用空格去替代‘,’。问题很简单就解决了。
假设你是三列数据,数据从123.txt第n行开始。读取数据的Matlab格式如下 :
[a1 a2 a3]=textread('123.txt','%f %f %f','headerlines',n-1);本回答被提问者采纳 参考技术B 可以直接用importdata这个函数啊。
>>importdata('a.txt') 参考技术C 把数据文件发到matlabguy@163.com,我看一下。
以上是关于在txt文件中,有固定的格式内容,比如 生产厂商:甲厂 生产规格:乙系列 想用VBA直接写到excel里的主要内容,如果未能解决你的问题,请参考以下文章