Newsgroup: it.comp.appl.access
Titolo: Access e schedulazione

Ciao a tutto il NG,
 
ho creato un piccolo che mdb che durante la notte estrae dei dati e li 
scrive su un file xls.
 
Se schedulo l'esecuzione dell'mdb ottengo questo errore:
 
1004 - Impossibile trovare la proprietà Open per la classe Workbooks.
 
Però:
 
1. Se lancio l'mdb "a se stante" va tutto a buon fine
 
2. Se creo un file .bat con dentro le seguenti istruzioni:
 
"C:\Program Files\Microsoft Office\root\Office16\MSACCESS.EXE" 
"E:\Contratti\EstrazioneDatiXLS.accdb " /cmd 2019,2019
 
e lo lancio va tutto a buon fine
 
3. Se creo un collegamento contenente l'istruzione del punto 2 va tutto 
a buon fine
 
4. Se schedulo il tutto dicendo di eseguire il file .bat indicato al 
punto 2 (oppure passandogli tutta l'istruzione)  mi appare l'errore 
segnalato in apertura.
 
Qualcuno avrebbe qualche suggerimento da darmi?
 
ciao e grazie mille
 
-- 
Enzo
 


Personalmente, non aprirei mai Access per eseguire codice..., Access si apre se serve aprire l'interfaccia Utente.
Scrivi un file VBS, che supporta codice come fosse VBA ma tutto in LateBinding, e fai eseguire le azioni che ritieni.
Il File BAT lancia il file VBS.
 
@Alex

prova "vbsedit"
 
https://www.vbsedit.com/
 

Ciao @Alex,
 
intanto grazie per la risposta.
 
In effetti il codice in un primo tempo era integrato all'interno di un 
gestionale, poi il cliente voleva che i dati venissero estratti in 
maniera automatica e siccome la cosa funzionava tranquillamente ho 
pensato di copiare la parte di codice riguardante l'estrazione, 
incollarla in nuovo mdb e schedulare il tutto.
 
Ovviamente già nel gestionale era tutto in LateBinding.
 
Proverò a convertire il tutto in vbs, grazie per il suggerimento.
 
ciao
 
-- 
Enzo


 
 
 
SOLO per anticipare la presa visione di vbsedit
(tool MOLTO utile):
per creare uno script vbs si adopera il blocco note
e si salva con estensione .vbs (NON .txt)
 
le istruzioni sufficienti (salvo errori) sono:
-----------
Set WshShell=WScript.CreateObject("WScript.Shell")
 
pathAccessEXE="C:\Program Files\Microsoft Office\root\Office16\MSACCESS.EXE" 
pathAccessFE="E:\Contratti\EstrazioneDatiXLS.accdb"
 
stringAvvio=chr(34) & pathAccessEXE & chr(34) & " " & pathAccessFE & " /cmd 2019,2019 "	
 
WshShell.Run stringAvvio
 
Set WshShell=nothing
 
WScript.Quit
-------------------
 
quindi poi è da provare e schedulare il file vbs
 
 
PERO', per rimanere in Access,
se quella chiamata ha solo quello scopo
 
puoi anche provare a scrivere il codice necessario
in un nuovo accdb (o modificare quello presente)
nell'evento Sub Form_Load() di una form "inizio"
da impostare poi come form di avvio automatico
 
Rimane la questione dei parametri passati come argomenti della command line:
 inseriti direttamente nel codice ? (e variati di anno in anno) ?

Ciao GiorgioDaPrato,
 
grazie mille per il suggerimento.
Ieri sera mi sono ri-cimentato un po' con vbs (tempo fa avevo fatto una 
cosa molto piccola non paragonabile con quello che dovrei fare adesso).
 
Prima di riscrivere il tutto ho voluto verificare se, convertendo 
soltanto la parte che mi dava l'errore durante la schedulazione, 
l'errore scomparisse.
 
L'errore si verificava, nell'mdb, una volta giunto a questa istruzione:
 
Set oBook = oExcel.Workbooks.Open(strExcelPath & strExcelFileName)
 
Purtroppo anche in vbs ottenevo lo stesso errore, allora cercando su 
internet se qualcun altro aveva avuto lo stesso problema mi sono 
imbattuto su questa pagina:
 
https://stackoverflow.com/questions/7112967/powershell-excel-automation-save-open-fails-in-scheduled-task?rq=1
 
 
in particolare modo viene detto di:
 
********************************************************
You have to create a folder (or two on a 64bit-windows):
 
(32Bit, always)
 
C:\Windows\System32\config\systemprofile\Dektop
 
(64Bit)
 
C:\Windows\SysWOW64\config\systemprofile\Desktop
********************************************************
 
Sul server in questione mancava la cartella Desktop nella System32.
 
Una volta creata la cartella anche l'mbd ha "magicamente" ripreso a 
funzionare correttamente.
 
Grazie a tutti per l'aiuto ed i suggerimenti
 
ciao
 
-- 
Enzo



Giorgio... da VBS non serve a nulla lanciare Access...
Si istanziano gli Oggetti DAO e si manipolano le Tabelle eseguendo Query o modificandi i Records da codice... senza aprire inutilmente l'interfaccia Client.
 
@Alex

 @Alex
 
eh, sì
 
avevo interpretato la richiesta come ricerca di un modo alternativo
di avviare, da scheduler, un accdb "ovviamente" funzionante