【问题标题】:Error 53 when opening CSV file on mac在 Mac 上打开 CSV 文件时出现错误 53
【发布时间】:2018-02-08 19:34:04
【问题描述】:

当我尝试打开 CSV 文件时,我得到:

错误 53:找不到文件

我在第 4 行得到错误,Open FilePath For Input As #1 我究竟做错了什么?

这是我第一次打开 CSV,请放纵我的代码。

Sub opentextfile()
Dim FilePath As String
FilePath = "/Users/christinekelly/Desktop/authors.csv"
file1 = FreeFile
Open FilePath For Input As #file1
row_number = 0
Do Until EOF(1)
Line Input #file1, LineFromFile
LineItems = Split(LineFromFile, ",")
ActiveCell.Offset(row_number, 0).Value = LineItems(2)
ActiveCell.Offset(row_number, 1).Value = LineItems(1)
ActiveCell.Offset(row_number, 2).Value = LineItems(0)
Number = row_number + 1
Loop
Close #file1
End Sub

【问题讨论】:

  • 看看这是否有帮助:rondebruin.nl/mac/mac015.htm 还有:rondebruin.nl/mac/mac008.htm
  • @Mat'sMug 谢谢!!我尝试了 freefile 功能,但我完全迷失了。
  • @Mat'sMug 我尝试了 freefile 函数,但我不清楚。你能否就它在我的代码中的工作方式给我一些建议?我试图用 #1 替换 fnum 但出现错误。 Sub opentextfile() Dim FilePath As String FilePath = "/Users/christinekelly/Desktop/authors.csv" fnum = FreeFile() Open FilePath For Input As fnum Write #fnum, row_number = 0 Do until EOF(1)
  • 顺便说一句,你运行的是什么版本?
  • @QHarr 非常感谢,旧版本,在 mac 2011 v. 14.7.2 上它让我发疯,我想不通:)

标签: vba excel csv


【解决方案1】:

所以从@Rebekare 对question 的回答来看,这对我有用。

我转到有问题的文件test.csv 并打开即时窗口并输入?ThisWorkbook.Path 并得到HDD:Users:USER:Desktop

然后我将此路径与Application.PathSeparator 和文件名一起使用了建议的连接,即

FilePath = "HDD:Users:USER:Desktop" & Application.PathSeparator & "test.csv" 

这是一种有用的方法,因为您可以获取实际的文件路径语法,然后将路径分隔符决策交给Application

根据@Mat'sMug 的建议,我找到了this,它打开了文件对话框,你选择了你想要的文件的完整路径,它会通过消息框返回。

Sub PathofFile()
    OpenFile = Application.GetOpenFilename()
    MsgBox OpenFile
End Sub

在同一个链接中,建议使用Dir 函数来测试文件路径是否有效。如果有效,您将获得文件名,否则您会收到一个错误,您可以使用它来确定您的下一步操作,例如如果它存在于该文件路径中,则以下返回“test.csv”。

MsgBox Dir("HDD:Users:USER:Desktop:test.csv")

如果您正在对文件执行其他操作,您可能需要添加一个测试以查看文件是否首先打开,使用 Microsoft 的 IsFileOpen 函数。示例如下:

Sub Test

    If Not IsFileOpen(FilePath) Then
        Set wb = Workbooks.Open(FilePath)
    End If

End Sub


Function IsFileOpen(filename As String)
    Dim filenum As Integer, errnum As Integer

    On Error Resume Next   ' Turn error checking off.
    filenum = FreeFile()   ' Get a free file number.
    ' Attempt to open the file and lock it.
    Open filename For Input Lock Read As #filenum
    Close filenum          ' Close the file.
    errnum = Err           ' Save the error number that occurred.
    On Error GoTo 0        ' Turn error checking back on.

    ' Check to see which error occurred.
    Select Case errnum

        ' No error occurred.
        ' File is NOT already open by another user.
        Case 0
         IsFileOpen = False

        ' Error number for "Permission Denied."
        ' File is already opened by another user.
        Case 70
            IsFileOpen = True

        ' Another error occurred.
        Case Else
            Error errnum
    End Select

End Function

【讨论】:

  • 感谢您的帮助!提供的示例非常清楚。
  • 这对我来说很有用,因为我一直在使用 Windows,但从未尝试过使用 Mac,所以很好的学习。
  • 文件路径是“Macintosh HD:Users:christinekelly:Desktop:authors.csv”,而不是“/Users/christinekelly/Desktop/authors.csv”,正如我从 finder 复制路径名时所指出的那样跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-23
  • 2022-01-19
  • 2020-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
相关资源
最近更新 更多