cherrycdh 发表于 2023-5-5 17:23

excel读取文件(txt)形式打开,然后用特定的字符分割并保存

{:1_937:} 大神们,小白又遇到问题了,这次是编写一个vba程序,主要功能是将同事导出的文件在excel中用文本文件的形式打开,然后自动分割后以该文件的%后面的后5位字符作为文件名保存

文件是类似于下面这样的
%
O0005fafeafgweer52352563472363467547568u6757978903745623463463%
O0006gergsrgert34534534dfbdfyhew634yerbhdfshberyeryhbdfbnsdtgwerdfnaerty3wefvert6234yfyuj67EDGvabtfQ%
O0013VBESTERTYERBHDFHRTTY345WERGERT34754U8FGBHSDR34Y6GYERH547YRTHBY547856I9Y73476%
O0009VSDTGWERGSDFHN54E654UJHNRTGFMNDRTUY7RDF NBXRTYHRTN XRHBWEBHRTDUY54U8UHBE DRF
当然涉及到数据更多,然后有的可能是%后面是回车再加数据的

然后需要我做的是这样的状态



上面两个功能我已经成功了,现在就是分割文件并保存这里出错了


Private Sub CommandButton3_Click()

    Dim TextFilePath As String
    Dim TextFile As Integer
    Dim FileContent As String
    Dim FileLines() As String
    Dim SplitLine() As String
    Dim i As Long
   
    '获取要导入的文件路径
    TextFilePath = Cells(1, 2)
   
    '打开文件
    TextFile = FreeFile
    Open TextFilePath For Input As TextFile
   
    '读取文件内容
    FileContent = Input(LOF(TextFile), TextFile)
   
    '关闭文件
    Close TextFile
   
    '以%为分隔符拆分文件内容
    FileLines = Split(FileContent, Cells(3, 2))
   
    '逐行写入并保存文件
    For i = 0 To UBound(FileLines)
      '以%后面5个字符为文件名
      SplitLine = Split(FileLines(i), vbCrLf)
      
      Open Cells(2, 2) & Right(SplitLine(0), 5) & ".txt" For Output As TextFile
      
      Print #TextFile, FileLines(i)
      
      Close TextFile
    Next i
   
    '提示导入完成
    MsgBox "导入完成!"

End Sub


:'(weeqw有没有大神知道问题在哪

kKDXZ 发表于 2023-5-5 17:48

太棒了感谢

pdfhvy141 发表于 2023-5-5 18:10

谢楼主分享!成品请发个

youbudenibuxiao 发表于 2023-5-5 19:12

Private Sub CommandButton3_Click()
    Dim TextFilePath As String
    Dim TextFile As Integer
    Dim FileContent As String
    Dim FileLines() As String
    Dim SplitLine() As String
    Dim i As Long
    '获取要导入的文件路径
    TextFilePath = Cells(1, 2)
    '打开文件
    TextFile = FreeFile
    Open TextFilePath For Input As TextFile
    '读取文件内容
    FileContent = Input(LOF(TextFile), TextFile)
    '关闭文件
    Close TextFile
    '以%为分隔符拆分文件内容
    FileContent = Replace(Replace(FileContent, Chr(10), ""), Chr(13), "")
    FileLines = Split(FileContent, Cells(3, 2))
    '逐行写入并保存文件
    For i = 1 To UBound(FileLines)
      '以%后面5个字符为文件名
      Open Cells(2, 2) & Left(FileLines(i), 5) & ".txt" For Output As #1
      Print #1, FileLines(i)
      Close #1
    Next i
    '提示导入完成
    MsgBox "导入完成!"
End Sub

cherrycdh 发表于 2023-5-5 20:34

youbudenibuxiao 发表于 2023-5-5 19:12
Private Sub CommandButton3_Click()
    Dim TextFilePath As String
    Dim Tex ...

:'(weeqw谢谢,后来忙别的去了,明天上班了试下

vvzpcg 发表于 2023-5-5 21:50

能不能再讲细一点,这东西到底有什么用处呢?

maguoli123 发表于 2023-5-5 22:16

还能这样玩啊。大佬啊

cherrycdh 发表于 2023-5-6 13:51

youbudenibuxiao 发表于 2023-5-5 19:12
Private Sub CommandButton3_Click()
    Dim TextFilePath As String
    Dim Tex ...

谢谢大佬,但是还是出现了问题,在分隔分本的时候,因为是以%作为分割的,所以导致最后保存后%不见了,

cherrycdh 发表于 2023-5-6 13:53

youbudenibuxiao 发表于 2023-5-5 19:12
Private Sub CommandButton3_Click()
    Dim TextFilePath As String
    Dim Tex ...


原始和后来的 ,文件名是对的,但是内容中的那个%是需要的,我是在写入文件时直接加那个%号么

youbudenibuxiao 发表于 2023-5-7 10:57

cherrycdh 发表于 2023-5-6 13:53
原始和后来的 ,文件名是对的,但是内容中的那个%是需要的,我是在写入文件时直接加那个%号么

{:1_893:}{:1_1:}还在不断学习中~
Private Sub CommandButton3_Click()
    Dim TextFilePath As String
    Dim TextFile As Integer
    Dim FileContent As String
    Dim FileLines() As String
    Dim SplitLine() As String
    Dim i As Long
    '获取要导入的文件路径
    TextFilePath = Cells(1, 2)
    '打开文件
    TextFile = FreeFile
    Open TextFilePath For Input As TextFile
    '读取文件内容
    FileContent = Input(LOF(TextFile), TextFile)
    '关闭文件
    Close TextFile
    '以%为分隔符拆分文件内容
    FileContent = Replace(Replace(FileContent, Chr(10), ""), Chr(13), "")
    FileLines = Split(FileContent, Cells(3, 2))
    '逐行写入并保存文件
    For i = 1 To UBound(FileLines)
      '以%后面5个字符为文件名
      Open Cells(2, 2) & Left(FileLines(i), 5) & ".txt" For Output As #1
         Print #1, "%" & FileLines(i)
      Close #1
    Next i
    '提示导入完成
    MsgBox "导入完成!"
End Sub
页: [1] 2
查看完整版本: excel读取文件(txt)形式打开,然后用特定的字符分割并保存