我编写了这段代码,在打开Excel时自动运行宏。此宏将创建一个出现的消息框。按" OK"在此消息框上Excel将重新启动。在这一部分我遇到了困难,因为我只是设法关闭工作簿而不是重新打开它。
Sub auto_open()
Dim x As String
With CheckTekla
If .GetConnectionStatus = False Then
Call Shell("C:\Program Files\Tekla Structures\19.1\nt\bin\TeklaStructures.exe")
MsgBox "TEXT"
x = ActiveWorkbook.Name
Workbooks(x).Close False
Workbooks.Open x
Else
'do nothing
End If
End With
End Sub
应该重启Excel的部分是:
Dim x As String
x = ActiveWorkbook.Name
Workbooks(x).Close False
Workbooks.Open x
感谢任何帮助。
此致
答案 0 :(得分:0)
无法从VBA重新启动Excel。
你可以运行:
Application.Quit
但是,这将关闭Excel,并且不会重新启动它,因为宏将在Excel关闭后停止运行。因此,您必须在关闭后手动启动Excel。
答案 1 :(得分:0)
如上所述,从excel中的vba重启excel是不可能的(你可以调用一个关闭并打开excel的外部vbs脚本) 但是,您澄清了要关闭并重新打开工作簿,尝试设置变量并关闭它。将名称捕获为FullName(带路径)并再次打开它,没有路径,它将无法工作。
Sub auto_open()
Dim x As String
Dim wb as workbook
With CheckTekla
If .GetConnectionStatus = False Then
Call Shell("C:\Program Files\Tekla Structures\19.1\nt\bin\TeklaStructures.exe")
MsgBox "TEXT"
Set wb = ActiveWorkbook
x = wb.FullName
wb.Close False
Set wb = Workbooks.Open(x)
Else
'do nothing
End If
End With
End Sub