【问题标题】:Why does workbook turns hidden after vba executesvba执行后为什么工作簿会隐藏
【发布时间】:2015-03-26 21:02:34
【问题描述】:

这是子

Sub test()
With ThisWorkbook
.Worksheets("Sheet1").Range("A1").Value = 5
.Save
End With
End Sub

这里是启动子的vbscript

dim eApp
set eApp = GetObject("C:\Users\Owner\Desktop\Book1.xlsm")
eApp.Application.Run "Book1.xlsm!test"
set eApp = nothing

它执行得很好,但是由于某种原因工作簿被隐藏了。我必须取消隐藏它View - -> Unhide

为什么会发生这种情况以及如何解决它

【问题讨论】:

    标签: excel vbscript vba


    【解决方案1】:

    运行vbs 的更清晰的方法如下

    Dim ObjExcel, ObjWB
    Set ObjExcel = CreateObject("excel.application")
    Set ObjWB = ObjExcel.Workbooks.Open("C:\Users\Owner\Desktop\Book1.xlsm")
    'make it visible
    ObjExcel.Visible = True
    ObjExcel.Run "Book1.xlsm!test"
    ObjWB.Close False
    ObjExcel.Quit
    Set ObjExcel = Nothing
    

    【讨论】:

    • 谢谢。但是我遇到了运行时错误:Object doesn't support this property or methods : Visibledl.dropboxusercontent.com/u/41007907/Untitled.png
    • 代表我在 VBA 和 VBS 之间的糟糕编辑 - 应该参考应用程序 (ObjExcel)。现已修复。
    • 释放对象引用前一行(Set ObjExcel = Nothing)后,不能调用ObjExcel.Quit。这会导致错误。
    • 嗯,也许我误解了 OP? CreateObjectGetObject 不会隐藏工作簿。
    • @SiddharthRout 我的回答模棱两可,我需要纠正。我的意思是一个新的应用程序不会自动可见。但是如上所述使用GetObject 确实会在VBE 中打开一个不能被视为应用程序一部分的工作簿
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-12
    • 2018-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多