【问题标题】:Excel Copy/ Paste Special with selected sheets not working选定工作表不起作用的 Excel 复制/选择性粘贴
【发布时间】:2023-02-04 19:18:39
【问题描述】:

第一个例程可以很好地运行所有工作表,并在新电子表格中创建静态页面

Sub StaticSheets()
Dim wbStatic As Workbook, wbDynamic As Workbook, DynamicName As Variant, _
DynamicPath As Variant, StaticName As Variant, curSheetName As String, curStaticSheet As Worksheet, curDynSheet As Worksheet
Dim wbs As Workbooks

Application.ScreenUpdating = False

Set wbDynamic = ActiveWorkbook
Set fso = CreateObject("Scripting.FileSystemObject")

Set wbs = Workbooks()
DynamicPath = wbDynamic.Path
DynamicName = fso.GetBaseName(wbDynamic.Name)
StaticName = DynamicName & "-Static"
Set wbStatic = Workbooks.Add
For Each curDynSheet In wbDynamic.Sheets
    curSheetName = curDynSheet.Name
    wbStatic.Sheets.Add(After:=wbStatic.Sheets(wbStatic.Sheets.Count)).Name = curSheetName
   
    curDynSheet.Activate
    Range("A1:AZ400").SpecialCells(12).Copy 'Copy visible Cells only
    
    With wbStatic.Worksheets(curSheetName).Range("A1")
        .PasteSpecial xlPasteColumnWidths
        .PasteSpecial xlPasteValuesAndNumberFormats
        .PasteSpecial xlFormats
    Application.CutCopyMode = False
    End With
  Next
  wbStatic.SaveAs Filename:=DynamicPath & "\" & StaticName
  Application.ScreenUpdating = True
  End Sub

当我在仅选择几张纸的情况下尝试以下代码时,根据我对 curDynSheet.select 和 curDynSheet.activate 的尝试,我会收到各种错误,但没有任何效果。下面的代码给出了 Range 类的 1004 Paste Special 方法失败。我猜复制方法首先失败了,但我不确定为什么。

Sub StaticSelectedSheets()
Dim wbStatic As Workbook, wbDynamic As Workbook, DynamicName As Variant, _
DynamicPath As Variant, StaticName As Variant, curSheetName As String, curStaticSheet As Worksheet, curDynSheet As Worksheet
Dim wbs As Workbooks
Dim sheetArray As Variant


Set wbDynamic = ActiveWorkbook
Set sheetArray = ActiveWindow.SelectedSheets

Set fso = CreateObject("Scripting.FileSystemObject")

Set wbs = Workbooks()
DynamicPath = wbDynamic.Path
DynamicName = fso.GetBaseName(wbDynamic.Name)
StaticName = DynamicName & "-Static"
Set wbStatic = Workbooks.Add
For Each curDynSheet In sheetArray
    curSheetName = curDynSheet.Name
    wbStatic.Sheets.Add(After:=wbStatic.Sheets(wbStatic.Sheets.Count)).Name = curSheetName
    curDynSheet.Activate
    curDynSheet.Select
    curDynSheet.Range("A1:AZ400").SpecialCells(12).Copy 'Copy visible Cells only
    Application.DisplayStatusBar = True
    With wbStatic.Worksheets(curSheetName).Range("A1")
        .PasteSpecial xlPasteColumnWidths
        .PasteSpecial xlPasteValuesAndNumberFormats
        .PasteSpecial xlFormats
    Application.CutCopyMode = False
    End With
  Next
  wbStatic.SaveAs Filename:=DynamicPath & "\" & StaticName
  End Sub

我已经尝试了多个选项来处理 ActiveWindow.SelectedSheets。 SheetArray 似乎正在填充,我得到了第一个正确创建的新工作表选项卡,名称正确……只是剪切和粘贴特殊内容无法正常工作。

【问题讨论】:

标签: excel vba


【解决方案1】:

据我所知。

    Application.DisplayStatusBar = True

正在取消您的复制命令,因此没有可粘贴的内容,因此粘贴错误。

【讨论】:

    猜你喜欢
    • 2017-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-13
    • 2017-12-27
    • 1970-01-01
    相关资源
    最近更新 更多