是否有可能将Excelmacros与文件扩展名关联?

我已经构build了一个用于构build和运行SQL查询的macros。 到目前为止,我非常满意。 我想添加的唯一的事情是在Windows中双击一个.sql文件的能力,它在macros内打开。 示例如下:

SQL查询工具

这是按Load Query时打开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应用程序中创build一个小例程:

 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 

辉煌的权利?

没有:(这“会”的工作,我相信(非常感谢你们,张贴我的回复,让我这么远)但唉,思杰再次罢工:

错误:ActiveX组件不能创build对象:'Excel.Application'

我相信你们已经解决了这个问题,思杰现在是这个问题。

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

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

在你的情况下, 可能的工作是将扩展与一个以启动SQL文件path作为参数的vbs文件关联,并使用自动化打开你的Excel文件,然后将SQL文件加载到工作簿中。

您需要右键单击一个SQL文件并select打开方式。 select或浏览到Excel.exe。 将其设置为使用打开SQL文件的默认应用程序。

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

从这里你需要教你的macros来检测它是什么时候由一个SQL文件启动并按需要运行的。