AppActivate 在 Excel 2007 年有效,但在 2010 年无效

AppActivate works in Excel 2007 but not in 2010

我在 Excel 2007 年 运行 有一个 excel 宏,它会打开一个大型机应用程序,因此我可以自动从我的电子表格导入数据。

这一直运行良好,但在 Excel 2010 年不起作用。

我已经尝试使用 shell 命令来使用 ID,但另一个应用程序是大型机应用程序并且不基于 windows。

然而,

AppActivate "Title"(用于打开大型机应用程序)在 excel 2007 年运行良好。

在 Excel 2010 年,我收到 运行 次错误 5 - 无效的过程调用或参数。

我已经尝试解决这个问题两天了,在 2007 版本上一切正常。

任何帮助将不胜感激。

将 appName 变暗为字符串

appName = Range("AppName").Value '这是存储在我的 excel 大型机应用电子表格中的名称

AppActivate (appName) => 此行给出 运行时间错误“5”无效过程调用或参数

我找到了这段代码,希望对您有所帮助:

Dim Myself as string
Myself = activewindow.caption

然后 AppActivate(Myself) 会将焦点带回原始电子表格。

然而,在 "upgrade" 之后,AppActivate 行开始给我错误,我终于弄明白,如果我只有一个打开的电子表格,Windows 任务栏中的标题是只是 "Microsoft Excel".

我通过更改为

进行了临时修复
Myself = "Microsoft Excel - " & activewindow.caption

https://www.mrexcel.com/forum/excel-questions/566273-appactivate-excel-2010-a.html

如果你想return焦点回到你的VBC代码所在的Excel,也就是ThisWorkbook对象,那么你可以使用下面的行:

AppActivate Title:=ThisWorkbook.Application.Caption

当 AppActivate 没有获得准确的标题时会出现此错误。您可以试试下面的代码,看看是否对您有帮助。

    Public Sub AppActTest()
    Dim objWd As Object
    Dim objTsk As Object
    Dim blOpenedByCode As Boolean

    On Error Resume Next
    Set objWd = GetObject(, "Word.Application")
    If objWd Is Nothing Then
        Set objWd = CreateObject("Word.Application")
        blOpenedByCode = True
    End If
    On Error GoTo 0

    For Each objTsk In objWd.Tasks
        If InStr(objTsk.Name, "MainframeApplicationName") > 0 Then
            objTsk.Activate
            objTsk.WindowState = wdWindowStateMaximize
            Exit For
        End If
    Next

    If blOpenedByCode Then objWd.Quit

    Set objTsk = Nothing
    Set objWd = Nothing

    End Sub

这需要在您的计算机上安装 Microsoft Word。它将与部分匹配一起使用。

感谢您的解答,后来我才发现我的用户是从远程位置启动 Excel 2016 版本,所以他们试图打开的应用程序显然找不到。 Excel 的先前版本是从他们的桌面启动的,因此可以正常工作。

简而言之,AppActivate 函数在两个 Excel 版本中都能正常工作。

感谢您的宝贵时间。

此致

我使用此宏在 Firefox 中打开 Excel 2010 年的书签。

它曾经起作用 - 然后有时它不起作用(运行-时间错误 5)

我看到的修复方法是:关闭并重新打开 Firefox,然后尝试 - 有效

什么东西搞砸了,所以它不起作用?

Sub Open_a_Bookmark(control As IRibbonControl)

' Open a Bookmark in Firefox . . . Firefox has to be open for this to work

' Go to the Row of the bookmark you want, then click this button.
' It automatically goes to the URL column, and copies it.
    Cells(ActiveCell.Row, "BK").Activate
    ActiveCell.copy

' Open a new tab in Firefox with Ctrl+T
    AppActivate "Firefox"
    SendKeys ("^t"), True

' Sometimes you have to click this macro again, to get it to work, because the "paste" doesn't get to Firefox.
' Give it a second before pasting
    Application.Wait (Now + TimeValue("00:00:01"))

' The focus defaults to the Address Bar.  Paste the URL / Enter
    SendKeys ("^v~"), True

' * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

' See the bottom of "Process_Bookmarks" for details.  Used at the end of macros, when necessary.

    SendKeys "{NUMLOCK}", True

    Application.Wait (Now + TimeValue("00:00:01"))
    Selection.Borders(xlEdgeBottom).LineStyle = xlNone

' * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
End Sub