butta in un modulo:
Private Declare Function OpenProcess Lib "Kernel32" _
(ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, _
ByVal dwProceessId As Long) As Long
Private Declare Function WaitForSingleObject Lib "Kernel32" _
(ByVal hHandle As Long, ByVal dwMillisecond As Long) As Long
Private Declare Function CloseHandle Lib "Kernel32" _
(ByVal hObject As Long) As Long
Private Const SYNCRONIZE = &H100000
Private Const INFINITE = &HFFFF
Public Sub RunAppAndWait(FileName As String, WindowsStyle As Integer)
Dim hProg As Long
hProg = Shell(FileName, vbNormalNoFocus)
If hProg Then WaitOnProgram (hProg)
End Sub
Public Sub WaitOnProgram(idProg As Long)
Dim hProg As Long
Dim iret As Long
hProg = OpenProcess(SYNCRONIZE, False, idProg)
If hProg <> vbNull Then
iret = WaitForSingleObject(hProg, INFINITE)
CloseHandle hProg
End If
End Sub
per lanciare il bat:
Call RunAppAndWait("c:\tuo.bat", 0)
ciao
BFS
> ?Si può lanciare un file .bat da access? grazie.
Qui c'è un esempio:
http://support.microsoft.com/kb/302891/it
--
sv
--
questo articolo e` stato inviato via web dal servizio gratuito
http://www.newsland.it/news segnala gli abusi ad ab...@newsland.it
con la mia soluzione il tuo codice si interrompe fino a quando il bat
non ha finito....se non ti serve che succeda questo usa pure l'altra
soluzione proposta
ciao
BFS
Questo potrebbe anche far comodo se il file bat deve buttare fuori dei
valori che Access deve leggere
Piuttosto, come leggere dei codici di errore 'sputati' fuori dalla procedura
dentro il bat ?
infatti io lo uso perchè il bat deve fare appunto delle elaborazioni che
mi servono al passo successivo vba.
Per gli errori credo che nel bat ci sia qualche comando dos per sputar
fuori un log...si tratterebbe semplicemente di leggerlo. Nel mio caso il
bat è banale e non mi sono mai posto il problema
ciao
BFS
Invio sms ?
no no semplici xcopy...per gli sms uso l'ocx di volasms
ciao
Call Shell("C:\Guarda.bat")
se vuoi vedere quel che "ritorna" la Shell:
MsgBox Shell("C:\Guarda.bat")
Guardati l'Help per le opzioni Shell.
Bruno
"Bruno Campanini" <brun...@libero.it> ha scritto nel messaggio
news:4cae3e95$0$23143$4faf...@reader1.news.tin.it...
Call RunAppAndWait("C:\Program Files\miacartella\blat\inviaemail.bat",
0)
Call Shell("C:\Program Files\miacartella\blat\inviaemail.bat")
sbaglio qualcosa?
"leopard73" <leop...@email.it> ha scritto nel messaggio
news:4cad98fa$0$41847$4faf...@reader5.news.tin.it...
se il bat lo metti direttamente in c:\ funziona?
ciao
BFS
già provato nemmeno! non capisco
Cosa c'è nel .BAT?
Bruno
nel bat c'è il codice qui sotto, premetto che se faccio doppio click sul
file bat da windows funziona perfettamente
***** code bat ***********
@echo off
blat -subject "Scarichi " -body "Alleghiamo file scarichi" -t
in...@emailmittente.it -f in...@emaildestinatario.it -server
out.alice.it -attach "C:\Program Files\miacartella\pdf\scarichi.pdf" -d
Immagino sia tutto su una riga e l'unico eseguibile
sia quel "blat" che io non conosco.
Al quale, se anch'esso è un .bat, puoi provare a
premettere un Call.
Ma non ti aspettare che Access funga da sistema
operativo supplementare per tutte le cazzate che
vorresti fargli eseguire.
Perché - opinione personale - mi sembra proprio
una cazzata cercare di fargli eseguire operazioni
che non coinvolgono dati da esso Access generati
o archiviati.
Ovvero con quel file .BAT si inviano dati di Access?
Mi pare di no, correggimi se sbaglio.
Bruno
"Bruno Campanini" <brun...@libero.it> ha scritto nel messaggio
news:4cb03851$0$10749$4faf...@reader2.news.tin.it...
no anche se mi servirebbe inviargli l'email ma non so come, forse è il caso
di gestire blat da access come mi aveva postato qualcuno ma non mi
funzionava per questo ho provato con un bat esterno.
Anni fa feci anche io mi trovai a tentare di lanciare il ".bat" da
VBA, senza successo. Mi accorsi poi che era l'antivirus a bloccarne
l'invocazione.
ah grazie per la segnalazione controller�