Ошибка выполнения 70 В доступе отказано, когда 2 программы пытаются прочитать и записать файл csv - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть 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.

1 Ответ

0 голосов
/ 12 февраля 2019

Если вашему проекту asp.net MVC нужно только прочитать файл, откройте файл в режиме только для чтения , чтобы он не влиял на запись из VBA.

Файл может быть открыт только один раз одновременно в режиме записи, но режим только для чтения возможен несколько раз.

Тем не менее я не вижу особого смысла в чтении файла, который изменяется каждые 200 мс.Если вы читаете данные, они уже старые.

...