我已经构建了一个用于构建和运行SQL查询的宏。到目前为止,我对它非常满意。我想要添加的唯一内容是Windows中双击.sql文件的能力,它在宏内打开。样品如下:
这是在按下加载查询时打开SQL文件的代码。
Sub LoadQuery()
Dim fNameAndPath As Variant
fNameAndPath = Application.GetOpenFilename(FileFilter:="SQL Query Files (*.sql), *.sql", Title:="Select File To Be Opened")
If fNameAndPath = False Then Exit Sub
Open fNameAndPath For Input As #1
Sheets("Sheet1").SQL_Query = Input$(LOF(1), 1)
Close #1
Sheets("Sheet1").SQLFileName.Caption = fNameAndPath
End Sub
这甚至可能吗?我不认为会这样,但我想先与你们核对。
到目前为止我尝试了什么?没什么,因为我甚至不知道从哪里开始,谷歌叔叔并没有把一个兄弟挂起来,事实上他只是把我弄糊涂了。
使用下面的想法我接受了这个:
Option Explicit
Dim xlApp, xlBook, fNameAndPath
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open("G:\Analytics Reporting Archive\SQL Client.xlsm", 0, True)
xlApp.Open WScript.Arguments(0) For Input As #1
xlBook.Sheets("Sheet1").SQL_Query = Input$(LOF(1), 1)
xlApp.Close #1
xlBook.Sheets("Sheet1").SQLFileName.Caption = fNameAndPath
Set xlBook = Nothing
Set xlApp = Nothing
WScript.Quit
这没有用,它不像打开文本文件(sql文件)所以我在Excel应用程序中创建了一个小例程:
Sub LoadQueryDBLClick(QueryFileName As String)
Open QueryFileName For Input As #1
Sheets("Sheet1").SQL_Query = Input$(LOF(1), 1)
Close #1
Sheets("Sheet1").SQLFileName.Caption = fNameAndPath
End Sub
然后在VBS中调用它,如下所示:
Option Explicit
Dim xlApp, xlBook, fNameAndPath
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open("G:\Analytics Reporting Archive\SQL Client.xlsm", 0, True)
xlApp.Run "LoadQueryDBLClick " & WScript.Arguments(0)
Set xlBook = Nothing
Set xlApp = Nothing
WScript.Quit
很棒吧?
不:(。它"会工作,我对此充满信心(非常感谢那些为我发布了让我这么做的回复的人)但是Citrix再次罢工:
错误:ActiveX组件无法创建对象:' Excel.Application'
我相信你们已经解决了这个问题,因为Citrix现在是个问题。
答案 0 :(得分:1)
您需要右键单击SQL文件并选择打开方式。选择,或浏览到Excel.exe。将其设置为使用。
打开SQL文件的默认应用程序这将在Excel中打开您的SQL文件。
从这里开始,您需要教您的宏来检测SQL文件何时启动并按需运行。
答案 1 :(得分:1)
请参阅此处了解如何创建自定义扩展程序并将其与操作相关联。
可能在您的情况下工作的是将扩展名与vbs文件相关联,该文件将启动SQL文件路径作为参数并使用自动化打开Excel文件,然后将SQL文件加载到工作簿中