2012-07-16 62 views
60

我有一个文件,它是根据输入手动添加或修改的。由于该文件中的大部分内容都是重复的,因此只有十六进制值正在改变,我想让它成为工具生成的文件。如何使用VBA创建和写入到txt文件

我想写出打算在.txt文件中打印的c代码。

什么是创建使用VBA一个.TXT文件中的命令,我怎么写它

+0

你想它一旦建立修改现有的文件吗?当您直接参考脚本运行时,什么是“c代码” – brettdj 2012-07-16 11:34:49

回答

117

使用FSO创建文件和写入。

Dim fso as Object 
Set fso = CreateObject("Scripting.FileSystemObject") 
Dim oFile as Object 
Set oFile = FSO.CreateTextFile(strPath) 
oFile.WriteLine "test" 
oFile.Close 
Set fso = Nothing 
Set oFile = Nothing  

在这里看到的文档:

+12

,您可以使用正确的类型: 'Dim oFs As New FileSystemObject Dim oFile As TextStream' – 2015-06-16 15:10:18

+0

正在使用优于旧通道方法的Scripting Runtime?我希望有一些理由通过其他经验来支持我的学生。 – 2016-06-07 16:40:17

+0

@RickHenderson,我更喜欢它,如果这就是你的意思。优点是封装。一旦你反对(设置oFile = Nothing |),或者它超出了范围,文件将自动关闭。 – Ben 2016-06-08 08:59:17

15

用了很多冗余的简单方法。

Dim fso As Object 
    Set fso = CreateObject("Scripting.FileSystemObject") 

    Dim Fileout As Object 
    Set Fileout = fso.CreateTextFile("C:\your_path\vba.txt", True, True) 
    Fileout.Write "your string goes here" 
    Fileout.Close 
+0

是否可以使用文件选择器来设置路径? – rrs 2017-02-03 17:13:52

-3
Dim SaveVar As Object 

Sub Main() 

    Console.WriteLine("Enter Text") 

    Console.WriteLine("") 

    SaveVar = Console.ReadLine 

    My.Computer.FileSystem.WriteAllText("N:\A-Level Computing\2017!\PPE\SaveFile\SaveData.txt", "Text: " & SaveVar & ", ", True) 

    Console.WriteLine("") 

    Console.WriteLine("File Saved") 

    Console.WriteLine("") 

    Console.WriteLine(My.Computer.FileSystem.ReadAllText("N:\A-Level Computing\2017!\PPE\SaveFile\SaveData.txt")) 
    Console.ReadLine() 

End Sub() 
+0

这可以帮助写作和阅读文本文件 – 2017-02-10 13:16:51

+1

我认为你不会读问题是什么,也不喜欢解释你将要尝试什么,这在帮助别人时不是一件好事。 – 2017-02-10 13:45:04

+0

而且你甚至没有正确格式化你的答案。 – BDL 2017-02-10 14:52:08

5
Open ThisWorkbook.Path & "\template.txt" For Output As #1 
Print #1, strContent 
Close #1 
+0

请用一些解释和细节来写答案。 – 2017-10-26 20:55:38

+0

这不提供问题的答案。一旦你有足够的[声誉](https://stackoverflow.com/help/whats-reputation),你将可以[对任何帖子发表评论](https://stackoverflow.com/help/privileges/comment);相反,[提供不需要提问者澄清的答案](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- I-DO-代替)。 - [来自评论](/ review/low-quality-posts/17750668) – Rich 2017-10-26 21:21:01

+0

我更喜欢这种方法的FSO方法,因为它不需要外部引用并且很短。虽然我建议使用FreeFile来获取文件编号,而不是将其硬编码为#1。 – phrebh 2018-02-15 19:52:52