Torna al Thread
Public Function Crea_Oggetto_Excel_con_Recupero_ID_Processo(ByRef Oggetto_Excel As Object) As Int32
Dim intPreProcessi() As Int32
Dim proProcessi() As Process
Dim proAttuale As Object
Dim intConta As Int32
Dim blnTrovato As Boolean = False
Try
' Recupera tutti i processi Excel avviati
proProcessi = System.Diagnostics.Process.GetProcessesByName("EXCEL")
' Passsa in rassegna i processi rielvati
For Each proAttuale In proProcessi
' Incrementa il vettore degli indici dei processi
If intPreProcessi Is Nothing Then
ReDim intPreProcessi(0)
Else
ReDim Preserve intPreProcessi(UBound(intPreProcessi) + 1)
End If
' Memorizza l'indice del processo
intPreProcessi(UBound(intPreProcessi)) = proAttuale.Id
Next
' Crea l'oggetto Excel
Oggetto_Excel = CreateObject("Excel.Application")
' Aggiorna l'elenco dei processi Excel avviati
proProcessi = System.Diagnostics.Process.GetProcessesByName("EXCEL")
' Passa in rassegna i processi rilevati
For Each proAttuale In proProcessi
' Imposta il flag di indice trovato
blnTrovato = False
' Se il processo attuale è stao rilevato prima della creazione del processo
' Excel, imposta il flag su trovato
If Not intPreProcessi Is Nothing Then
For intConta = 0 To UBound(intPreProcessi)
If intPreProcessi(intConta) = proAttuale.Id Then blnTrovato = True
Next
End If
' Se non è stato trovato nessun indice uguale, restituisce quello attuale,
' che corrisponde al processo appena creato
If Not blnTrovato Then Return proAttuale.id
Next
Return Nothing
Catch exc As Exception
meErrori.RegistrazioneErrore(Err, exc, True)
Return Nothing
End Try
End Function