从VBA连接到SSMS IDE窗口



我正在尝试在 SQL Server Management Studio 中打开SQL窗口,以显示所使用的SQL语句(这是允许人们直接修改语句)

我不想运行语句,我已经可以做到了。

我可以轻松地启动一个新的过程:(当前代码)

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

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

(从上一个问题中,Shell "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

最新更新