是否可以将Excel宏与文件扩展名相关联?

时间:2015-07-10 00:26:12

标签: excel vba excel-vba

我已经构建了一个用于构建和运行SQL查询的宏。到目前为止,我对它非常满意。我想要添加的唯一内容是Windows中双击.sql文件的能力,它在宏内打开。样品如下:

SQL Query Tool

这是在按下加载查询时打开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现在是个问题。

2 个答案:

答案 0 :(得分:1)

您需要右键单击SQL文件并选择打开方式。选择,或浏览到Excel.exe。将其设置为使用。

打开SQL文件的默认应用程序

这将在Excel中打开您的SQL文件。

从这里开始,您需要教您的宏来检测SQL文件何时启动并按需运行。

答案 1 :(得分:1)

请参阅此处了解如何创建自定义扩展程序并将其与操作相关联。

https://superuser.com/questions/406985/programatically-associate-file-extensions-with-application-on-windows

可能在您的情况下工作的是将扩展名与vbs文件相关联,该文件将启动SQL文件路径作为参数并使用自动化打开Excel文件,然后将SQL文件加载到工作簿中