Article View: free.it.visual-basic
Article #859Dati da excel ad access con DDE e API
From: Sgnapolo
Date: Wed, 01 Jun 2005 11:57
Date: Wed, 01 Jun 2005 11:57
62 lines
3150 bytes
3150 bytes
Devo importare su access dei dati da excel e ho utilizzato le DDE per far
'parlare' tra loro access e excel.
Per quel che riguarda l'importazione tutto OK, ma non so come chiudere il
file Excel una volta che ho terminato di importare i dati. Ho pensato
(male?) di utilizzare le API, ma nulla da fare.
La domanda a questo punto �: dove sbaglio? (Esiste un metodo per killare un
processo? Pu� essere quello sotto?)
Scrivo il listato (� un po' scopiazzato da sitocomune (grazie! sempre utile)
e un po' di qua di l� su internet)
'setto l'oggetto Database al database corrente
Set cdb = CurrentDb
'nella variabile app di tipo stringa salvo il percorso dove � memorizzato
nel mio pc l'EXCEL.EXE
app = "C:\Programmi\Microsoft Office\OFFICE11\EXCEL.EXE"
'nella variabile file di tipo stringa salvo il percorso del foglio Excel dal
quale prender� i dati
file = CurrentProject.Path & "\mio.xls"
'lancia in esecuzione il file Excel
idprocess= Shell(app, 6)
'apre il canale di comunicazione con il file Excel
chan = DDEInitiate("Excel", "System")
'RIGHE DI IMPORTAZIONE RIGHE E COLONNE.......
'chiude il canale (oltre ai vari riferimenti alla tabella del DB in cui sono
finiti i dati)
DDETerminate chan
'Prelevo l 'ID del processo lanciato
'Creo un Handle per quel processo
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, idprocess)
!!!!!----->>> Questa � la parte di cui non sono sicuro della sintassi (cmq
non funziona)
Call TerminateProcess(hProcess, STILL_ACTIVE)
Call CloseHandle(hProcess)
'---->>> il file Excel rimane comunque aperto! Pecch�? Why?
Queste sono le API:
Declare Function OpenProcess Lib "kernel32" _
(ByVal dwDesiredAccess As Long, _
ByVal bInheritHandle As Long, _
ByVal dwProcessId As Long) As Long
Declare Function TerminateProcess Lib "kernel32" _
(ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Declare Function CloseHandle Lib "kernel32" _
(ByVal hObject As Long) As Long
Const STILL_ACTIVE = &H103
Const PROCESS_QUERY_INFORMATION = &H400
Grazie per l'aiuto.(e scusate la lungaggine, ma un esempio � meglio di 1000
parole)
Rick
Technical Details
Message-ID:
<Tohne.1474228$35.55021808@news4.tin.it>Path:
arc1-ca.pugleaf.net!g2news1.google.com!news4.google.com!news.glorb.com!news-out.tin.it!news-in.tin.it!news4.tin.it.POSTED!not-for-mailShow Full Headers
Complete Article Headers
X-Google-Thread: f94ee,63eb5c2bc3680dbe,start X-Google-Attributes: gidf94ee,public X-Google-Language: ITALIAN,ASCII Path: arc1-ca.pugleaf.net!g2news1.google.com!news4.google.com!news.glorb.com!news-out.tin.it!news-in.tin.it!news4.tin.it.POSTED!not-for-mail From: "Sgnapolo" <ribes71@hotmail.com> Newsgroups: free.it.visual-basic Subject: Dati da excel ad access con DDE e API Lines: 64 X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.2900.2180 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180 X-RFC2646: Format=Flowed; Original Message-ID: <Tohne.1474228$35.55021808@news4.tin.it> Date: Wed, 01 Jun 2005 11:57:39 GMT NNTP-Posting-Host: 82.56.4.89 X-Complaints-To: "Please send abuse reports to abuse@tin.it and technical notifications to newsmaster@tin.it" X-Trace: news4.tin.it 1117627059 82.56.4.89 (Wed, 01 Jun 2005 13:57:39 MET DST) NNTP-Posting-Date: Wed, 01 Jun 2005 13:57:39 MET DST Organization: TIN