- ベストアンサー
エクセルから現在起動しているアクセスファイルをアクティブにする方法
- エクセルから現在起動しているアクセスファイルをアクティブにする方法について教えてください。
- エクセルマクロを利用して現在開いているアクセスをアクティブにする方法がうまくいかないです。
- アクセスアプリケーションが開いている状態で、エクセルから現在起動中のアクセスファイルをアクティブにする方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
おじゃまします。 アクティブ=前面へ という意味合いでしょうか。 違っていたらごめんなさい。スルーしてください。 Win32 APIを使用した例となります。 参考程度にしてください。 ExcelのVBAは詳しくないので、以下の処理を貼り付けたシートが変更されるたびに前面に持ってくる(アクティブ?)処理をするものになります。 Private Sub Worksheet_Change(ByVal Target As Range) Dim objAcc As Object On Error Resume Next Set objAcc = GetObject(, "Access.Application") If (Not objAcc Is Nothing) Then Call appShowWindow(objAcc.hWndAccessApp) Set objAcc = Nothing End If End Sub その前に、以下のものを標準モジュールに張り付けておきます。 ' ---------- ここからを標準モジュールに貼り付け Const SW_SHOWMINIMIZED = 2 Const SW_RESTORE = 9 Private Declare Function apiShowWindow Lib "user32" Alias "ShowWindow" _ (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long Public Sub appShowWindow(hWnd As Long) Call apiShowWindow(hWnd, SW_SHOWMINIMIZED) Call apiShowWindow(hWnd, SW_RESTORE) End Sub ' ---------- ここまで ※ 関数名の命名は私流です。 API 関数は、関数名先頭に api を付けています。 ※ app で始まる関数は独自関数なので、適宜名前等変更してください。 ※ ShowWindow の第2引数については、以下に詳しく載ってました。 http://yokohama.cool.ne.jp/chokuto/urawaza/api/ShowWindow.html ※※ ShowWindow で アクティブ化 のみでは前面に出てこなかったので、1度最小化してから戻してます。(これでいいのかは?) ※※ VBE画面からの実行では、前面にはこなかった。
その他の回答 (2)
- bonaron
- ベストアンサー率64% (482/745)
「現在開いているアクセス」ということは それは見えているんですよね? 可視にするコードは不要では? Sub アクセスをアクティブにする() Dim app As Object Set app = GetObject(, "Access.Application") 'app.Application.Visible = True 'app.Visible = True End Sub
お礼
何度もすいません。 エクセルもアクセスも起動していて エクセルがアクティブな時に アクセスをアクティブにしてEnd Subで終わる方法が知りたいです。 このコードも実行してみましたが何も変わりませんでした。
- bonaron
- ベストアンサー率64% (482/745)
Set app = GetObject(, "Access.Application")
お礼
早速のご回答ありがとうございます。 こういうことでしょうか? Sub アクセスをアクティブにする() Dim app As Object Set app = GetObject(, "Access.Application") app.Application.Visible = True app.Visible = True End Sub ただこれだと 「指定した式に、Visibleプロパティに対する正しくない参照が含まれます。」 どうすればいいのでしょうか? 再度よろしくお願いします。
お礼
おお!すごいです。 うまくいきました! ありがとうございます!!!