У меня есть VBA-скрипт в Excel, который запускается, когда в указанных ячейках происходит состояние Worksheet Calculate .Сценарий записывает данные в файл CSV.только 20 ячеек должны быть записаны в файл CSV.Скорость, с которой запускается вычисление рабочей таблицы = от 100 мс до 200 мс, потому что данные быстро изменяются почти в реальном времени.
С другой стороны, у меня есть проект asp.net MVC, который пытается прочитать тот же CSV-файл, когдаAPI получить запрос отправлен.
Сценарий VBA, выполняемый отдельно, не приводит к каким-либо проблемам.Но когда я пытаюсь прочитать тот же CSV-файл, я вижу, что мой VBA-скрипт останавливается и выдает следующую ошибку: Ошибка времени выполнения 70 Отказано в разрешении
Я думаю, что причиной этого может быть 2программы пытаются получить доступ к одному и тому же CSV-файлу одновременно для чтения / записи .
Код VBA
Private Sub Worksheet_Calculate()
Dim Target As Range
Dim myFile As String
Dim rng As Range
Dim cellValue As Variant
Dim i As Integer
Dim j As Integer
Dim count As Integer
Dim xval As Integer
Dim yval As Integer
xval = 6
yval = 8
count = 0
myFile = "C:\Users\test\Desktop\saved.csv"
Set rng = Range("D15:I15")
If Not Intersect(rng, Range("D15:I15")) Is Nothing Then
Open myFile For Output As #1
For i = 1 To yval
For j = 1 To xval
cellValue = rng.Cells(i, j).Value
If j = xval Then
Write #1, cellValue
Else
Write #1, cellValue,
End If
Next j
Next i
Close #1
End If
End Sub
Я нашел эту статью: https://varunvns.wordpress.com/2012/05/05/reading-and-writing-in-text-files-with-multiple-programs-accessing-it-simultaneously/
, которая может стать решением моей проблемы. Обменник .но я не уверен, как установить такой флаг в VBA Excel при написании кода ReadWrite и asp.net, чтобы установить флаг как Read при доступе к файлу CSV.