代码之家  ›  专栏  ›  技术社区  ›  Murlidhar Fichadia

运行时错误70当两个程序尝试读写csv文件时,权限被拒绝

  •  1
  • Murlidhar Fichadia  · 技术社区  · 6 年前

    我在Excel中有VBA脚本,当 工作表计算 发生在给定的单元格中。脚本将数据写入csv文件。只有20个单元格需要写入csv文件。工作表计算的触发速度=100毫秒到200毫秒,因为数据几乎实时变化很快。

    另一方面,我有ASP.NET MVC项目,它在发送api get请求时尝试读取相同的csv文件。

    单独执行的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中设置读写时的标志,以及在访问csv文件时如何在asp.net代码中设置读标志。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Pᴇʜ    6 年前

    如果你 ASP.NET MVC项目 只需要读取文件,然后在 只读模式 因此,它不会影响VBA的写入。

    在写入模式下,一个文件只能同时打开一次,但只读模式可以多次打开。

    不过,我认为读取每200毫秒更改一次的文件没有多大意义。如果您读取数据,它已经是旧的了。