プロが教える店舗&オフィスのセキュリティ対策術

現在エクセルとアクセスを開いています。
エクセルマクロで現在開いているアクセスをアクティブにしたいのですがうまくいきません。

Sub アクセスをアクティブにする()
Dim app As Object
Set app = CreateObject("Access.Application")
app.Application.Visible = True
app.Visible = True
End Sub

これを実行すると新たに空のアクセスアプリケーションが開きます。
(app.Application.Visible = True)を抜いても同じです。
現在起動中のアクセスファイル(○○○.mdb)をエクセルからアクティブにするにはどうすればいいのでしょうか?

ご教授よろしくお願いします。

A 回答 (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/S …

※※ ShowWindow で アクティブ化 のみでは前面に出てこなかったので、1度最小化してから戻してます。(これでいいのかは?)

※※ VBE画面からの実行では、前面にはこなかった。
    • good
    • 0
この回答へのお礼

おお!すごいです。
うまくいきました!
ありがとうございます!!!

お礼日時:2009/04/18 09:31

「現在開いているアクセス」ということは


それは見えているんですよね?
可視にするコードは不要では?

Sub アクセスをアクティブにする()
Dim app As Object
Set app = GetObject(, "Access.Application")
'app.Application.Visible = True
'app.Visible = True
End Sub
    • good
    • 0
この回答へのお礼

何度もすいません。
エクセルもアクセスも起動していて
エクセルがアクティブな時に
アクセスをアクティブにしてEnd Subで終わる方法が知りたいです。

このコードも実行してみましたが何も変わりませんでした。

お礼日時:2009/04/18 00:38

Set app = GetObject(, "Access.Application")

    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。

こういうことでしょうか?
Sub アクセスをアクティブにする()
Dim app As Object
Set app = GetObject(, "Access.Application")
app.Application.Visible = True
app.Visible = True
End Sub

ただこれだと
「指定した式に、Visibleプロパティに対する正しくない参照が含まれます。」

どうすればいいのでしょうか?
再度よろしくお願いします。

お礼日時:2009/04/17 19:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A