我已经构建了一个小的VBA脚本,但是我无法完全关闭工作簿。我可以关闭工作簿,但注意到它仍然显示在VBA编辑器中。我已经看到了一些关于放置一些代码以关闭所有内容的其他形式,但我无法让它工作。
有人能指出我正确的方向吗?
Private Sub PNTXLXS_Click()
Application.DisplayAlerts = False
Application.EnableCancelKey = xlDisabled
RCD_PNT.Hide
With Sheets("Clash List").UsedRange
mr = .Rows.Count
mc = .Columns.Count
.Range(Cells(1, 26), Cells(mr,mc)).SpecialCells(xlCellTypeVisible).Copy
End With
Workbooks.Add
Application.Visible = True
With ActiveSheet.Range("A1")
.PasteSpecial Paste:=xlPasteValues
.PasteSpecial Paste:=xlPasteFormats
End With
With Selection
.WrapText = False
.EntireColumn.AutoFit
.WrapText = True
End With
InitialName = Range("A1") & " - " & Format(Now(), "DDMMYY")
filesavename = Application.GetSaveAsFilename(InitialFileName:=InitialName,
fileFilter:="Excel Files (*.xlsx), *.xlsx")
ActiveWorkbook.SaveAs FileName:=filesavename
ActiveWorkbook.Close
我知道这是我需要关闭VBA文件的位置吗?
Application.CutCopyMode = False
Application.DisplayAlerts = True
End Sub
由于
标记
答案 0 :(得分:2)
从代码中删除Application.Visible = True
,而不是RCD_PNT.Hide
使用Me.Hide
Private Sub PNTXLXS_Click()
Application.DisplayAlerts = False
Application.EnableCancelKey = xlDisabled
Me.Hide
With Sheets("Clash List").UsedRange
mr = .Rows.Count
mc = .Columns.Count
.Range(Cells(1, 26), Cells(mr,mc)).SpecialCells(xlCellTypeVisible).Copy
End With
Workbooks.Add
' Application.Visible = True
With ActiveSheet.Range("A1")
.PasteSpecial Paste:=xlPasteValues
.PasteSpecial Paste:=xlPasteFormats
End With
With Selection
.WrapText = False
.EntireColumn.AutoFit
.WrapText = True
End With
InitialName = Range("A1") & " - " & Format(Now(), "DDMMYY")
filesavename = Application.GetSaveAsFilename(InitialFileName:=InitialName,
fileFilter:="Excel Files (*.xlsx), *.xlsx")
Application.CutCopyMode = False
Application.DisplayAlerts = True
End Sub
当然是个好主意
这是显示用户形式的更好方式,如
Sub Show_RCDPNT()
Dim frm As New RCD_PNT
frm.Show
Unload frm
End Sub
答案 1 :(得分:1)
我看到一个Workbooks.Add命令,因此正在打开一个新的工作簿:你正在做什么吗?您在该行之前使用了表单,因此您已经打开了一个并且它是ActiveWorkbook,而不是新的。然后,您可以使Excel可见,使用某些范围,并保存ActiveWorkbook的副本。但是,由于Excel Application对象仍然存在,工作簿集合中挂起了新工作簿,是吗?也许这就是你所看到的?
答案 2 :(得分:0)
在工作表中的“数据”选项卡下,单击“连接”图标以查看您是否仍链接到已关闭的工作簿。如果是这样,您可能必须添加一行以断开链接(使用文件名)。像ActiveWorkbook.Connections("filename").Delete