2017-10-25 14 views
1

Excel 2007で実行するExcelマクロがあり、メインフレームアプリケーションが開き、スプレッドシートからデータを自動的にインポートできます。AppActivateはExcel 2007では動作しますが、2010では動作しません

これは正常に動作してきた、しかし、それは、Excel 2010で

動作しない私はIDを使用するシェルコマンドを使用して試してみましたが、他のアプリケーションでは、ベースのメインフレーム・アプリケーションと非窓があります。無効なプロシージャ呼び出しまたは引数 - 私は実行時エラー5を取得していますエクセル2010ではただし、

(メインフレームアプリケーションを開くために):AppActivateの「タイトル」はエクセル2007で

を正常に動作して

私は2日間これを解決しようとしていましたが、それはすべて2007年版でうまくいきます。

本当にありがとうございます。

これは、この行を与えているメインフレームアプリ

:AppActivateの(のappName)=>のための私のExcelスプレッドシートに保存されている名前である文字列

のappName =レンジ( "APPNAME")。値」として

薄暗いのappName

Dim Myself as string 
Myself = activewindow.caption 

その後:AppActivateのは(自分が)フォーカスBAを取る:実行時エラー「5」無効なプロシージャ呼び出しまたは引数

+0

あなたのコードの試行を共有し、このエラーが表示されている行を指摘してください。 –

+0

Dim appName as String appName = Range( "AppName")。これは、メインフレームアプリケーション用のExcelスプレッドシートに保存された名前です。 AppActivate(appName)=>この行は実行時エラー '5'呼び出しまたは引数 – RShome

+0

コメントにコードを入れるのではなく、[オリジナルの質問を編集する](https://stackoverflow.com/posts/46932069/edit)を読むと読みやすくなります。 –

答えて

0

答えをいただきありがとうございます。ユーザーがExcel 2016のバージョンをリモートから起動していることがわかりましたので、開こうとしていたアプリケーションは明らかに見つかりませんでした。 以前のバージョンのExcelがデスクトップから起動されていました。

簡単に言えば、AppActivate関数は両方のExcelバージョンで正常に動作します。

お時間をいただきありがとうございます。

ありがとうございます

0

は、私はそれが役に立てば幸い、このコードを見つけましたckを元のスプレッドシートに追加します。

しかし、「AppActivate」行にエラーが表示されてしまい、最後に開いていたスプレッドシートが1つだけだった場合、Windowsのタスクバーのタイトルは「Microsoft Excel」に過ぎないことがわかりました。

あなたは、ThisWorkbookオブジェクト別名、戻ってあなたVBCコードがあるExcelにフォーカスを戻したい場合は、私は

Myself = "Microsoft Excel - " & activewindow.caption 

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

+0

ありがとう、おそらく私は自分自身を明らかにしなかった。私は実際にメインフレームアプリケーションを開く必要があるので、Excelスプレッドシートからの入力を受け入れることができます。 – RShome

0

に変更することで、一時的な修正をしました次の行を使用できます。

AppActivate Title:=ThisWorkbook.Application.Caption 
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がインストールされている必要があります。部分一致でも動作します。

+0

このコードは大変ありがとうございます。私の既存のコードはExcel 2007で動作しますが、2010年ではないため、2007年には明らかにアプリケーションのタイトルと一致しています – RShome

関連する問題