首页 > 解决方案 > VBA 在一台机器上执行,但不在另一台机器上执行

问题描述

我创建了一系列宏来创建每日报告。其中一个宏是一个简单的单行,它将数据从一个工作表复制到同一工作簿中的另一个工作表。问题是它可以在一台机器上运行,但不能在另一台机器上运行。这些机器都是基于英特尔的机器,运行相同的操作系统版本和相同的 MS Office 版本以及完全相同的数据集。唯一的区别是一个是 32 位机器,而另一个是 64 位。想知道是否有人有任何想法来解决这个问题,或者可以阐明为什么会发生这种情况。脚本如下所示:

Sub Copy_S3ToS1()
'
' Select everything from Sheet3 and copy to Sheet1
'
ActiveSheet.UsedRange.Copy Destination:=Sheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Offset(2)
'
End Sub

看 - 很简单。我不明白为什么它可以在一台机器上运行,而不能在另一台机器上运行。

标签: excelvba

解决方案


我通过分离复制和粘贴功能并添加延迟计时器解决了这个问题。

Sub Copy_S3ToS1()
    '
    ' Select everything from Sheet3 and copy to Sheet1
    '
    Sheets("Sheet3").Select
    ActiveSheet.UsedRange.Copy
    Application.Wait (Now + TimeValue("0:00:03"))

    Sheets("Sheet1").Select
    ActiveCell.SpecialCells(xlLastCell).Select
    Cells(ActiveCell.Row, "A").Activate
    SendKeys "{down}"
    ActiveSheet.Paste
End Sub

推荐阅读