从特定工作簿的批处理中执行.vbs

我有一个.bat文件,我用它来执行一个.vbs,我从excel工作簿中取出。

目前,我的.bat文件如下所示:

echo Starting program start C:\Users\midi\Desktop\Refresh_Data_Connection.vbs echo Finish program 

但是,我的.vbs文件的问题是它没有引用我需要的特定工作簿。 如何设置.vbs来更改存储在我的桌面上的特定工作簿? 任何帮助/反馈或推动正确的方向将是非常有益的,在此先感谢!

我的vbs是:

 Sub RefreshConns() With Application .EnableEvents = False .ScreenUpdating = False End With Sheets("Run Macro").Activate Dim connName As String ' connection name Dim connStr As String ' connection string Dim sqltext ' SQL text Dim TempconnName As String ' temporary connection name Dim TempconnStr As String ' temporary connection string Dim Tempsqltext ' temporary SQL text Dim i As Integer Dim SiteName As String SiteName = ActiveSheet.Cells(1, 2) 'MsgBox (SiteName) For i = 5 To 11 connName = ActiveSheet.Cells(i, 1).Value connStr = ActiveSheet.Cells(i, 2).Value sqltext = ActiveSheet.Cells(i, 4).Value 'MsgBox (connName) TempconnStr = Replace(connStr, "SiteNameVBA", SiteName) 'Debug.Print (ActiveWorkbook.Connections(connName).ODBCConnection.Connection) 'MsgBox (TempconnStr) 'Tempsqltext = Replace(sqltext, "SiteNameVBA", SiteName) 'On Error Resume Next ActiveWorkbook.Connections(connName).ODBCConnection.CommandText = sqltext ActiveWorkbook.Connections(connName).ODBCConnection.Connection = "ODBC;" & TempconnStr ActiveWorkbook.Connections(connName).Refresh Next i With Application .EnableEvents = True .ScreenUpdating = True End With End Sub Public Function ZeroToBlank(x As String) As String If x = "0" Then ZeroToBlank = "" Else ZeroToBlank = x End If End Function 

 Set xlBook = GetObject("C:\Users\User\Documents\Super.xls") For each wsheet in xlbook.worksheets msgbox wsheet.name next 

是如何。 记住VBS中没有excel常量,不存在dim x as something因为vbs只是变体。 所以只是dim x

其他方式来运行的Excel副本

 Set GetExcelApp = GetObject("", "Excel.Application") Msgbox GetExcelApp 

开始一个新的Excel,并显示一个Excel常量取代它的值(43)。

 set xlapp = createobject("Excel.Application") xlapp.Workbooks.Open "C:\Users\User\Documents\Super.xls" '43 is 95/97 look up xlExcel9795 in object browser to see other options xlapp.ActiveWorkbook.SaveAs "C:\Users\User\Documents\Super.xls", 43 

一种方法是使用setx声明系统环境variables。 使用pipe理权限运行你的批处理:

 setx PATHFILE "/path/file.xls" /M 

检查是否被声明:

 set | find "PATHFILE" 

并阅读它的函数Environ()打开你的VBS工作簿:

 Workbooks.Open Environ("PATHFILE") 

编辑

您不需要使用系统环境variables( /m参数),因为您只能使用用户环境。 您只需要记住程序需要重新启动才能读取用户和系统环境variables。