从特定工作簿的批处理中执行.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。