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
我在 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