楼主 xyf2210 |
由于工作需求,需要频繁的将业务系统导出的TXT文件数据,导入到EXCEL中,经过数据整理后,再导出到txt文本中。经过查找学习,总结了一下,EXCEL和TXT文本文件的数据交互,在VBA中,主要有以下几种方式: 按导入和导出分开来进行解析,如有一些不恰当的解释,请大家指正: (一)导入文本文件数据到EXCEL中: 以如图所示文本文件为例:
然后,我们要处理成这个的格式:
创建与导入文本文件.rar
|
2楼 xyf2210 |
(1)首先,我们可以一个,当年在VB里面,用来处理文本文件的利器,open语句 Open语句打开文件的语法为: Open 路径+文件名 For Input As #数字 '数字就是打开的这个文件的别名 之后,我们可以用Line Input语句,一行行的把数据导入,并进行处理,直至文本文件的尾端(EOF(1)),详见代码。这个方法是最常用的,大家尽量学透就是了。- Sub Open方法()
- Dim d, i, sr$, temp
- Set d = CreateObject("scripting.dictionary") '引用字典
- With Sheet1
- .UsedRange.ClearContents '清除原有的数据
- i = 1
- Open ThisWorkbook.Path & "\工资表.txt" For Input As #1 '使用open语句输入
- Do While Not EOF(1) '运行到文件的结尾结束
- Line Input #1, sr '按行读取数据
- d(i) = Split(sr, ",") '以逗号分割字符串
- i = i + 1
- Loop
- Close #1 '关闭文本文件
- temp = Application.Transpose(d.Items) '转置字典的项
- .Range("a1").Resize(d.Count, UBound(temp)) = Application.Transpose(temp) '将数组写入单元格
- End With
- Set d = Nothing
- End Sub
|
3楼 xyf2210 |
(2)相信,很多人学习VBA,都是从录制宏学起吧,呵呵,我们可以运用,excel的获取外部数据,导入文本数据的功能(如图) 录制宏,进行修改,来导入文本数据,我们可以发现,EXCEL其实是运用QueryTables这个对象来导入数据(QueryTables对象成员解析,详见F1帮助说明,里面很详细,本文就不再复述)。首先运用add的方法,添加连接,然后运用QUERYTABLE对象的关于分隔符设置的属性(详细见F1里面,QueryTable 对象成员中,TEXT打头的几个属性),处理文本,导入数据。详细代码如下:- Sub 查询表方法()
- With Sheet1
- .UsedRange.ClearContents '清除原有的数据
- With .QueryTables.Add(Connection:="TEXT;" & ThisWorkbook.Path & "\工资表.txt", Destination:=Range("A1")) '新建查询表
- .TextFileCommaDelimiter = True '以逗号作为分隔符
- .Refresh '更新外部数据区域
- End With
- End With
- End Sub
|
4楼 xyf2210 |
(3)其实,大家不知道有没有试过,我们其实可以用文件-打开-选择文本文件-打开,的方法,也可以导入文本文件(如图)
一样,我们可以用录制宏的方式进行学习。我们观察代码,EXCEL其实是调用了Workbooks.OpenText方法,来导入文件(F1里面,对这个方面的解释,相当的详细,大家可以去看看,主要也是一些属性的设置)。详细见如下代码解释:- Sub opentext方法()
- Dim arr
- With Sheet1
- .UsedRange.ClearContents '清除原有的数据
- Workbooks.OpenText FileName:=ThisWorkbook.Path & "\工资表.txt", DataType:=xlDelimited, Startrow:=1, comma:=True
- 'startrow:=1是文本分列处理的起始行号
- 'DataType:=xlDelimited是指示文件由分隔符分隔
- 'comma:=true是指以逗号作为分隔符
- arr = ActiveWorkbook.Sheets("工资表").UsedRange
- ActiveWorkbook.Close False
- .Range("a1").Resize(UBound(arr), UBound(arr, 2)) = arr
- End With
- End Sub
|
5楼 xyf2210 |
(4)我们还可以调用FSO(FileSystemObject)方法来导入文本文件。FSO对象,大家一般都是用于文件和文件夹的处理。其实它也支持对文本流对象的处理的。FSO对象博大精深,详细的解释请参考MSDN,由于这个对象较难,初学者,可以把以下代码,作为模板,进行修改使用。- Sub fso方法()
- Dim d, i, sr$, temp, myfile As Object
- With Sheet1
- .UsedRange.ClearContents
- Set d = CreateObject("scripting.dictionary") '引用字典
- Set myfile = CreateObject("scripting.filesystemobject").OpenTextFile(ThisWorkbook.Path & "\工资表.txt")
- '引用FSO需要单击工具-引用-选中Microsoft Scripting Runtime
- 'fso的opentextfile方法文件并返回一个TextStream对象
- i = 1
- Do While Not myfile.AtEndOfStream '运行到myfile的结尾
- sr = myfile.ReadLine '读取整行
- d(i) = Split(sr, ",")
- i = i + 1
- Loop
- myfile.Close
- temp = Application.Transpose(d.Items)
- .Range("a1").Resize(d.Count, UBound(temp)) = Application.Transpose(temp)
- End With
- Set d = Nothing: Set myfile = Nothing
- End Sub
|
6楼 xyf2210 |
(5)接下来是,ADO+SQL法,很多数据库的高手,喜欢用SQL来处理文本数据,这个方法比较灵活,可以先读入再分列,但是比较复杂,而且ADO对象解析起来也可以写一本书了。大家也是,把以下代码,当做模板,进行修改使用。- Sub ado方法()
- Dim adoconn As Object, strSQL As String, strConn As String, AdoRst As Object
- Dim i, txt
- Set adoconn = CreateObject("adodb.connection")
- txt = ThisWorkbook.Path & "\工资表.txt"
- With Sheet1
- .UsedRange.ClearContents '清除原有的数据
- '设置连接字符串
- strConn = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
- "Data Source=" & ThisWorkbook.Path & ";Extended Properties=""Text;HDR=YES"""
- strSQL = "select * from 工资表.txt" '设置SQL查询语句
- adoconn.Open strConn '打开数据库连接
- Set AdoRst = adoconn.Execute(strSQL) '执行查询,并将结果输出到记录集对象
- For i = 0 To AdoRst.Fields.Count - 1
- .Cells(1, i + 1) = AdoRst.Fields(i).Name '填写标题
- Next
- .Range("A2").CopyFromRecordset AdoRst '导入记录集
- End With
- AdoRst.Close: adoconn.Close '关闭数据库连接
- End Sub
|
7楼 xyf2210 |
(6)最后一种,来个偏门,仅作为补充学习,较难。当没有WINDOW的时候,大家又是怎么读取文本文件的呢。呵呵,在DOS环境里面,可以用type语句来显示文本文件的数据。在VBA里面,我们可以借用WSH,来执行DOS语句,并将文本内容读入。先行声明,Windows95/98 中已经都可以使用长文件名/目录 (最长可以到255个字节),但是目前版本不支持复杂的长文件名,可以利用API函数取得短文件名,再利用短文件名读入文本文件。
- Sub dos用法()
- Dim StrCmd As String, StrPath As String * 256, LngRes As Integer
- Dim i As Integer, str As String, arr1, arr2
- LngRes = GetShortPathName(ThisWorkbook.Path & "\工资表.txt", StrPath, 256)
- Sheet1.UsedRange.ClearContents
- str = CreateObject("wscript.shell").exec(Environ("comspec") & " /c""type " & StrPath).StdOut.ReadAll
- arr1 = Split(str, vbCrLf)
- ReDim arr2(1 To UBound(arr1), 1 To 3)
- For i = 1 To UBound(arr1)
- arr2(i, 1) = Split(arr1(i - 1), ",")(0)
- arr2(i, 2) = Split(arr1(i - 1), ",")(1)
- arr2(i, 3) = Split(arr1(i - 1), ",")(2)
- Next i
- [a1].Resize(i - 1, 3) = arr2
- End Sub
|
8楼 xyf2210 |
讲完了导入,那导出呢,我们怎么把数据从EXCEL导出到TXT文件呢。呵呵,其实很多都是上面几种方法的反方向而已。 (1)第一种,还是,OPEN语句 Open 路径+文件名 For Output As #数字 ‘数字为文件的别名 用OPEN语句创建文本文件,就可以使用PRINT语句,一行行的输出文本内容了。- Sub test()
- Dim file As String, arr, i
- '定义文本文件的名称
- file = ThisWorkbook.Path & "\工资表.txt"
- '判断是否存在同名文本文件,存在先行删除
- If Dir(file) <> "" Then Kill file
- '将当前的数据读入数组
- arr = Sheet2.Range("a1").CurrentRegion
- '使用print语句将数组中所有数据写入文本文件
- Open file For Output As #1
- For i = 1 To UBound(arr)
- Print #1, Join(Application.Index(arr, i), ",")
- Next
- '关闭文本文件
- Close #1
- End Sub
|
9楼 xyf2210 |
(2)还是录制宏,录制,文件-另存为-文本文件的宏(如图)
这个方法的好处就是,处理速度很快,但是就是,格式比较单一,较难个性化的保存其中的文本数据。- Sub 另存为文本文件()
- Dim file As String
- '定义文本文件的名称
- file = ThisWorkbook.Path & "\工资表.txt"
- '判断是否存在同名文本文件,存在先行删除
- If Dir(file) <> "" Then Kill file
- '复制工作表另存为文本文件,xlCSV即保存为文本文件
- Sheet2.Copy
- ActiveWorkbook.SaveAs FileName:=file, FileFormat:=xlCSV
- ActiveWorkbook.Close False
- End Sub
|
10楼 xyf2210 |
(3)第三种,调用FSO对象,去创建和保存文本数据。这个方法一样,比较难,作为拓展了解吧。可以使用createtextfile和OpenTextFile进行操作。- Sub createtextfile()
- Dim arr, i, myfile As Object
- '创建FSO对象利用Createtextfile方法创建文本文件
- 'object.CreateTextFile(filename[, overwrite[, unicode]])
- '参数overwrite是可选的,表示是否覆盖已存在文件,如果省略,则已存在文件不能覆盖,这里面这只True,表示覆盖
- Set myfile = CreateObject("scripting.filesystemobject").createtextfile(ThisWorkbook.Path & "\工资表.txt", True)
- '将当前的数据读入数组
- arr = Sheet2.Range("a1").CurrentRegion
- '使用WriteLine方法写入一个指定的字符串和换行符到文本文件中
- For i = 1 To UBound(arr)
- myfile.WriteLine Join(Application.Index(arr, i), ",")
- Next
- '关闭对象
- myfile.Close
- Set myfile = Nothing
- End Sub
- Sub OpenTextFile()
- Dim arr, i, myfile As Object
- '创建FSO对象利用OpenTextFile方法创建文本文件
- 'object.OpenTextFile(filename[, iomode[, create[, format]]])
- '参数iomode是可选的,1 forreading,打开只读,不能操作;8 forappending,打开并写入尾部
- '参数create是可选的,没有即创建
- '此例即追加
- Set myfile = CreateObject("scripting.filesystemobject").OpenTextFile(ThisWorkbook.Path & "\工资表.txt", 8, True)
- '将当前的数据读入数组
- arr = Sheet2.Range("a1").CurrentRegion
- '使用WriteLine方法写入一个指定的字符串和换行符到文本文件中
- For i = 1 To UBound(arr)
- myfile.WriteLine Join(Application.Index(arr, i), ",")
- Next
- '关闭对象
- myfile.Close
- Set myfile = Nothing: Erase arr
- End Sub
|
11楼 xyf2210 |
希望对大家对于文本文件的操作有所帮助,特别是和我一样,奋战在ERP啊等多系统对接的同仁们,有时候用TXT文件作为媒介,交互数据是常事。 介于本人对VBA还处于学习阶段,好多方法都不甚理解,希望各位朋友们指正。 印象中ADO+SQL也是支持导出文本数据的,待查,也请其他高手补充。 |
12楼 yjzstar |
跟魔王学习! |
13楼 lnt1231 |
魔王平时太低调了 |
14楼 YESS95 |
二师兄真V5 |
15楼 windimi007 |
魔王太牛了哈! |
16楼 bluexuemei |
辛苦了,方法真多 |
17楼 weikang2516 |
好难,不大懂,迷迷糊糊的 |
18楼 ruoyu |
收藏并学习了 |
19楼 keven |
牛啊!赞一个额 |
20楼 i彳亍 |
棒,棒,棒 |
21楼 xyf2210 |
由于工作需求,需要频繁的将业务系统导出的TXT文件数据,导入到EXCEL中,经过数据整理后,再导出到txt文本中。经过查找学习,总结了一下,EXCEL和TXT文本文件的数据交互,在VBA中,主要有以下几种方式: 按导入和导出分开来进行解析,如有一些不恰当的解释,请大家指正: (一)导入文本文件数据到EXCEL中: 以如图所示文本文件为例:
然后,我们要处理成这个的格式:
创建与导入文本文件.rar
|
22楼 xyf2210 |
(1)首先,我们可以一个,当年在VB里面,用来处理文本文件的利器,open语句 Open语句打开文件的语法为: Open 路径+文件名 For Input As #数字 '数字就是打开的这个文件的别名 之后,我们可以用Line Input语句,一行行的把数据导入,并进行处理,直至文本文件的尾端(EOF(1)),详见代码。这个方法是最常用的,大家尽量学透就是了。- Sub Open方法()
- Dim d, i, sr$, temp
- Set d = CreateObject("scripting.dictionary") '引用字典
- With Sheet1
- .UsedRange.ClearContents '清除原有的数据
- i = 1
- Open ThisWorkbook.Path & "\工资表.txt" For Input As #1 '使用open语句输入
- Do While Not EOF(1) '运行到文件的结尾结束
- Line Input #1, sr '按行读取数据
- d(i) = Split(sr, ",") '以逗号分割字符串
- i = i + 1
- Loop
- Close #1 '关闭文本文件
- temp = Application.Transpose(d.Items) '转置字典的项
- .Range("a1").Resize(d.Count, UBound(temp)) = Application.Transpose(temp) '将数组写入单元格
- End With
- Set d = Nothing
- End Sub
|
23楼 xyf2210 |
(2)相信,很多人学习VBA,都是从录制宏学起吧,呵呵,我们可以运用,excel的获取外部数据,导入文本数据的功能(如图) 录制宏,进行修改,来导入文本数据,我们可以发现,EXCEL其实是运用QueryTables这个对象来导入数据(QueryTables对象成员解析,详见F1帮助说明,里面很详细,本文就不再复述)。首先运用add的方法,添加连接,然后运用QUERYTABLE对象的关于分隔符设置的属性(详细见F1里面,QueryTable 对象成员中,TEXT打头的几个属性),处理文本,导入数据。详细代码如下:- Sub 查询表方法()
- With Sheet1
- .UsedRange.ClearContents '清除原有的数据
- With .QueryTables.Add(Connection:="TEXT;" & ThisWorkbook.Path & "\工资表.txt", Destination:=Range("A1")) '新建查询表
- .TextFileCommaDelimiter = True '以逗号作为分隔符
- .Refresh '更新外部数据区域
- End With
- End With
- End Sub
|
24楼 xyf2210 |
(3)其实,大家不知道有没有试过,我们其实可以用文件-打开-选择文本文件-打开,的方法,也可以导入文本文件(如图)
一样,我们可以用录制宏的方式进行学习。我们观察代码,EXCEL其实是调用了Workbooks.OpenText方法,来导入文件(F1里面,对这个方面的解释,相当的详细,大家可以去看看,主要也是一些属性的设置)。详细见如下代码解释:- Sub opentext方法()
- Dim arr
- With Sheet1
- .UsedRange.ClearContents '清除原有的数据
- Workbooks.OpenText FileName:=ThisWorkbook.Path & "\工资表.txt", DataType:=xlDelimited, Startrow:=1, comma:=True
- 'startrow:=1是文本分列处理的起始行号
- 'DataType:=xlDelimited是指示文件由分隔符分隔
- 'comma:=true是指以逗号作为分隔符
- arr = ActiveWorkbook.Sheets("工资表").UsedRange
- ActiveWorkbook.Close False
- .Range("a1").Resize(UBound(arr), UBound(arr, 2)) = arr
- End With
- End Sub
|
25楼 xyf2210 |
(4)我们还可以调用FSO(FileSystemObject)方法来导入文本文件。FSO对象,大家一般都是用于文件和文件夹的处理。其实它也支持对文本流对象的处理的。FSO对象博大精深,详细的解释请参考MSDN,由于这个对象较难,初学者,可以把以下代码,作为模板,进行修改使用。- Sub fso方法()
- Dim d, i, sr$, temp, myfile As Object
- With Sheet1
- .UsedRange.ClearContents
- Set d = CreateObject("scripting.dictionary") '引用字典
- Set myfile = CreateObject("scripting.filesystemobject").OpenTextFile(ThisWorkbook.Path & "\工资表.txt")
- '引用FSO需要单击工具-引用-选中Microsoft Scripting Runtime
- 'fso的opentextfile方法文件并返回一个TextStream对象
- i = 1
- Do While Not myfile.AtEndOfStream '运行到myfile的结尾
- sr = myfile.ReadLine '读取整行
- d(i) = Split(sr, ",")
- i = i + 1
- Loop
- myfile.Close
- temp = Application.Transpose(d.Items)
- .Range("a1").Resize(d.Count, UBound(temp)) = Application.Transpose(temp)
- End With
- Set d = Nothing: Set myfile = Nothing
- End Sub
|
26楼 xyf2210 |
(5)接下来是,ADO+SQL法,很多数据库的高手,喜欢用SQL来处理文本数据,这个方法比较灵活,可以先读入再分列,但是比较复杂,而且ADO对象解析起来也可以写一本书了。大家也是,把以下代码,当做模板,进行修改使用。- Sub ado方法()
- Dim adoconn As Object, strSQL As String, strConn As String, AdoRst As Object
- Dim i, txt
- Set adoconn = CreateObject("adodb.connection")
- txt = ThisWorkbook.Path & "\工资表.txt"
- With Sheet1
- .UsedRange.ClearContents '清除原有的数据
- '设置连接字符串
- strConn = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
- "Data Source=" & ThisWorkbook.Path & ";Extended Properties=""Text;HDR=YES"""
- strSQL = "select * from 工资表.txt" '设置SQL查询语句
- adoconn.Open strConn '打开数据库连接
- Set AdoRst = adoconn.Execute(strSQL) '执行查询,并将结果输出到记录集对象
- For i = 0 To AdoRst.Fields.Count - 1
- .Cells(1, i + 1) = AdoRst.Fields(i).Name '填写标题
- Next
- .Range("A2").CopyFromRecordset AdoRst '导入记录集
- End With
- AdoRst.Close: adoconn.Close '关闭数据库连接
- End Sub
|
27楼 xyf2210 |
(6)最后一种,来个偏门,仅作为补充学习,较难。当没有WINDOW的时候,大家又是怎么读取文本文件的呢。呵呵,在DOS环境里面,可以用type语句来显示文本文件的数据。在VBA里面,我们可以借用WSH,来执行DOS语句,并将文本内容读入。先行声明,Windows95/98 中已经都可以使用长文件名/目录 (最长可以到255个字节),但是目前版本不支持复杂的长文件名,可以利用API函数取得短文件名,再利用短文件名读入文本文件。
- Sub dos用法()
- Dim StrCmd As String, StrPath As String * 256, LngRes As Integer
- Dim i As Integer, str As String, arr1, arr2
- LngRes = GetShortPathName(ThisWorkbook.Path & "\工资表.txt", StrPath, 256)
- Sheet1.UsedRange.ClearContents
- str = CreateObject("wscript.shell").exec(Environ("comspec") & " /c""type " & StrPath).StdOut.ReadAll
- arr1 = Split(str, vbCrLf)
- ReDim arr2(1 To UBound(arr1), 1 To 3)
- For i = 1 To UBound(arr1)
- arr2(i, 1) = Split(arr1(i - 1), ",")(0)
- arr2(i, 2) = Split(arr1(i - 1), ",")(1)
- arr2(i, 3) = Split(arr1(i - 1), ",")(2)
- Next i
- [a1].Resize(i - 1, 3) = arr2
- End Sub
|
28楼 xyf2210 |
讲完了导入,那导出呢,我们怎么把数据从EXCEL导出到TXT文件呢。呵呵,其实很多都是上面几种方法的反方向而已。 (1)第一种,还是,OPEN语句 Open 路径+文件名 For Output As #数字 ‘数字为文件的别名 用OPEN语句创建文本文件,就可以使用PRINT语句,一行行的输出文本内容了。- Sub test()
- Dim file As String, arr, i
- '定义文本文件的名称
- file = ThisWorkbook.Path & "\工资表.txt"
- '判断是否存在同名文本文件,存在先行删除
- If Dir(file) <> "" Then Kill file
- '将当前的数据读入数组
- arr = Sheet2.Range("a1").CurrentRegion
- '使用print语句将数组中所有数据写入文本文件
- Open file For Output As #1
- For i = 1 To UBound(arr)
- Print #1, Join(Application.Index(arr, i), ",")
- Next
- '关闭文本文件
- Close #1
- End Sub
|
29楼 xyf2210 |
(2)还是录制宏,录制,文件-另存为-文本文件的宏(如图)
这个方法的好处就是,处理速度很快,但是就是,格式比较单一,较难个性化的保存其中的文本数据。- Sub 另存为文本文件()
- Dim file As String
- '定义文本文件的名称
- file = ThisWorkbook.Path & "\工资表.txt"
- '判断是否存在同名文本文件,存在先行删除
- If Dir(file) <> "" Then Kill file
- '复制工作表另存为文本文件,xlCSV即保存为文本文件
- Sheet2.Copy
- ActiveWorkbook.SaveAs FileName:=file, FileFormat:=xlCSV
- ActiveWorkbook.Close False
- End Sub
|
30楼 xyf2210 |
(3)第三种,调用FSO对象,去创建和保存文本数据。这个方法一样,比较难,作为拓展了解吧。可以使用createtextfile和OpenTextFile进行操作。- Sub createtextfile()
- Dim arr, i, myfile As Object
- '创建FSO对象利用Createtextfile方法创建文本文件
- 'object.CreateTextFile(filename[, overwrite[, unicode]])
- '参数overwrite是可选的,表示是否覆盖已存在文件,如果省略,则已存在文件不能覆盖,这里面这只True,表示覆盖
- Set myfile = CreateObject("scripting.filesystemobject").createtextfile(ThisWorkbook.Path & "\工资表.txt", True)
- '将当前的数据读入数组
- arr = Sheet2.Range("a1").CurrentRegion
- '使用WriteLine方法写入一个指定的字符串和换行符到文本文件中
- For i = 1 To UBound(arr)
- myfile.WriteLine Join(Application.Index(arr, i), ",")
- Next
- '关闭对象
- myfile.Close
- Set myfile = Nothing
- End Sub
- Sub OpenTextFile()
- Dim arr, i, myfile As Object
- '创建FSO对象利用OpenTextFile方法创建文本文件
- 'object.OpenTextFile(filename[, iomode[, create[, format]]])
- '参数iomode是可选的,1 forreading,打开只读,不能操作;8 forappending,打开并写入尾部
- '参数create是可选的,没有即创建
- '此例即追加
- Set myfile = CreateObject("scripting.filesystemobject").OpenTextFile(ThisWorkbook.Path & "\工资表.txt", 8, True)
- '将当前的数据读入数组
- arr = Sheet2.Range("a1").CurrentRegion
- '使用WriteLine方法写入一个指定的字符串和换行符到文本文件中
- For i = 1 To UBound(arr)
- myfile.WriteLine Join(Application.Index(arr, i), ",")
- Next
- '关闭对象
- myfile.Close
- Set myfile = Nothing: Erase arr
- End Sub
|
31楼 keven |
xlcsv是excel文件格式把!xltext才是文本文件吧! |
32楼 swbuing |
学习学习 |
33楼 rongjun |
感谢分享! |
34楼 wjc2090742 |
好帖子。为了查TextStream来的。感觉比较喜欢fso的方式。 |
35楼 skyboyhxc |
额,还以为是打包的 |
36楼 老糊涂 |
收藏学习了 |
37楼 gfp12345678 |
谢谢。很有用。。 |
38楼 weseeyou |
学习学习了! |
39楼 keleccy |
收藏了,谢谢版主! 应用中发现有点问题,就是导出文本时,如果数据表不规律,各行单元格多少不一时,导出文件会多出一些逗号,为去除多余的逗号,稍微修改了一下(print方法)。
- Sub print语句()
- Dim file As String, arr, i, j, temp
- '定义文本文件的名称
- file = ThisWorkbook.Path & "\工资表.txt"
- '判断是否存在同名文本文件,存在先行删除
- If Dir(file) <> "" Then Kill file
- '将当前的数据读入数组
- arr = Sheet2.Range("a1").CurrentRegion
- '使用print语句将数组中所有数据写入文本文件
- Open file For Output As #1
- For i = 1 To UBound(arr)
- For j = 1 To UBound(arr, 2)
- If arr(i, j) <> "" Then
- temp = temp & "," & arr(i, j)
- End If
- Next j
- Print #1, Right(temp, Len(temp) - 1)
- temp = ""
- Next
- '关闭文本文件
- Close #1
- End Sub
|