吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1730|回复: 10
收起左侧

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

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

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

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

image.png

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

[Visual Basic] 纯文本查看 复制代码
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  有没有大神知道问题在哪

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
zjtaigame + 1 + 1 热心回复!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

kKDXZ 发表于 2023-5-5 17:48
太棒了感谢
pdfhvy141 发表于 2023-5-5 18:10
youbudenibuxiao 发表于 2023-5-5 19:12
[Visual Basic] 纯文本查看 复制代码
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吾爱币 +1 热心值 +1 收起 理由
cherrycdh + 1 + 1 谢谢@Thanks!

查看全部评分

 楼主| cherrycdh 发表于 2023-5-5 20:34
youbudenibuxiao 发表于 2023-5-5 19:12
[mw_shl_code=vb,true]Private Sub CommandButton3_Click()
    Dim TextFilePath As String
    Dim Tex ...

谢谢,后来忙别的去了,明天上班了试下
vvzpcg 发表于 2023-5-5 21:50
能不能再讲细一点,这东西到底有什么用处呢?
maguoli123 发表于 2023-5-5 22:16
还能这样玩啊。大佬啊
 楼主| cherrycdh 发表于 2023-5-6 13:51
youbudenibuxiao 发表于 2023-5-5 19:12
[mw_shl_code=vb,true]Private Sub CommandButton3_Click()
    Dim TextFilePath As String
    Dim Tex ...

谢谢大佬,但是还是出现了问题,在分隔分本的时候,因为是以%作为分割的,所以导致最后保存后%不见了,
 楼主| cherrycdh 发表于 2023-5-6 13:53
youbudenibuxiao 发表于 2023-5-5 19:12
[mw_shl_code=vb,true]Private Sub CommandButton3_Click()
    Dim TextFilePath As String
    Dim Tex ...

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

还在不断学习中~
[Visual Basic] 纯文本查看 复制代码
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吾爱币 +1 热心值 +1 收起 理由
cherrycdh + 1 + 1 用心讨论,共获提升!

查看全部评分

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 23:11

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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