2012-06-13 9 views
3

Я хотел бы использовать Python для запуска макроса, содержащегося в MacroBook.xlsm, на листе в Data.csv.Python - запустить макрос Excel

Обычно в excel у меня есть оба файла, открытые и сдвигающие фокус на файл Data.csv и запуск макроса из MacroBook. Сценарий python загружает файл Data.csv каждый день, поэтому я не могу поместить макрос в этот файл.

Вот мой код:

import win32com.client 
import os 
import xl 

excel = win32com.client.Dispatch("Excel.Application") 

macrowb = xl.Workbook('C:\MacroBook.xlsm') 
wb1 = xl.Workbook('C:\Database.csv') 
excel.Run("FilterLoans") 

Я получаю сообщение об ошибке, "pywintypes.com_error: (-2147352567" Возникло исключение., (0, u'Microsoft Excel», и" Не удается запустить макрос 'FilterLoans'. Макрос может быть недоступен в этой книге или все макросы могут быть отключены. ", U'xlmain11.chm ', 0, -2146827284), None)"

Ошибка указывает, что FilterLoans недоступен в файле Database.csv ... как его импортировать?

+1

Никогда не использовал Python, но только предположение: 'macrowb .Run ("FilterLoans") '? –

+1

То же самое здесь: P Я не использовал python, поэтому попробуйте этот 'excel.Run (« MacroBook! FilterLoans »)' –

+0

Код Siddharth работает, спасибо! @iDevlop - это не работает, потому что он пытается запустить код на macrowb. – user1137778

ответ

0

1) вы не можете иметь VBA в * .csv-файле. Вам нужно, чтобы файл * .xlsm был активной книгой. Я не думаю, что вам нужно открыть файл * .csv вообще, если ваш макрос знает, как его найти.

2) Включение VBA доступ модуля в вашем Office Excel:

File 
options 
Trust Center 
Trust Center Settings 
Macro Settings 
Enable VBA access 

3) Я использую эту функцию для запуска макросов:

excel.Application.Run("FilterLoans") 
Смежные вопросы