You can achieve what you want using APIS. I use two APIs SetForegroundWindow and FindWindow
Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) _ As Long Private Declare Function FindWindow Lib "user32" Alias _ "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) _ As Long Sub Sample() Dim objWord As Object, docWord As Object Dim strPath As String, FileName As String Dim hwnd As Long Set objWord = CreateObject("Word.Application") objWord.Visible = True '~~> Change this to the relevant Filename and path strPath = "C:\Users\Siddharth Rout\Desktop\Sample.docx" '~~> Put the acutal file name here without the extension FileName = "Sample" Set docWord = objWord.Documents.Open(FileName:=strPath, ReadOnly:=True) hwnd = FindWindow(vbNullString, FileName & " [Read-Only] - Microsoft Word") If hwnd > 0 Then SetForegroundWindow (hwnd) End If End Sub
NOTE If you are sure that another Word application is not open, besides what you opened, you can also use this :)
Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long Private Declare Function FindWindow Lib "user32" Alias _ "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Sub Sample() Dim objWord As Object, docWord As Object Dim strPath As String Dim hwnd As Long Set objWord = CreateObject("Word.Application") objWord.Visible = True '~~> Change this to the relevant Filename and path strPath = "C:\Users\Siddharth Rout\Desktop\Sample.docx" Set docWord = objWord.Documents.Open(FileName:=strPath, ReadOnly:=True) hwnd = FindWindow("OpusApp", vbNullString) If hwnd > 0 Then SetForegroundWindow (hwnd) End If End Sub
source share