Smart003 Ответов: 4

Не удается запустить макрос ...макрос может быть недоступен в рабочей книге или все маркро могут быть отключены


"Cannot run the macro ...The macro may not be available in the workbook or all marcros may be disabled"<pre>

oExcel = CreateObject("Excel.Application")
oExcel.Visible = False
oBooks = oExcel.Workbooks
oBook = oBooks.Open(Dts.Variables("filePath").Value.ToString())
//Your macro here:
oExcel.Run("Yourmacro")


I have used the above logic in SSIS package, every thing went fine but macros was not running and the result was the above error
My macro name is "Module1"


макрос выглядит следующим образом

Sub fileSave()
'
Dim newFileName As String, originalFileName As String, fileSaveName As String, fileNamePathSaved As String, fileNameSaved As String
Dim response As VbMsgBoxResult, currentRoute As String
'
ThisWorkbook.RefreshAll
ActiveWorkbook.Save ' save the current workbook before messing with it
Application.DisplayAlerts = False ' turns off alerts and messages
' Save file name and path into a variable
originalFileName = ActiveWorkbook.FullName ' gets the fullname with path
' originalFilePath = ActiveWorkbook.Path ' grabs the current path

Dim usingReplace As String
usingReplace = Replace(originalFileName, ".xlsm", ".xlsx")
ActiveWorkbook.SaveAs Filename:=usingReplace, FileFormat:=xlOpenXMLWorkbook
fileNameSaved = ActiveWorkbook.Name ' grabs the name of the saved file

Workbooks.Open Filename:=originalFileName 'reopens the original workbook file
Application.DisplayAlerts = True ' turns the alerts and messages back on


'provide an opportinity to clear the incident report flag
' If incidentFiled = True Then response = MsgBox("Do you want to clear the Incident Report?", vbInformation + vbOKCancel, "Incident Report Form")
If response = vbOK Then incidentFiled = False
'close the newly made file

' Workbooks(fileNameSaved).Close True ' sub terminates at this point
'
End Sub


заранее спасибо

Что я уже пробовал:

oExcel = CreateObject("Excel.Application")
oExcel.Visible = False
oBooks = oExcel.Workbooks
oBook = oBooks.Open(Dts.Variables("filePath").Value.ToString())
//Your macro here:
oExcel.Run("Module1")

4 Ответов

Рейтинг:
2

OriginalGriff

Прочтите сообщение об ошибке, оно не могло бы быть намного яснее, если бы попыталось:

Цитата:
Не удается запустить макрос ...Макрос может быть недоступен в рабочей книге или все маркро могут быть отключены

Так что есть две возможности:
1) "макрос может быть недоступен в рабочей книге" - проверьте, что код макроса существует в той же рабочей книге, что и код, который вы пытаетесь выполнить. Если это не так ... он не может быть запущен!
2) "все маркросы могут быть отключены" - это довольно вероятно: файловые макросы часто отключаются по всему офису по соображениям безопасности (IIRC, который в наши дни даже используется по умолчанию). Если макросы отключены, ни один макрос не может быть запущен.


Smart003

Приношу извинения за поздний ответ, макросы доступны в рабочей книге, и я попытался запустить макросы в файле Excel(.xlsm)(который задан в качестве входных данных) он работает так, как ожидалось

Рейтинг:
2

Member 14778065

при сохранении файла выберите пункт Сохранить как и нажмите на стрелку раскрывающегося списка в поле Сохранить как тип, найдите рабочую книгу EXCEL MICRO-ENABLED


CHill60

Вы не можете сохранить книгу, содержащую макросы, если не измените ее с файла .xlsx (по умолчанию) на один из файлов .xlsm, .xlsb или .xls. Даже если вы это сделаете, макросы все равно можно отключить или попытаться запустить макрос, который недоступен в открытой книге. Так что это "решение" просто неточно.

Рейтинг:
2

Member 14804868

oExcel = CreateObject("Excel.Приложение")
oExcel.Видна = Ложь
oBooks = oExcel.Рабочая тетрадь
ОБУК = обуки.Открыть(ДЦ.Переменных("путь_к_файлу").Ценность.Метод toString())
//Ваш макрос здесь: Я вставил сюда свой макрос и вернул ошибку: исключил оператор
oExcel.Run("сохранение файлов")


CHill60

Это не решение проблемы

Рейтинг:
1

Smart003

oExcel = CreateObject("Excel.Application")
oExcel.Visible = False
oBooks = oExcel.Workbooks
oBook = oBooks.Open(Dts.Variables("filePath").Value.ToString())
//Your macro here:
oExcel.Run("fileSave")


Теперь, после изменения, логика работает так, как и ожидалось