从 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 question,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
我正在尝试在 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 question,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