关闭工作簿和VBA文件

时间:2018-06-01 18:13:28

标签: excel vba excel-vba

我已经构建了一个小的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

enter image description here

由于

标记

3 个答案:

答案 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

阅读Userform.show

当然是个好主意

这是显示用户形式的更好方式,如

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