SolidWorks机械工程师网——最大的SolidWorks学习平台

标题: 求问:vba获取txt文件内容的问题 [打印本页]

作者: tg000057    时间: 2022-4-11 09:30
标题: 求问:vba获取txt文件内容的问题
如题
以下代码是别处获得的,用vba获取txt文件内的内容,  
想修改的是 aa= .ReadText,这句是把txt的内容全部放到aa内,aa是字符串。
如果是按行获取要怎么弄,就是txt内容按一行一行放到一个一个字符串内,然后应该获取的是一个数组!
我想到的修改是这样:aa= Split(.ReadText, Chr(10)),aa是数组了,但每一项后面都多了一个空格,分裂那里用“空格”+Chr(10)又识别不了了,只能后面再去除数组里的空格。
这样并不理想,求高手解答一下用其他方法的!

With CreateObject("ADODB.Stream")
  .Type = 2
  .Mode = 3
  .Open
  .LoadFromFile txt文件路径
  .Charset = "UTF-8"
  .Position = 2
  aa= .ReadText
  .Close
End With



作者: Allate    时间: 2022-4-11 09:30
方法一:
假如有三行,可以这样写(如果后面还有,还可以继续Readline)
  1. Set FSO = CreateObject("Scripting.FileSystemObject")
  2. Set swTxt = FSO.OpenTextFile(TxtFileFullPathName, 1)
  3. aa = swTxt.Readline
  4. bb = swTxt.Readline
  5. cc = swTxt.Readline
复制代码

其中,TxtFileFullPathName就是TXT的全路径。

方法二:
继续沿用你之前的办法,就是分割的字符更改一下,这样——
  1. aa= Split(.ReadText, Chr(13)&Chr(10))
复制代码


作者: kangbanghua872    时间: 2022-4-11 12:00
顶一下,坐等高手!
作者: tg000057    时间: 2022-4-13 09:08
Allate 发表于 2022-4-12 21:08
方法一:
假如有三行,可以这样写(如果后面还有,还可以继续Readline)

方法二吧,原来回车和换行不是同一个意思,Chr(13)和Chr(10),查了资料才知道。
另外,方法一可以这样的:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set swtxt = FSO.OpenTextFile(ffff, 1, True)
Do While Not swtxt.atendofstream
ReDim Preserve xxxx(xint)
xxxx(xint) = swtxt.ReadLine
xint = xint + 1
Loop

还有另一种方法:
,
nnnn = FreeFile()
Open ffff For Input As nnnn
While Not EOF(nnnn)
    ReDim Preserve xxxx(xint)
    Line Input #nnnn, xxxx(xint)
    xint = xint + 1
Wend
,
只是上述这两种,如果txt文件内容有中文的话,就会变成乱码,,,





作者: wscgb123    时间: 2022-5-29 17:56
感谢楼主分享,很不错!
作者: UDF998    时间: 2022-8-25 16:36
好东西,努力学习学习!
作者: yun6yun7    时间: 2022-10-12 19:53
感谢楼主分享,很不错!




欢迎光临 SolidWorks机械工程师网——最大的SolidWorks学习平台 (https://www.swbbsc.com/) Powered by Discuz! X3.2