Macos 代码可以在Windows上运行,但无法在MAC上运行(错误68)

Macos 代码可以在Windows上运行,但无法在MAC上运行(错误68),macos,excel,vba,Macos,Excel,Vba,在一位专家最亲切的帮助下,我得以实现我的目标 1) 根据第3列中的条目自动创建文件夹结构;和 2) 在相应列中自动创建超链接 代码可以在下面找到 Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Columns(3)) Is Nothing Then Dim tr As String With Target tr = ThisWorkbook.Path &

在一位专家最亲切的帮助下,我得以实现我的目标 1) 根据第3列中的条目自动创建文件夹结构;和 2) 在相应列中自动创建超链接

代码可以在下面找到

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Columns(3)) Is Nothing Then
    Dim tr As String
    With Target
        tr = ThisWorkbook.Path & "\" & .Offset(, -2).Value
        If Len(Dir(tr)) = 0 Then
            MkDir tr
            MkDir tr & "\Subfolder 1"
            MkDir tr & "\Subfolder 2"
            MkDir tr & "\Subfolder 3" & "\Sub-subfolder 1"
            .Hyperlinks.Add .Offset(, 4), tr, TextToDisplay:="Name"
        End If
    End With
End If

End Sub
我一直试图让它在Mac上工作,但我总是得到错误68,然后调试器在线打开

If Len(Dir(tr)) = 0 Then
我已尝试在下一行中的倒逗号内更改
\

tr = ThisWorkbook.Path & "\" & .Offset(, -2).Value

  • 使用
  • 使用
    \
  • 使用
    (基本上是空白)
  • 我尝试将
    (分母)
    更改为
    application.pathseparator
    -仍然没有任何结果
绝对没有

用户已建议使用此网页 (请参阅“在不存在时设置董事”一节)这可能确实有效-我看到的问题是,它似乎无法检查文件夹是否已存在,而且我也不太清楚如何创建子文件夹

但出于某些(固执/愚蠢的)原因,我确信这一定会奏效,我的生活过于复杂了

有什么想法吗


Luke

在Mac上,您应该使用正斜杠,/

由于您不知道自己是在PC机上还是在Mac机上,我建议使用filesystem对象而不是您提到的shell调用,因为这样做还需要知道您是在调用windows命令行还是Mac bash脚本。它们不一样。:)


这里描述:

在Mac上,应该使用正斜杠,/

由于您不知道自己是在PC机上还是在Mac机上,我建议使用filesystem对象而不是您提到的shell调用,因为这样做还需要知道您是在调用windows命令行还是Mac bash脚本。它们不一样。:)


这里是这样描述的:

将反斜杠改为斜杠/。嗨,Alfrabravo,已经试过了-我猜我在问题中说的时候不清楚。尝试将反斜杠改为正斜杠、冒号甚至空格。Nothing该行的
此工作簿.Path
值是多少?在找到
Dir(tr)
的长度之前,是否可以检查
tr
是否存在?
Debug.print tr
-这是您所期望的吗?如果你需要跨平台,你肯定应该用
Application.Pathseparator
来代替“\”。布拉德,一件奇怪的事情。路径似乎是/users/username/desktop。但是,当我调试代码时,路径显示为“Macintosh HD:users:username:Desktop”。路径有效,这确实是我试图创建名称等于单元格a中的值的文件夹的位置。但由于某些原因,它不会创建文件夹!将反斜杠改为斜杠/。嗨,Alfrabravo,已经试过了-我猜我在问题中说的时候还不清楚。尝试将反斜杠改为正斜杠、冒号甚至空格。Nothing该行的
此工作簿.Path
值是多少?在找到
Dir(tr)
的长度之前,是否可以检查
tr
是否存在?
Debug.print tr
-这是您所期望的吗?如果你需要跨平台,你肯定应该用
Application.Pathseparator
来代替“\”。布拉德,一件奇怪的事情。路径似乎是/users/username/desktop。但是,当我调试代码时,路径显示为“Macintosh HD:users:username:Desktop”。路径有效,这确实是我试图创建名称等于单元格a中的值的文件夹的位置。但由于某些原因,它不会创建文件夹!拉兹洛,谢谢你的链接?我是否应该假设此链接引用的代码既适用于Mac,也适用于Windows?我想我在哪里读到过FSO在Mac上不起作用的消息?我想是这样的。我从来没有在我的Mac电脑上使用过微软的东西,所以我不是100%确定,对不起。拉兹洛,谢谢你的链接?我是否应该假设此链接引用的代码既适用于Mac,也适用于Windows?我想我在哪里读到过FSO在Mac上不起作用的消息?我想是这样的。我从来没有在我的Mac电脑上使用过微软的东西,所以我不是100%确定,对不起。