我在Excel 2007中运行了一个excel宏,它打开了一个大型机应用程序,因此我可以自动从电子表格中导入数据。
这一直运行良好,但它在Excel 2010中不起作用。
我尝试使用shell命令来使用ID,但另一个应用程序是大型机应用程序而非基于Windows。
然而,
AppActivate“Title”(打开大型机应用程序)在excel 2007中运行良好。
在Excel 2010中,我收到运行时错误5 - 无效的过程调用或参数。
我一直试图解决这个问题两天,这一切都在2007版本上运行良好。
任何帮助都会非常感激。
将appName变为字符串
appName = Range(“AppName”)。值'这是存储在我的大型机应用程序的Excel电子表格中的名称
AppActivate(appName)=>这一行给出了运行时错误'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