Форум сайта python.su
0
Python профи! Пожалуйста помогите!!! Вроде простое дело, но никак не получается…
Есть макрос в MS Access (32 bit) необходимо запускать макрос в этой базе каждый час, круглосуточно… Поэтому нужен скрипт в Python.
Есть код ниже, который работает только если изначально открыть MS Access файл, если предварительно ничего не открывать то база MS Access открывается только как Read-only и макрос не запускается
import win32api
from win32com.client import Dispatch
import os
strDbName = ‘c
WORK/Volumes/EAS2.accdb’
objAccess = Dispatch(“Access.Application”)
objAccess.Visible = True
objAccess.OpenCurrentDatabase(strDbName)
objDB = objAccess.CurrentDb()
objAccess.DoCmd.RunMacro (“mcrRUN”)
Ошибка “Operation must use an updateable query. ”
Как открыть базу MS Access и передать свои credentials? Или как-то обойти условие, что открытие только как read-only?
В самом MS Access все Trusted настройки установлены как Enabled…
Заранее благодарю!
Офлайн
857
solely-uniqueОпиши подробнее, как ты эту базу MS Access открываешь, когда код на питоне работает правильно.
Есть код ниже, который работает только если изначально открыть MS Access файл
solely-uniqueА как ты передаёшь креды (credentials), когда у тебя код на питоне работает правильно?
Как открыть базу MS Access и передать свои credentials?
Офлайн
0
На самом деле я просто руками открываю MS Access файл, он открывается с моими credentials сразу и дальше уже при открытом MS Access код описанный выше работает нормально. Макрос запускается и отрабатывает.
Если заранее файл не открывать, код описанный выше дает ошибку “Operation must use an updateable query.”. А сам файл MS Access после команды objAccess.OpenCurrentDatabase(strDbName) открывается только READ-ONLY 
Офлайн
857
И что будет, если сделать командный файл Windows и написать там запуск сначала MS Access, а затем запуск этого скрипта на питоне?
Для запуска программы в фоновом режиме есть команда start
https://stackoverflow.com/questions/21031171/how-to-run-a-command-in-the-background-on-windows
Офлайн
0
Я нашла
os.startfile('c
WORK/Volumes/EAS2.accdb')
открывает файл as read and write 
Действительно всё было просто! Вдруг кому пригодится 
Офлайн