Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Dim wkbk As Workbook
Dim NewFile As Variant
NewFile = Application.GetOpenFilename(FileFilter:="Microsoft Excel Files
(*.xlsx; *.xls), (*.xlsx; *.xls), All Files, *.*", FilterIndex:=1)
If NewFile <> False Then
Set wkbk = Workbooks.Open(NewFile)
End If
Worksheets("Sunday").Unprotect "bunny"
Dim Sh As Worksheet
For Each Sh In ThisWorkbook.Worksheets
If Sh.Visible = True Then
Sh.Activate
Sh.Cells.Copy
Sh.Range("A1").PasteSpecial Paste:=xlValues
Sh.Range("A1").Select
End If
Next Sh
Application.CutCopyMode = False
Worksheets("Sunday").Protect "bunny", True, True
Application.ScreenUpdating = True
End Sub
您好,很了解VBA,可以做一些小事。我尝试制作一些东西,允许您选择要打开的Excel文件,打开它,取消保护工作表&#34;星期日&#34;,粘贴数据,重新保护,然后保存和关闭文件。
如果我没有包含打开文件的部分,那么代码的主要部分适用于我当前的工作表,但是当我尝试在我刚刚打开的工作簿上使用它时,我得到了一个&# 39;下标超出范围&#39;错误信息。我不太确定我是否是新打开的文件是“活跃的”,但是当我尝试插入一行vba以使新文档处于活动状态时,它没有任何区别。任何建议将不胜感激。