复制范围结束xl向下粘贴不同的Wb

问题描述:

我有一个宏记录器代码(与选择和激活),我试图简化。它目前看起来像这样:复制范围结束xl向下粘贴不同的Wb

Windows("Stambestand.xlsm").Activate 
Range("AA2").Select 
Range(Selection, Selection.End(xlDown)).Select 
Selection.Copy 
    Windows("Ijking document.xlsm").Activate 
    Range("B3").Select 
    ActiveSheet.Paste 

截至最近我已经开始使用变量,并希望削减代码。我正在考虑沿着这些方向:

WbStambestand.WsStam.Range("AA2", Selection, Selection.End(xlDown)).Copy WbIjk.WsIjk.range("A1").paste 

Workbooks("WbStambestand").Worksheets("WsStam").Range("AA2", Selection, Selection.End(xlDown)).Copy 

但是,这些不起作用。我希望你们能帮助我。非常感激。这些是我的变数(他们是宣布的)。 Ijk的是粘贴目的地。

Dim WbStambestand, WbIjk As Workbook 
Dim WsIjk, WsStam As Worksheet 

Set WsIjk = ActiveSheet 
Set WbIjk = ActiveWorkbook 
Set WsIjk = ActiveSheet 
Set WbIjk = ActiveWorkbook 
Set WbStambestand = Workbooks.Open(stam) 
Set WsStam = WbStambestand.Worksheets("stambestand") 
+0

我会建议只是不减磅的代码,它很好的方式,它是在两个长行任何你的“下调”的代码是太难了阅读是值得的。 –

+0

显然宏代码符号更快,当它不需要来回切换来选择所有的东西(即时运行它15次或者有不同数量的行)。此外,我想尽可能高效地编写代码。 关于长度,我可以使用space_分割线。 – MyName

+0

啊所以你不想简化它的长度,你正在寻找一个更高效的速度方法? –

试一下这个

Sub abc() 
    Dim WbStambestand As Workbook 
    Dim WbIjk As Workbook 
    Dim WsIjk As Worksheet 
    Dim WsStam As Worksheet 
    Dim LastRow As Long 
    Dim stam As String 

    stam = "C:\Users\Admin\Desktop\Stambestand.xlsm" ' path with complete file name with extension. 
    Set WsIjk = ActiveSheet 
    Set WbIjk = ThisWorkbook ' workbook which has current code 
    Set WbStambestand = Workbooks.Open(stam) 
    Set WsStam = WbStambestand.Worksheets("stambestand") 

    LastRow = WsStam.Range("AA2").End(xlDown).Row 
    WsStam.Range("AA2:AA" & LastRow).Copy WsIjk.Range("B3") 
    End Sub 
+0

应该声明为范围? – MyName

+0

声明为长 – Maddy

+0

哦,对不起,我专注于我的代码中的最后2行。 编辑:关于粘贴的目的地。为什么WsIjk或WbIjk.WsIjk,Range(“B3”)不起作用?它显示需要的对象。 (WbIjk是ijking.document.xlsm,WsIjk是Wb中的工作表) – MyName