• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:確実にエクセルをアクティブにする方法)

確実にエクセルをアクティブにする方法

このQ&Aのポイント
  • エクセルをアクティブにする方法についての質問です。確実にエクセルをアクティブにする方法を教えてください。
  • AppActivateステートメントを使用してエクセルをアクティブにする方法を知りたいです。
  • 現在のVBAコードではエクセルファイルを起動することができますが、エクセルをアクティブにする方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

http://okwave.jp/qa/q7866966.html を参考にして。 Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function SetForegroundWindow Lib "user32.dll" (ByVal hwnd As Long) As Long Sub test() Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim MyFileName Dim MyFileFullName Dim プロシージャー名 MyFileName = "book.xlsm" MyFileFullName = CurrentProject.Path & "\" & MyFileName プロシージャー名 = "開く" Set xlApp = New Excel.Application Set xlBook = xlApp.Workbooks.Open(MyFileFullName) xlApp.Visible = True SetForegroundWindow xlApp.hwnd 'としたらどうでしょ? xlApp.Run "'" & MyFileFullName & "'!" & プロシージャー名 Set xlBook = Nothing Set xlApp = Nothing End Sub

sgnwhszl
質問者

お礼

APIを使うのですか。 xlApp.Visible = True の下に SetForegroundWindow xlApp.hwnd に入れたらアクティブになりました。(今の所) ちなみに SetForegroundWindow xlApp.hwndは Private Declare Function SetForegroundWindow Lib "user32.dll" (ByVal hwnd As Long) As Long の方を使っているようですが Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long は何の意味があるのでしょうか? Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long をコメントアウトしても問題なく動きました。

関連するQ&A