如何通过VBA打开txt文件,按要求编辑后保存

原txt文件有两列数据,以空格分割,没有.txt扩展名。我想VBA使用打开对话框选择文件后,分列。A列不变,对B列数据归一化处理(即:最小值赋值为0、最大值赋值为1,中间... 原txt文件有两列数据,以空格分割,没有.txt扩展名。我想VBA使用打开对话框选择文件后,分列。
A列不变,对B列数据归一化处理(即:最小值赋值为0、最大值赋值为1,中间其他值按相应比例赋值为零点几)后,使用原文件名保存、加上.txt扩展名。 例如 ,原文件为 a , 生成的文件为 a.txt
谢谢各位
展开
 我来答
xiangjuan314
2016-01-14 · TA获得超过3.3万个赞
知道大有可为答主
回答量:2.9万
采纳率:0%
帮助的人:2885万
展开全部
1、直接采用Open函数+Line input命令
Private Sub txt_read()()
       Dim txt As String
        Open "D:\dzh.txt" For Input As #1 '
        '对文件做任何 I/O 操作之前都必须先打开文件。Open 语句分配一个缓冲区供文件进行 I/O 之用,
        '并决定缓冲区所使用的访问方式。
        '打开文件作为数据输入用,文件号为#1
        Do While Not EOF(1)
            Line Input #1, txt  '从已打开的顺序文件中读出一行并将它分配给 String 变量
            'Line Input # 语句一次只从文件中读出一个字符,直到遇到回车符 (Chr(13))
            '或回车–换行符 (Chr(13) + Chr(10)) 为止。回车–换行符将被跳过,而不会被附加到字符串
            MsgBox txt
        Loop
        Close #1
End Sub


2、利用FileSystemObject对象(引用windows script host object model)

Sub TextStreamTest()
    '**如果引用“windows script host object model”,可以定义如下的数据类型,编程更方便!!!!*******
    Dim fs As FileSystemObject, f As File, ts As TextStream, s As String
    '打开一个只读文件,不能对此文件进行写操作/
    '打开一个用于写操作的文件。如果和此文件同名的文件已存在,则覆盖以前内容/
    '打开一个文件并写到文件的尾部
    Const ForReading = 1, ForWriting = 2, ForAppending = 8
    '使用系统缺省打开文件/以 Unicode 格式打开文件/以 ASCII 格式打开文件
    Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
    'Dim fs, f, ts, s
    Set fs = CreateObject("Scripting.FileSystemObject")
    'FileSystemObject 对象提供对计算机文件系统的访问
    '下面FileSystemObject.CreateTextFile 返回一个 TextStream 对象,该对象是可读并可写的:
    On Error Resume Next  '如果文件存在,下个命令会出错!获得文件
    fs.CreateTextFile("test1.txt", False).WriteLine ("This is a test.") '创建一个文件,返回一个用于该文件读写的TextStream对象
    Set f = fs.GetFile("test1.txt")          '返回一个和指定路径中文件相对应的 File 对象
    '错误!f.WriteLine ("This is a test.")          '向创建的文本文件中写入一行文本,非TextStream对象,错误!!
    
    Set ts = f.OpenAsTextStream(ForAppending, TristateUseDefault) '打开一个指定的文件并返回一个 TextStream 对象
    'OpenAsTextStream 方法提供了和 FileSystemObject. 的 OpenTextFile 方法相同的功能/
    '此外,OpenAsTextStream 方法还可以用于对一个文件进行写操作。
    ts.Write "Hello World"
    ts.Close
    Set ts = f.OpenAsTextStream(ForReading, TristateUseDefault)
    Do While Not ts.AtEndOfStream
        s = ts.ReadLine
        MsgBox s
    Loop
    ts.Close
End Sub
握岩炭3
推荐于2016-09-14 · TA获得超过159个赞
知道小有建树答主
回答量:275
采纳率:100%
帮助的人:95.7万
展开全部
sub sd
tx=createobject("scripting.filesystemobject").OpenTextFile("文本路径", 1, True).readall
处理tx...........................
createobject("scripting.filesystemobject").CreateTextFile("a.txt").WriteLine (tx)
end sub
追问
没看明白,请指教一下啊
追答
首先,你的问题太过笼统,没有对象,总不能让帮你回答的人自己去臆造些和你的 数据不相符的数据来模拟你的问题吧。
我只是给你一个开始和结束的思路。
去这里提问:

http://club.excelhome.net/forum-2-1.html
上个附件,尽可能清楚的描述问题。很快会有答案的
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
泷渊忻书竹
2019-02-22 · TA获得超过3773个赞
知道大有可为答主
回答量:3108
采纳率:26%
帮助的人:395万
展开全部
vba是微软office用于开发的插件,介于手机硬件的局限性,应该暂时无法在手机端集成开发工具,所以,手机上的excel是无法使用vba的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式