Хейхо, у меня возникла странная проблема.VBA исполняет .bat, но перезаписывает компакт-диск в .bat
исполняю линию, как это в моем VBA:
Shell "path_to_my_bat\batname.bat"
Содержание летучих мышей очень проста, а также:
cd c:\some_path\
copy *csv newfiles.txt
Что она делает просто взять все томов CSV в каталоге и объединяет их в один .txt, который я использую далее по строке в макросе.
Проблема в том, что я играл с некоторыми скриптами vbs, похоже, что я что-то изменил о том, как работает команда shell.
Команда «cd», кажется, пропущена или перезаписана чем-то, фактическая вторая часть летучей мыши выполняется в каталоге, в котором находится моя рабочая книга. К счастью, у меня был .csv, лежащий там, иначе я бы не заметили ...
Bat на нем отлично работает, если я не запускаю его из VBA.
VBS скрипт я играл выглядит следующим образом (он должен открыть файл и выполнить макрос там):
Я думаю, что я переписал какой-то настройки по умолчанию, что я не должен был возился с ... Кроме того, я ничего не сделал, что знаю, что-то изменить. Сегодня утром макрос прекрасно работал, но теперь из-за ошибки летучей мыши это бесполезно.
' Create a WshShell to get the current directory
Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
' Create an Excel instance
Dim myExcelWorker
Set myExcelWorker = CreateObject("Excel.Application")
' Disable Excel UI elements
myExcelWorker.DisplayAlerts = False
myExcelWorker.AskToUpdateLinks = False
myExcelWorker.AlertBeforeOverwriting = False
myExcelWorker.FeatureInstall = msoFeatureInstallNone
' Tell Excel what the current working directory is
' (otherwise it can't find the files)
Dim strSaveDefaultPath
Dim strPath
strSaveDefaultPath = myExcelWorker.DefaultFilePath
strPath = WshShell.CurrentDirectory
myExcelWorker.DefaultFilePath = strPath
' Open the Workbook specified on the command-line
Dim oWorkBook
Dim strWorkerWB
strWorkerWB = strPath & "\YourWorkbook.xls"
Set oWorkBook = myExcelWorker.Workbooks.Open(strWorkerWB)
' Build the macro name with the full path to the workbook
Dim strMacroName
strMacroName = "'" & strPath & "\YourWorkbook" &
"!Sheet1.YourMacro"
on error resume next
' Run the calculation macro
myExcelWorker.Run strMacroName
if err.number <> 0 Then
' Error occurred - just close it down.
End If
err.clear
on error goto 0
oWorkBook.Save
myExcelWorker.DefaultFilePath = strSaveDefaultPath
' Clean up and shut down
Set oWorkBook = Nothing
' Don’t Quit() Excel if there are other Excel instances
' running, Quit() will
shut those down also
if myExcelWorker.Workbooks.Count = 0 Then
myExcelWorker.Quit
End If
Set myExcelWorker = Nothing
Set WshShell = Nothing
Если это помогает, я работающий под управлением Windows 8.1 64 бит с Excel 2010 64bit Получил полный админ-доступ и т.д.
Вы работаете с другого диска? – SLaks