У меня есть файл Excel, который обновляется приложением каждые несколько секунд. Используя данные, предоставленные приложением, несколько ячеек на листе (называемых «TSdata») вычисляются с использованием различных формул. Если значение конкретной ячейки (B41) изменяется, макрос должен записать содержимое рабочего листа в файл CSV. С помощью одного из парней на superuser.com я создал версию на основе Worksheet_Change, которая отлично работала, если содержимое ячейки обновлялось вручную. Я создал версию с помощью Worksheet_Calculate, которая, как я ожидал, будет работать так же, когда значение ячейки было изменено формулой. Это код, который я использовал:
Private Sub Worksheet_Calculate()
If Worksheets(“TSdata”).Range(“B41”).Value<>prevval Then
Call ExportWorksheetAndSaveAsCSV
End If
prevval = Worksheets(“TSdata”).Range(“B41”).Value
End Sub
Public Sub ExportWorksheetAndSaveAsCSV()
Dim wbkExport As Workbook
Dim shtToExport As Worksheet
Set shtToExport = ThisWorkbook.Worksheets("TSdata") 'Sheet to export as CSV
Set wbkExport = Application.Workbooks.Add
shtToExport.Copy Before:=wbkExport.Worksheets(wbkExport.Worksheets.Count)
Application.DisplayAlerts = False 'Possibly overwrite without asking
wbkExport.SaveAs Filename:="C:\TSCSV\TSCSV1.csv", FileFormat:=xlCSV
Application.DisplayAlerts = True
wbkExport.Close SaveChanges:=False
FileCopy "C:\TSCSV\TSCSV1.csv", "C:\ChartInfo\Data\TSCSV2.csv"
End Sub
Из более раннего теста с использованием ручного обновления я знаю, что Public Sub работает нормально (он скопирован из другого запроса, касающегося записи файлов CSV), но когда я запускаю макрос, кажется, что он пытается выполнить несколько обновлений (экран мигает несколько раз), а затем происходит сбой. Эксель. Итак, очевидно, что-то в Private Sub неверно, но я основывал его на других ответах на похожие вопросы, поэтому я не могу понять, что не так/отсутствует. Примечание: FileCopy в конце Public Sub предназначен для того, чтобы другая программа могла работать с CSV, не нарушая обновления Excel. Заранее благодарю за любую помощь.
“”
? Если да, измените их на"
- person Scott Craner   schedule 26.03.2018