Vba 将即时窗口的内容写入文本文件

Vba 将即时窗口的内容写入文本文件,vba,immediate-window,Vba,Immediate Window,我正在编写一个宏,它遍历一个文档,并尝试按样式解析它。现在,指定样式中的任何内容都会复制到即时窗口中。有没有办法进一步自动化宏,将文本从即时窗口移动到txt文件中?否则,任何使用宏的人都无法看到文本,除非他们打开VBA,对吗?我的建议是:同时写入即时窗口和文件。下面的例子 为什么要让信息首先在即时窗口中传输,然后才从那里写入文件?这听起来非常困难,毫无用处 Dim s As String Dim n As Integer n = FreeFile() Open "C:\test.txt" Fo

我正在编写一个宏,它遍历一个文档,并尝试按样式解析它。现在,指定样式中的任何内容都会复制到即时窗口中。有没有办法进一步自动化宏,将文本从即时窗口移动到txt文件中?否则,任何使用宏的人都无法看到文本,除非他们打开VBA,对吗?

我的建议是:同时写入即时窗口和文件。下面的例子

为什么要让信息首先在即时窗口中传输,然后才从那里写入文件?这听起来非常困难,毫无用处

Dim s As String
Dim n As Integer

n = FreeFile()
Open "C:\test.txt" For Output As #n

s = "Hello, world!"
Debug.Print s ' write to immediate
Print #n, s ' write to file

s = "Long time no see."
Debug.Print s
Write #n, s ' other way of writing to file

Close #n


Dim FSO As Scripting.FileSystemObject
Set FSO = New Scripting.FileSystemObject
Dim txs As Scripting.TextStream
Set txs = FSO.CreateTextFile("C:\test2.txt")
s = "I like chickpeas."
Debug.Print s ' still writing to immediate
txs.WriteLine s ' third way of writing to file
txs.Close
Set txs = Nothing
Set FSO = Nothing

请注意,这最后一段代码需要设置一个引用:工具>引用>在Microsoft脚本运行时选中标记。

将此代码放入即时窗口,然后按enter键将列表写入C#中的JSON文本


我建议使用一些基于最佳实践的日志框架,如,它支持文件日志或并行配置的控制台等

用法示例(例如,在某些
Foo.bas
模块中):

结果如下(在控制台和
vba_logging.log
文件中):

其中日志配置文件如下所示:

## vba_logging.properties
LOG_LEVEL = info
LOG_TO_CONSOLE = True
LOG_TO_BUFFER = True

你是怎么把它放到即时窗口的?您是否可以将其存储到字符串变量中,并在过程完成时将其放入文本文件中?。。。我不明白为什么你想让信息先在即时窗口中传输,然后再从那里写入文件。为什么不直接写文件呢?你好,谢谢你的回答!我有一个问题:用其中一种方法代替另一种方法有什么好处/不方便吗?是的。我建议仔细阅读并尝试一下。就我个人而言,我几乎总是使用
FileSystemObject
方法。这是一个VBA问题。
Sub MySub()
  Logging.setModulName (Application.VBE.ActiveVBProject.Name)

  Set log = Logging.getNewLogger(Application.VBE.ActiveVBProject.Name)
  Call log.setLoggigParams(Logging.lgALL, True, True, True) ' log  ALL to Console, Buffer, File

  log.logINFO "This is my message ..", "MySub"
End Sub
(16.12.2018 13:08:30)[XlsxMgr::MySub]-INFO:  This is my message ..
## vba_logging.properties
LOG_LEVEL = info
LOG_TO_CONSOLE = True
LOG_TO_BUFFER = True