0
我有一個宏代碼,用於將工作簿中的所有工作表複製到新的工作簿中。這很好,但問題是它也複製了隱藏的表單。有人可以幫助我修改代碼,以便它僅複製可見表單。在導出Excel,VBA時停止隱藏工作表
Sub export()
Dim Sht As Worksheet
Dim DestSht As Worksheet
Dim DesktopPath As String
Dim NewWbName As String
Dim wb As Workbook
Dim i As Long
Set wb = Workbooks.Add
DesktopPath = "C:\Users\" & Environ("USERNAME") & "\Desktop\"
NewWbName = "report " & Format(Now, "yyyy_mm_dd _hh_mm_ss") & ".xlsx"
i = 1
For Each Sht In ThisWorkbook.Sheets
If i <= wb.Sheets.Count Then
Set DestSht = wb.Sheets(i)
Else
Set DestSht = wb.Sheets.Add
End If
Sht.Cells.Copy
With DestSht
.Cells.PasteSpecial (xlPasteValues)
.Cells.PasteSpecial (xlPasteFormats)
.Name = Sht.Name
End With
i = i + 1
Next Sht
Application.DisplayAlerts = False
wb.SaveAs Filename:=DesktopPath & NewWbName, FileFormat:=51
wb.Close
MsgBox "You Can Find The Exported File In Your Desktop.", vbOKOnly + vbInformation, "Export Sucessful!"
Application.DisplayAlerts = True
End Sub
您可以使用工作表對象的'Visible'屬性只複製可見表。如果'Sht.Visible = xlSheetVisible'然後... – Socii
謝謝隊友。這樣做的工作,它只複製可見的工作表,但它在開始時添加一個空白表 – Danny
沒有看到你的更新的代碼很難說,但我猜你有'i = i + 1'代碼以外的'如果Sht.Visible = xlSheetVisible Then'語句。我已經添加了一個更新的代碼應該可以正常工作的答案。我還添加了一個'Sheet.Move'語句,它將添加的工作表移動到新工作簿的末尾。有關更多信息,請參見[https://support.microsoft.com/zh-CN/kb/107622]。 – Socii