Записать содержимое непосредственного окна в текстовый файл - PullRequest
11 голосов
/ 10 августа 2011

Я пишу макрос, который просматривает документ и пытается разобрать его по стилю.Прямо сейчас все в обозначенном стиле копируется в непосредственное окно.Есть ли способ автоматизировать макрос дальше, чтобы переместить текст из непосредственного окна в текстовый файл?В противном случае любой, кто использует макрос, не сможет увидеть текст, если не откроет VBA, правильно?

Ответы [ 3 ]

20 голосов
/ 11 августа 2011

Вот мое предложение: записать в непосредственное окно И в файл одновременно. Примеры ниже.

Зачем заставлять информацию сначала проходить в непосредственном окне, а только потом записывать ее в файл оттуда? Это звучит извращенно и бесполезно сложно!

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 Scripting Runtime.

0 голосов
/ 16 декабря 2018

Я бы порекомендовал использовать некоторые основанные на передовых практиках среды ведения журналов, такие как VBA Logging , которая поддерживает ведение журнала файлов или консоль с возможностью конфигурирования параллельно и т. Д.использование (например, в каком-то модуле Foo.bas):

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

, что приводит к чему-то вроде (как в консоли, так и в файле vba_logging.log):

(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
0 голосов
/ 14 августа 2017

Поместите этот код в непосредственное окно и нажмите Enter, чтобы записать текст списка в JSON на C #.

System.IO.File.WriteAllText(@"C:\Users\m1028200\Desktop\Json2.txt", 
JsonConvert.SerializeObject(resultsAll));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...