excel - ThisWorkbook.close 无法始终如一地工作
问题描述
ThisWorkbook.Close 的工作方式不同,具体取决于宏的执行方式。如果用户单击工作簿按钮执行宏,则当一切完成且宏完成时,ThisWorkbook.Close
将按预期关闭工作簿。如果宏在工作簿打开时自动执行(Workbook_Open())
,则 ThisWorkbook.Close 不会关闭工作簿。
打开工作簿后,Workbook_Open()
调用主例程 Notes.OpenForm。在Workbook_Open()
模块中"ThisWorkbook"
,OpenForm 在模块中"Notes"
。
如果用户点击一个按钮,它会执行SendETSNote_Click()
它也调用Notes.OpenForm
. SendETSNote
在Sheet1(ETS Notes Form)
module 中并从 module 调用 OpenForm Notes
。
我已经包含了 的代码Workbook_Open()
,SendETSNote()
以及尝试关闭工作簿的例程 -Done_Click()
存储在Notes
模块中。
更多背景知识:OpenForm 将工作簿调整为最小尺寸并打开用户表单。我希望用户看不到 Excel 工作簿而只看到用户表单。用户填写表单并通过电子邮件发送其内容后,用户可以单击“完成”,这将关闭表单并关闭工作簿。
如前所述,如果宏通过 Workbook_Open() 启动,ThisWorkbook.Close 不会关闭工作簿。如果宏在 之前启动SendETSNote_Click()
,则工作簿将关闭。
Private Sub Workbook_Open()
Call Notes.OpenForm
End Sub
Private Sub SendETSNote_Click()
Call Notes.OpenForm
End Sub
Sub Done_Click()
'
' Upon document close, shut down Outlook if running and started within this code
'
If outlookRunning = True Then
'If we started Outlook from within this code, then close it
oOutlookApp.Quit
End If
'
' Turn off screen updating so user doesn't see resizing
' Resize Excel sheet to max before closing
' Close without saving changes
'
Application.ScreenUpdating = False
Application.WindowState = xlMaximized
ActiveWindow.WindowState = xlMaximized
'
' Close the form
'
Unload Me
ThisWorkbook.Activate
Application.ScreenUpdating = True
ThisWorkbook.Saved = True
ThisWorkbook.Close False
Exit Sub
End Sub
无论宏如何启动,我都希望 ThisWorkbook.Close 关闭工作簿。
解决方案
推荐阅读
- excel - SAP Macro通过Excel运行,如何获取数据以填充Excel工作表?
- python - 将任务发送给 celery 中的两个单独的工人
- powerbi - 如何按所需顺序显示切片器中的多选值 - Power BI
- vba - MS Word set OutlineDemote to text after specific word
- flutter - FutureBuilder 不刷新新数据
- r - 在列表的数据框中设置一列等于 R 中列表中数据框的名称
- php - 使用 phpmailer 向 webmailer (hostinger) 发送电子邮件
- api - 在 Nginx 后面大摇大摆
- string - 如何从函数返回拆分字符串 (&str)?
- c++ - 为什么我不能从 txt 文件中删除特定行?