吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1168|回复: 7
收起左侧

[讨论] 恩还是vba的,反正我就是天天有问题 T_T,关于文本文件导入与输出

[复制链接]
cherrycdh 发表于 2021-4-28 16:11
就是在文本文件的导入导出过程中,有这么一段代码(当然我其实之前有做过导入功能,也做过导出功能了)但是还是不懂里面的一个
作用呢,是以下这个
image.png
然后呢,代码呢,我跟着老师学的之后自己也编了
[Visual Basic] 纯文本查看 复制代码
Sub 合并两个文本文件()
    Dim i As Long, s As String, j As Long
    '打开两个需要合并的文本文件,并且赋予他们唯一的编号,只要文件打开就必须是编号唯一
    Open "E:\Excel VBA入门及应用\vba提高篇\13、第十二回的文本文件\文本1.txt" For Input As #1
    Open "E:\Excel VBA入门及应用\vba提高篇\13、第十二回的文本文件\文本2.txt" For Input As #2
    '行号从22号开始循环
    i = 22
    '循环操作代号1和代号2文件,循环到末尾为止
    Do While Not EOF(1) Or Not EOF(2)
        '假如文件1没到末尾,那么对文件1做数据行读取并且输入
        '循环是从第一行开始,以后循环一次就是+1的循环,因此不需要额外再做操作
        If Not EOF(1) Then
            Line Input #1, s
            '这里是将s写入到之前i行的2号单元格,然后写入后i+1
            Cells(i, 2) = s: i = i + 1
        End If
        '这里是读取的2号文件,这里因为前面的if中i+1了,因此这里其实是后面一行了
        If Not EOF(2) Then
            Line Input #2, s
            Cells(i, 2) = s: i = i + 1
        End If
    Loop
    Close #1: Close #2
    '当到了excel中后再进入到合并文件中去,这里写了编号#1是因为,原来的文件已经关闭了
    '内存中已经释放了#1,所以才使用的
    Open "E:\Excel VBA入门及应用\vba提高篇\13、第十二回的文本文件\合并.txt" For Output As #1
    i = 22
    Do While Cells(i, 2) <> ""
        Print #1, Trim(Cells(i, 2))
        i = i + 1
    Loop
    Close #1
End Sub

其他的呢,我都能懂,什么打开啊,关闭啊,打印啊,都能明白了
就是在读取每一行并定义成变量s的时候,为什么line input #1后面是","加上s,而不是line input #1=s,我知道如果是=s程序会报错,但是我不知道在这里vba为啥是,而不是=,不理解就钻牛角尖了

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

马云爱逛京东 发表于 2021-4-28 16:21
你这样子写感觉更麻烦
读文件时,用的line input可以读一整行的数据,直接输出到新的文件里面就够了,再读取到单元格内就画蛇添足了
Takitooru 发表于 2021-4-28 16:42
本帖最后由 Takitooru 于 2021-4-28 16:44 编辑

就是在读取每一行并定义成变量s的时候,为什么line input #1后面是","加上s,而不是line input #1=s,我知道如果是=s程序会报错,但是我不知道在这里vba为啥是,而不是=,不理解就钻牛角尖了

【但是我不知道在这里vba为啥是,而不是=】
解释:
因为line input# 语法就是这样解析:
line input #filenumber,varname
filenumber  必要。任何有效的文件号
      varname     必要。有效的variant(变体数据)值或string(字符串)变量名

以你的代码举例:
Line Input #1, s
意思就是从 #1 这个文件里读取一行,并赋值给 s 这个定义的变量
分拆解释就是:
line input = 函数
#1 = #filenumber
s = varname

所以现在你应该懂了,为什么是, 而不是=
列明 发表于 2021-4-28 17:08
別問,
問就是規定!
這是VBA語法,
讀入一行文本的命令就是這樣,
不這麽寫就實現不了功能。
你若想按照你的方法來,
就利用這個命令封裝一個你自己起的名字的讀文本行的方法。
那就可以了。
比如:
s=讀入一行(文本文件名,第幾行)
Yjzhong0755 发表于 2021-4-28 17:09
逻辑错误吧,
image.png
 楼主| cherrycdh 发表于 2021-4-30 09:22
马云爱逛京东 发表于 2021-4-28 16:21
你这样子写感觉更麻烦
读文件时,用的line input可以读一整行的数据,直接输出到新的文件里面就够了,再读 ...

恩恩,因为只学到这,所以多了一个步骤
 楼主| cherrycdh 发表于 2021-4-30 15:04
Takitooru 发表于 2021-4-28 16:42
【但是我不知道在这里vba为啥是,而不是=】
解释:
因为line input# 语法就是这样解析:

明白了,谢谢,
 楼主| cherrycdh 发表于 2021-4-30 15:05

两个文件,所以没有用elseif,如果要用的话估计也可以,嘿嘿,我有的时候就先跟着老师照本宣科,然后再想有没有其他的方法去做,然后么有的时候就会钻点牛角尖
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止回复与主题无关非技术内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

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

GMT+8, 2024-5-17 03:56

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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