【发布时间】: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 似乎正在填充,我得到了第一个正确创建的新工作表选项卡,名称正确……只是剪切和粘贴特殊内容无法正常工作。
【问题讨论】:
-
看看这个,如果有人帮忙投票:stackoverflow.com/q/50776026/4961700