首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Mac上运行用Windows编写的VBA代码

在Mac上运行用Windows编写的VBA代码
EN

Stack Overflow用户
提问于 2017-08-09 15:45:48
回答 1查看 70关注 0票数 1

我编写了一些VBA来浏览一个文件夹,并将电子表格合并到一个主文件中。我需要做的第一件事是查找扩展名为.xl*的文件夹中的所有文件。

我是在Windows机器上写的,现在有人想在Mac上运行它。

我已经把线从

代码语言:javascript
复制
Fname = Dir(ThisWorkbook.Path & "/*.xl*")

代码语言:javascript
复制
Fname = Dir(ThisWorkbook.Path & Application.PathSeparator & "*.xl*")

但是我得到了一个:运行时错误68 -设备不可用错误。

怎么才能让这条线在Mac上运行呢?

以下是完整的代码供参考:

代码语言:javascript
复制
Sub Consolidation()
  Application.ScreenUpdating = False
 'find last record in mastersheet
 Set destsheet = ThisWorkbook.Worksheets("Consolidated")
 Set MyRange = Worksheets("Consolidated").Range("C" & "1")
 lngLastRow = Cells(Rows.Count, MyRange.Column).End(xlUp).Row
 
 'looks for files with the follwing extension
 'Fname = Dir(ThisWorkbook.Path & "/*.xl*")
 Fname = Dir(ThisWorkbook.Path & Application.PathSeparator & "*.xl*")
 
 'cycles through the folder
 Do While Fname <> ""

        If Fname <> ThisWorkbook.Name Then
        Application.StatusBar = "Processing: " & Fname
                
        Set wkbkorigin = Workbooks.Open(ThisWorkbook.Path & "/" & Fname)
            Set originsheet = wkbkorigin.Worksheets("Sheet1")
            n = 0
            m = 0
            'adds recods to the next avaibale row
            'destsheet.Range("B4").Offset(lngLastRow + 1, 1) = originsheet.Range("E4").Value
            destsheet.Range("C" & lngLastRow + 1) = originsheet.Range("E4").Value
            destsheet.Range("D" & lngLastRow + 1) = originsheet.Range("E5").Value
            destsheet.Range("E" & lngLastRow + 1) = originsheet.Range("E6").Value
            destsheet.Range("F" & lngLastRow + 1) = originsheet.Range("E7").Value
            destsheet.Range("G" & lngLastRow + 1) = originsheet.Range("E8").Value
            destsheet.Range("H" & lngLastRow + 1) = originsheet.Range("E9").Value
            destsheet.Range("I" & lngLastRow + 1) = originsheet.Range("E10").Value
            
            lngLastRow = lngLastRow + 1
            wkbkorigin.Close SaveChanges:=False   'close current file
 
        End If
        'stips when out of files to import
        Fname = Dir()
Loop

Application.ScreenUpdating = True
End Sub
EN

回答 1

Stack Overflow用户

发布于 2022-10-05 20:19:13

尝试在MacOS安全首选项窗格上设置Excel的“文件和文件夹”权限。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45595260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档