从 VBA 连接到 SSMS ide window

connect to SSMS ide window from VBA

我正在尝试在 SQL Server Management Studio 中打开 SQL window 以显示 SQL statement used(这是为了让人直接修改statement)

我不想运行声明,我已经可以了。

我可以很容易地开始一个新进程:(当前代码)

Public Sub ShowSQL(strSQL As String)

Dim TempSQL As String
Dim FileNum As Long

strSQL = Replace(strSQL, ",", "," & vbCrLf)

TempSQL = Get_Temp_File_Name
FileNum = FreeFile()
Open TempSQL For Output As #FileNum
Print #FileNum, strSQL
Close #FileNum

Shell "ssms " & TempSQL

End Sub

但我不知道如何判断 SSMS 是否已经打开。
对于 Excel,我知道我可以使用 GetObject(, "Excel.Application") - SSMS 的等价物是什么?

(来自previous questionShell "explorer " & TempSQL1在当前实例中打开文件,但如果没有SSMS实例打开则失败)

您可以使用以下函数来确定管理工作室 (ssms.exe) 当前是否在您的计算机上 运行:

Function IsProcessRunning(ProcessName As String) As Boolean
    Dim Process, strObject
    strObject = "winmgmts://" & Environ("ComputerName")
    For Each Process In GetObject(strObject).InstancesOf("win32_process")
        If UCase(Process.Name) = UCase(ProcessName) Then
             IsProcessRunning = True
             Exit Function
        End If
    Next
    IsProcessRunning = False
End Function 

在您的代码中写入:

if Not IsProcessRunning("ssms.exe") Then Shell "ssms " & TempSQL