MAC上的VBA打开/closures工作簿会报错

以下macros在Windows上没有问题,但在MAC上引发运行时错误。 问题是我没有一个MAC来testing这个。 代码简单地从另一张纸上的单元格中拾取2个文件(A和B)的位置,打开它们,将数据复制到另一张纸上并进行一些计算。

Sub Compile() Application.ScreenUpdating = False ThisBook = ActiveWorkbook.Name 'open A Workbooks.Open (Sheets("Control").Range("C2")) ABook = ActiveWorkbook.Name 'copy data from A Workbooks(ThisBook).Sheets("Data").Cells.Clear ActiveSheet.UsedRange.Copy Workbooks(ThisBook).Sheets("data").Range("A1") 'close A Workbooks(ThisBook).Activate Workbooks(ABook).Close False 'prep A Sheets("data").Activate C = Range("A" & Cells.Rows.Count).End(xlUp).Row 'some calculation 'open B Workbooks.Open (Sheets("Control").Range("C5")) BBook = ActiveWorkbook.Name 'prep B D = ActiveSheet.Range("A" & Cells.Rows.Count).End(xlUp).Row 'some calculation 'copy B Range("M2:M" & D).Copy Workbooks(ThisBook).Sheets("data").Range("O2") 'close B Workbooks(ThisBook).Activate Workbooks(BBook).Close False 'calculate Sheets("data").Activate 'some more calculations Application.ScreenUpdating = True End Sub 

数据已经在其他工作表上相同的工作簿版本正常工作。 所以它必须打开/closures/切换不工作的工作簿之间。

那么没有和你的variables的内容细节,我只是猜测,这是一个文件位置URI区别Windows和Mac之间…什么是Sheets("Control").Range("C2")

尝试完全限定所有内容并声明所有的可变因素 – 看看这是否会让处理器变得更加明显:

 Sub Compile() Excel.Application.ScreenUpdating = False Dim ThisBook As String ThisBook = Excel.ActiveWorkbook.Name 'open A Workbooks.Open (Sheets("Control").Range("C2")) ABook = ActiveWorkbook.Name 'copy data from A with Excel.Workbooks(ThisBook) .Sheets("Data").Cells.Clear .ActiveSheet.UsedRange.Copy .Sheets("data").Range("A1") end with 'close A Excel.Workbooks(ThisBook).Activate Excel.Workbooks(ABook).Close False 'prep A with Excel.Workbooks(ThisBook).Sheets("data") .Activate Dim c as integer C = .Range("A" & .Rows.Count).End(Excel.xlUp).Row end with 'some calculation 'open B Excel.Workbooks.Open (Excel.Workbooks(ThisBook).Sheets("Control").Range("C5")) dim BBook as string BBook = Excel.ActiveWorkbook.Name 'prep B dim D as integer with Excel.ActiveSheet. D = .Range("A" & .Rows.Count).End(Excel.xlUp).Row end with 'some calculation 'copy B Range("M2:M" & D).Copy Excel.Workbooks(ThisBook).Sheets("data").Range("O2") 'close B Excel.Workbooks(ThisBook).Activate Excel.Workbooks(BBook).Close False 'calculate Excel.Workbooks(ThisBook).Sheets("data").Activate 'some more calculations Excel.Application.ScreenUpdating = True End Sub 

取决于2011年(:作为分隔符)vs 2016(Posixpath)Office for Mac

http://www.rondebruin.nl/mac/mac017.htm