VBA Excel for Mac:复制粘贴



一个VBA宏在Mac Excel 2011中工作,现在在Mac Excel 2016中产生奇怪的结果。具体在下面的宏中:

  • 步骤1-打开一个"公文包",复制一系列数据并关闭它
  • 第2步-激活另一个已打开的工作簿并将数据粘贴到那里

但现在,我没有在每个单元格中传输数据,而是粘贴了一个图像,其中包含所有复制的数据。我不知道这是来自复制部分还是粘贴部分。

'Step 1'
Set WbPort(n) = Workbooks.Open(Portfolio(n))
Sheets(1).Select
Range("A2:O101").Copy
Application.CutCopyMode = False
WbPort(n).Close SaveChanges:=False
'Step 2'
WbTarget.Activate
Sheets(1).Select
Range("C" & Range("AN" & n + 2)).PasteSpecial xlPasteValues

未测试。

由于您只复制粘贴值,因此跳过剪贴板并直接将值分配给目标范围是有意义的。

Set WbPort(n) = Workbooks.Open(Portfolio(n))
Dim rangeToCopy as range
Set rangeToCopy = WbPort(n).Worksheets(1).Range("A2:O101")
With WbTarget.Worksheets(1)
.Range("C" & .Range("AN" & n + 2).value2).resize(rangeToCopy.rows.count, rangeToCopy.columns.count).value2 = rangeToCopy.value2
End with
WbPort(n).Close SaveChanges:=False

如果这对你有效,但你仍然想修复你现有的代码,可能值得一试:

Set WbPort(n) = Workbooks.Open(Portfolio(n))
WbPort(n).Worksheets(1).Range("A2:O101").Copy
With WbTarget.Worksheets(1)
.Range("C" & .Range("AN" & n + 2).value2).PasteSpecial xlPasteValues
End with
Application.CutCopyMode = False
WbPort(n).Close SaveChanges:=False

或者尝试另一个xlPasteType而不是xlPasteValues(https://learn.microsoft.com/en-us/office/vba/api/excel.xlpastetype)例如xlPasteAll,只是为了查看您是否仍然获得图像。

此外,您似乎正在粘贴由WbTarget的第一页的Range("AN" & n + 2)中的值确定的行号,其中n是某个变量(可能在循环中?(。我会将Range("AN" & n + 2).value2中的值分配给long类型的变量,并检查您是否粘贴到了正确的范围/单元格地址。

最新更新