Как сохранить содержимое одной ячейки в один текстовый файл - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть серия ячеек, которые я хотел бы автоматически сохранять в отдельные текстовые файлы через заданные интервалы.В идеале это должно происходить по таймеру, скажем раз в минуту во время работы макроса.

У меня есть 4 заголовка с 15 записями в каждом, всего 60 ячеек контента.По сути, я хотел бы, чтобы эти 60 ячеек обновили 60 текстовых файлов со своим содержимым.

, то есть:

ячейка A1 будет сохранена как P1username.txt . . . . contents of file: Bill

ячейка A2 получает спасение как P2username.txt . . . . contents of file: Bob

ячейка A3 получает спасение как P3username.txt . . . . contents of file: Tom

ячейка A 4 получает спасение как: P4username.txt . . . . contents of file: Joe

Ячейка B1 сохраняется как P1address.txt . . . . contents of file: 123 Street

Ячейка B2 сохраняется как P2address.txt . . . . contents of file: 456 Avenue

Ячейка B3 сохраняется как P3address.txt . . . . contents of file: 789 Way

ячейка B4 сохраняется как P4address.txt . . . . contents of file: 1000 Road

и т. д.

Возможно ли это?

-

Общая цель состоит в том, чтобызаполнить содержимое определенного потока HUD в Streamlabs OBS.В настоящее время я вручную запускаю макрос, который экспортирует данные из Excel в текстовый файл с разделителями-запятыми, затем в Photoshop и с помощью инструментов набора данных создает одно большое изображение, которое используется в графическом интерфейсе.Тем не менее, это отнимает много времени (у меня есть макрос до 30 секунд, в течение которого я не могу иначе использовать ПК), и я хотел бы упростить его и автоматизировать, чтобы он мог работать в фоновом режиме, не вызывая его,или связывая компьютер.Я надеялся, что с помощью таймера я смогу просто включить его в начале потока и снова выключить в конце.Тем не менее, ручной запуск по мере необходимости также допустим.

Я работаю в VBA, возможно, один раз в 5 лет, поэтому я, по сути, изучаю его снова, когда мне это нужно.Я хочу убедиться, что я на правильном пути.Я надеюсь, что у кого-то есть несколько идей о том, как лучше всего это сделать.

-

Пока у меня есть эта работа.Я могу, вероятно, запустить аналогичный код для всех 60 записей, а затем найти способ запустить его при изменении значения ячейки.Есть ли более элегантный / лучший способ?

Sub run()

Dim myFile As String

myFile = "C:\username\HUD\P1username.txt"
Open myFile For Output As #1
Print #1, Range("C4")
Close #1

myFile = "C:\username\HUD\P1address.txt"
Open myFile For Output As #2
Print #2, Range("C5")
Close #2

End Sub

1 Ответ

1 голос
/ 25 сентября 2019

у меня это работает.Когда любая ячейка в пределах диапазона изменяется, макрос запускается автоматически.Макрос сбрасывает содержимое 60 ячеек в 60 текстовых файлов.Для кого-то еще это может помочь, вот что я сделал:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim KeyCells As Range

' The variable KeyCells contains the cells that will run the macro when they are changed.
    Set KeyCells = Range("C4:L19")

If Not Application.Intersect(KeyCells, Range(Target.Address)) _
           Is Nothing Then

' Put the macro you want to run here:

Dim myFile As String

myFile = "C:\username\HUD\P1username.txt"
Open myFile For Output As #1
Print #1, Range("C4")
Close #1

myFile = "C:\username\HUD\P1address.txt"
Open myFile For Output As #1
Print #1, Range("C5")
Close #1

' Repeat this as many times as you want. I have 60 cycles.

End If
End Sub

Приветствия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...