Buongiorno.
Devo importare alcuni valori da alcune celle in foglio Excel.
Uso Office 365, di conseguenza dovrebbero essere Access e Excel 2016.
Non è la prima volta che realizzo un'applicazione del genere e non ho mai avuto problemi.
Evidentemente c'è un errore, ma non riesco a trovare l'istruzione errata.
In sostanza da un form apro un file excel e collego un foglio come tabella;
Importo i dati che mi servono;
scollego il foglio, ed in effetti non è più elencato come tabella;
chiudo il file.
Apparentemente si conclude tutto normalmente, ma nella gestione della attività, il file excel risulta aperto.
Per chiudere il file excel non è sufficiente eseguire il quit dell'applicazione, ma devo necessariamente chiudere il file Access.
Se non chiudo e cerco di eseguire una nuova importazione, ottengo l'errore
"462 - il computer server remoto non esiste o non è disponibile"
Di seguito il codice
Dim strPath As String
Dim objXL As New Excel.Application
Dim xlWB As Excel.Workbook
Dim xlWS As Excel.Worksheet
Dim strFileName As String
Dim strSheetName As String
Dim rFoundCell As Range
Dim rFoundCellNext As Range
Dim rLastCell As Range
Dim lngCol As Long
Dim lngRow As Long
Dim lngColNextVal As Long
Dim lngRowNextVal As Long
Dim I As Integer
Dim strValue As String
'importa ordine
Set objXL = CreateObject("Excel.Application")
strSheetName = "Preventivo"
Set xlWB = objXL.Workbooks.Open(strPath)
Set xlWS = xlWB.Worksheets(strSheetName)
'collega foglio excel
strFileName = "ImpExcel_" & strSheetName
If Not IsNull(DLookup("Name", "MSysObjects", "Name='" & strFileName & "'")) Then CurrentDb.TableDefs.Delete strFileName
DoCmd.TransferSpreadsheet acLink, acSpreadsheetTypeExcel12, strFileName, strPath, False, strSheetName & "!"
Set rLastCell = xlWS.Cells.Find(What:="*", After:=xlWS.Cells(1, 1), LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, MatchCase:=False)
'Numero Ordine
Set rFoundCell = Range("A1:" & rLastCell.Address).Find("Numero")
If Not IsEmpty(rFoundCell) Then
lngCol = Range(rFoundCell.Address).Column
lngRow = Range(rFoundCell.Address).Row
Set rFoundCellNext = Range(xlWS.Cells(lngRow, lngCol + 1).Address(False, False))
Me!NrOrdine = ExtractNumber(rFoundCellNext.Value)
End If
' Importazione di altre celle
.
.
.
.
'scollega foglio excel
CurrentDb.TableDefs.Delete strFileName
Set xlWS = Nothing
xlWB.Close
Set xlWB = Nothing
objXL.Quit
Set objXL = Nothing
Grazie
Ciao