|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Feb 2001
Città: Reggio Emilia
Messaggi: 230
|
AUTOMAZIONE ED EXCEL
Ho scritto del codice in Access 2004 (vedi sotto) che utilizzo per controllare se un file di Excel 2004 (“CAMBI.xls”) è aperto e lo apre non non lo è, utilizzando le API.
Il mio codice funzionava bene col 98, ma con XP mi dà un problema: aprendo altri file di Excel quando spengo il Pc, XP non riesce a chiudere “CAMBI.xls”, infatti aprendo il Task Manager ho notato che Excel.exe compare 2 volte. Come posso aprire “CAMBI.xls” da Access utilizzando l’automazione invece delle API? Ho provato con l’automazione (vedi sotto) ma non ho molta dimestichezza, “CAMBI.xls” lo apre (sembra!) visualizzando per un attimo solo l’UserForm1 che “CAMBI.xls” lancia con .Show all’apertura, poi si chiude sigh!(è un form utilizzato come casella di dialogo personalizzata che contiene un pulsante che esegue delle operazioni poi riduce ad icona il foglio), io invece vorrei visualizzare il foglio compresa la barra degli strumenti. --------------------------------------------------------------------------------------------------------------- CON LE API IN UN MODULO ( CAMBI.xls è nella stessa cartella che contiene il DB ) Option Compare Database Option Explicit Private Declare Function FindWindow Lib "user32" Alias _ "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long Const SW_SHOWNORMAL = 1 Dim path, fs, s, h Dim hwnd As Long Sub MyEXCEL() Set fs = CreateObject("Scripting.FileSystemObject") h = CurrentDb.Properties("name").Value s = fs.GetparentfolderName(h) path = s + "\cambi.xls" hwnd = FindWindow(vbNullString, "Microsoft Excel - CAMBI.xls") If hwnd = 0 Then ' 0 significa che il file di Excel non è in esecuzione. ShellExecute hwnd, vbNullString, path, vbNullString, vbNullString, SW_SHOWNORMAL Else Exit Sub End If End Sub IN UNA MASCHERA Private Sub Comando1_Click() MyEXCEL 'vedi Modulo1 End Sub -------------------------------------------------------------------------------------------------------------- CON L’AUTOMAZIONE IN UNA MASCHERA ( CAMBI.xls è nella stessa cartella che contiene il DB ) Private Sub Comando2_Click() Dim path, fs, s, h Dim xl As Object Set xl = CreateObject("Excel.sheet") Set fs = CreateObject("Scripting.FileSystemObject") h = CurrentDb.Properties("name").Value s = fs.GetparentfolderName(h) path = s + "\cambi.xls" xl.Application.Workbooks.Open path End Sub |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:06.