Excel vba 不同 工作 表 複製 貼 上

最佳解答

以下程式預定從 C2 複製到 C6

Option Explicit
Const kRowCount = 300
Sub Main()
    Dim nI
    For nI = 2 To 6
        OneCopy (nI)
    Next nI
End Sub
Sub OneCopy(ByVal pIdx As Integer)
    Dim nRowBegin, nRowEnd
    
    nRowBegin = 2 + (pIdx - 2) * kRowCount
    nRowEnd = nRowBegin + kRowCount - 1
    
    Sheets("SheetB").Select
    Range("C" & pIdx).Select
    Selection.Copy
    
    Sheets("SheetA").Select
    Range("B" & nRowBegin).Select
    ActiveSheet.Paste
    
    Range("B" & nRowBegin & ":B" & nRowEnd).Select
    Selection.FillDown
End Sub

另外,點這裡是我這次鐵人賽唯一的一篇文章,喜歡的話左上角點 Like

  • 回應 1

  • 檢舉

跳到主要內容

已不再支援此瀏覽器。

請升級至 Microsoft Edge,以利用最新功能、安全性更新和技術支援。

(Excel 的工作表複製方法)

  • 發行項
  • 04/11/2022

本文內容

將工作表複製到目前活頁簿或新活頁簿中的另一個位置。

語法

運算式。_在)_之後複製 (

表達 代表 工作表 物件的變數。

參數

名稱必要/選用資料類型描述
Before 選用 Variant 要複製的工作表將放在此工作表之前。 如果您指定 After,便無法指定 Before 。
After 選用 Variant 要複製的工作表將放在此工作表之後。 如果已經指定了 Before,則無法指定 After。

註解

如果您未指定 Before 或 After,Microsoft Excel 會建立包含複製之 工作表 物件的新活頁簿。 新建立的活頁簿會容納 Application.ActiveWorkbook 屬性並包含單一工作表。 單一工作表會保留來源工作表的 NameCodeName 屬性。 如果複製的工作表持有 VBA 專案中的工作表程式碼工作表,則該工作表也會進入新的活頁簿。

您可以將多個工作表的陣列選取專案複製到新的空白活頁 簿 物件,方式應類似。

來源和目的地必須位於相同的 Excel。應用程式實例,否則會引發執行時間錯誤 ' 1004 ':不支援此類介面( Sheet1.Copy objWb.Sheets(1) 如已使用),或執行時間錯誤 ' 1004 ':複製工作表類別的方法失敗(如果使用類似 ThisWorkbook.Worksheets("Sheet1").Copy objWb.Sheets(1) )。

範例

此範例會複製 Sheet1,並將複製的工作表放在 Sheet3 之後。

Worksheets("Sheet1").Copy After:=Worksheets("Sheet3")

本範例會先將 Sheet1 複製到新的空白活頁簿,然後儲存並關閉新的活頁簿。

Worksheets("Sheet1").Copy
With ActiveWorkbook 
     .SaveAs Filename:=Environ("TEMP") & "\New1.xlsx", FileFormat:=xlOpenXMLWorkbook
     .Close SaveChanges:=False
End With

這個範例會將工作表 Sheet1、Sheet2 及 Sheet4 複製到新的空白活頁簿,然後儲存並關閉新的活頁簿。

Worksheets(Array("Sheet1", "Sheet2", "Sheet4")).Copy
With ActiveWorkbook
     .SaveAs Filename:=Environ("TEMP") & "\New3.xlsx", FileFormat:=xlOpenXMLWorkbook 
     .Close SaveChanges:=False 
End With 

支援和意見反應

有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應。

Excel vba 不同 工作 表 複製 貼 上

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    

从一个工作簿各个子表中复制数据粘贴到另一个工作簿指定位置中,并对指定列进行排序,这个是我们在日常工作中经常做的,如何减少繁琐的工作步骤,提高效率,一键完成上面的工作。下面介绍通过VBA,如何自动化跨工作簿复制粘贴及排序。

     图一

Excel vba 不同 工作 表 複製 貼 上


图二

Excel vba 不同 工作 表 複製 貼 上

需要将图一工作簿中三个子表含有公式的数据,复制粘贴数值到图二的表1,并对指定列进行降序排序,可以直接点击图二中执行的控件即可完成;以下是VBA脚本的实现。


Sub scopy2()
'
' 复制粘贴及排序
'
'复制粘贴
Application.ScreenUpdating = False '禁止屏幕更新数据
    Windows("xxx.xlsx").Activate '图一的表名
    Sheets("表一").Select 
    Range("B5:X19").Select
    Selection.Copy   '复制
    Windows("aaaa.xlsm").Activate '图二的表名
    Sheets("1").Select
    Range("A6").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False   '粘贴成数值
    Windows("xxx.xlsx").Activate '图一的表名
    Sheets("表二").Select '
    Range("B5:T19").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("aaaa.xlsm").Activate '图二的表名
     Sheets("1").Select
    Range("Y6").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Windows("xxx.xlsx").Activate
    Sheets("表三").Select
    Range("B6:R20").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("aaaa.xlsm").Activate
   Sheets("1").Select
    Range("AS6").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
'筛选排序
Windows("aaaa.xlsm").Activate
Sheets("1").Select
    Range("A6:w20").Select
    Selection.AutoFilter '筛选
    ActiveWorkbook.Worksheets("1").AutoFilter.Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("1").AutoFilter.Sort.SortFields.Add2 Key:=Range( _
        "b6:b20"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
        xlSortNormal  '筛选并对指定列进行排序
    With ActiveWorkbook.Worksheets("1").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Range("I10").Select
    Selection.AutoFilter
    Range("y6:Aq20").Select
    Selection.AutoFilter
    ActiveWorkbook.Worksheets("1").AutoFilter.Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("1").AutoFilter.Sort.SortFields.Add2 Key:=Range( _
        "Ab6:Ab20"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("1").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Range("AB9").Select
    Selection.AutoFilter
    Range("As6:Bi20").Select
    Selection.AutoFilter
    ActiveWorkbook.Worksheets("1").AutoFilter.Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("1").AutoFilter.Sort.SortFields.Add2 Key:=Range( _
        "At6:At20"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("1").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Range("AS12").Select
    Selection.AutoFilter '去掉筛选
     Application.ScreenUpdating = True '解除禁止屏幕更新数据
End Sub

在图二的子表1的表名点右键,点击查看代码,插入模块1,粘贴上面的代码,保存。

Excel vba 不同 工作 表 複製 貼 上

回到表格,在开发工具里-插入-表单控件

Excel vba 不同 工作 表 複製 貼 上

选中控件点右键可以选择指定的宏名称,同时修改控件名称。

Excel vba 不同 工作 表 複製 貼 上

 关注以下公众号可以更方便查看文章哦(* ̄︶ ̄)

Excel vba 不同 工作 表 複製 貼 上