AppActivate适用于Excel 2007,但不适用于2010年

时间:2017-10-25 12:09:55

标签: vba excel-vba excel-2010 office-2010 excel

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

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

我尝试使用shell命令来使用ID,但另一个应用程序是大型机应用程序而非基于Windows。

然而,

AppActivate“Title”(打开大型机应用程序)在excel 2007中运行良好。

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

我一直试图解决这个问题两天,这一切都在2007版本上运行良好。

任何帮助都会非常感激。

将appName变为字符串

appName = Range(“AppName”)。值'这是存储在我的大型机应用程序的Excel电子表格中的名称

AppActivate(appName)=>这一行给出了运行时错误'5'无效的过程调用或参数

5 个答案:

答案 0 :(得分:1)

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

Dim Myself as string
Myself = activewindow.caption

然后AppActivate(我自己)将重点放回原始电子表格。

然而,在"升级"之后,AppActivate行开始给我错误,我终于想通了如果我只有一个打开的电子表格,Windows任务栏中的标题就是&# 34; Microsoft Excel"。

我通过改为

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

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

答案 1 :(得分:1)

如果要将焦点返回到VBC代码所在的Excel,即ThisWorkbook对象,则可以使用以下行:

AppActivate Title:=ThisWorkbook.Application.Caption

答案 2 :(得分:0)

当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。它将与部分匹配一起使用。

答案 3 :(得分:0)

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

简而言之,AppActivate功能适用于两种Excel版本。

感谢您的时间。

此致

答案 4 :(得分:-2)

我使用此宏在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