Domanda Errore di run-time '-2147467259 (80004005)'

DCapelli_old

Nuovo utente
Original poster
9 Agosto 2023
11
0
1
Excel 2023
Salve,
ho creato il codice allegato e la prima volta che lo lancio funziona, mentre poi mi dà il seguente errore e non riesco più ad eseguirlo. Ho provato a creare un file e anche in questo caso, succede la stessa cosa, funziona la prima poi va in errore. Pensavo il problema fosse il disco in condivisione ma la stessa cosa succede sul disco locale.

Grazie per qualsiasi vostro suggerimento.
Davide
 

DCapelli_old

Nuovo utente
Original poster
9 Agosto 2023
11
0
1
Excel 2023
Scusate l'errore che compare è:

Errore di run-time '-2147467259 (80004005)':

La connessione a Excel per la visualizzazione del foglio di lavoro
collegato è stata persa.
 

alfrimpa

VBA Expert
Supermoderatore
18 Dicembre 2015
74.490
7.767
2.445
71
Napoli
Office 365
Del solo codice non ne facciamo nulla.

Devi allegare un file di esempio con i dati ed il risultato da ottenere messo a mano.

Inoltre il codice non va allegato in un file ma messo nel post tra i TAG CODE.
 

DCapelli_old

Nuovo utente
Original poster
9 Agosto 2023
11
0
1
Excel 2023
Salve, non avevo letto del TAG CODE
Allego file e metto codice nel TAG CODE (spero nel modo corretto). Il programma è molto "stupido" prende una serie di dati dettagliati e con una SQL li raggruppa con una certa logica e li scrive in un altro foglio. La cosa strana è che la prima volta che lancio il codice tutto funziona, la seconda volta invece va in errore .



Visual Basic:
Sub Pulsante3_Click()
Dim rs As New ADODB.Recordset
Dim rs2 As New ADODB.Recordset
Dim ResFog As Worksheet
Dim ResFog2 As Worksheet
Dim Con As New ADODB.Connection
Dim Con2 As New ADODB.Connection
Dim SQL As String
Dim SQQ As String
Dim Sheet As String
Dim Riga As Integer
Dim NomeFile As String

NomeFile = ThisWorkbook.FullName


SQL = ""




Con.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & NomeFile & _
"; extended properties=""Excel 12.0;HDR=yes;"";"

'Workbooks(NomeF).Activate
Worksheets("Sea&Air").Select

Sheet = ActiveSheet.Name


Set ResFog = ThisWorkbook.Worksheets(Sheet)


 
 SQL = "SELECT [PRD],[Supplier],[SHIPMODE],[CARRIER],[ORIGIN PORT/AIRPORT],[DESTINATION PORT/AIRPORT],IIF([CNTR]='-',[BL/CNTR],[CNTR]), "
 SQL = SQL + "SUM([CBM consolidate]) AS [VOL],SUM([BOXES LOV]) AS [BOXES],SUM([GROSS WEIGHT]) AS [WEIGHT],SUM([PCS]) AS [PIECES],[ETD],[ETA ITALY],[DC DELIVERY] "
 SQL = SQL + "FROM [Sea&Air$A5:AJ10000] WHERE not isnull([PRD]) "
 SQL = SQL + "GROUP BY [PRD],[Supplier],[SHIPMODE],[CARRIER],[ORIGIN PORT/AIRPORT],[DESTINATION PORT/AIRPORT],IIF([CNTR]='-',[BL/CNTR],[CNTR]),[ETD],[ETA ITALY],[DC DELIVERY]"
 

rs.Open SQL, Con

Set ResFog = ThisWorkbook.Worksheets("Sumup")

With ResFog

.Range("A2:P50000").ClearContents

.Range("A2").CopyFromRecordset rs

End With

Con.Close


MsgBox "TERMINATO ACCORPAMENTO"

End Sub
 

alfrimpa

VBA Expert
Supermoderatore
18 Dicembre 2015
74.490
7.767
2.445
71
Napoli
Office 365
Allego file e metto codice
Non c'è nessun file.

Se superiore ai 200 kb guarda qui ma non è necessario l'originale; ne basta uno ridotto da cui si desume il problema

 

Sgrubak

Excel/VBA Expert
Supermoderatore
10 Marzo 2022
4.688
1.649
245
365 Beta x32
Prova a chiudere esplicitamente il recordset oltre alla connessione. E, pur non credendo che serva, setta a Nothing entrambi gli oggetti in maniera esplicita.

Ma perché vorresti far fare dei calcoli ad ACE quando sei in Excel?
 

DCapelli_old

Nuovo utente
Original poster
9 Agosto 2023
11
0
1
Excel 2023
Eccolo, ho tolto un po' di dati e alleggerito. Grazie
 

Allegati

  • Receipt Calculator P01 2025 - Copia.xlsm
    197,4 KB · Visite: 3

DCapelli_old

Nuovo utente
Original poster
9 Agosto 2023
11
0
1
Excel 2023
Prova a chiudere esplicitamente il recordset oltre alla connessione. E, pur non credendo che serva, setta a Nothing entrambi gli oggetti in maniera esplicita.

Ma perché vorresti far fare dei calcoli ad ACE quando sei in Excel?

Provato, ma non funziona. Ho provato a chiudere recordset e impostarlo a nothing, ma senza risultato.
L'obiettivo del codice VBA, sarebbe quello di raggruppare e salvare su un altro foglio solo alcune informazioni di un file che contiene troppi dettagli.

Grazie.
 

alfrimpa

VBA Expert
Supermoderatore
18 Dicembre 2015
74.490
7.767
2.445
71
Napoli
Office 365
Io dal file non ho capito cosa dovrebbe fare la macro.

Puoi essere più esplicito?
 

DCapelli_old

Nuovo utente
Original poster
9 Agosto 2023
11
0
1
Excel 2023
Scusate, sono alle prime armi. La macro, tramite SQL dovrebbe dal foglio "Sea&Air", prendere alcuni campi (PRD, SHIPMODE....) e accorparli, sommando alcuni campi (WEIGHT, BOXES...), poi copiare queste informazioni nel foglio "Sumup".
Questo lo fa la prima volta, poi però se aggiungo o metto nel foglio "Sea&Air" nuove informazioni e lancio la questi (Pulsante in alto a sx), va in errore.

Potrei fare una pivot, ma poi le informazioni del foglio "Sumup" mi servirebbero per altri calcoli che con tabella Pivot non riesco a gestire
 

alfrimpa

VBA Expert
Supermoderatore
18 Dicembre 2015
74.490
7.767
2.445
71
Napoli
Office 365
Ma è possibile vedere una situazione iniziale dei dati e quello che si vuole ottenere dopo l'esecuzione della macro?

Nel file allegato cosa rappresentano i dati del foglio Sea&Air e quelli del foglio Sumup?

C'è relazione tra loro? Se si quale?
 

DCapelli_old

Nuovo utente
Original poster
9 Agosto 2023
11
0
1
Excel 2023
Ma è possibile vedere una situazione iniziale dei dati e quello che si vuole ottenere dopo l'esecuzione della macro?

Nel file allegato cosa rappresentano i dati del foglio Sea&Air e quelli del foglio Sumup?

C'è relazione tra loro? Se si quale?

I dati nel foglio "Sumup" sono gli stessi del foglio "Sea&Air", ma raggruppati per [SUPPLIER],[CNTR],[BL/CNTR] e con alcuni dati sommati [CBM consolidate],[PCS],[GROSS WEIGHT]
 

Sgrubak

Excel/VBA Expert
Supermoderatore
10 Marzo 2022
4.688
1.649
245
365 Beta x32

DCapelli_old

Nuovo utente
Original poster
9 Agosto 2023
11
0
1
Excel 2023
Lo temevo, ma hai visto mai...
A me non gira nemmeno la prima volta. Riguarda la SQL. Prova anche una cosa semplice tipo
SQL = "SELECT [PRD] FROM [Sea&Air$A5:AJ10000]"
Che a me non ha mai dato l'errore. Quella originale invece si.
Effettivamente se faccio una SELECT semplice senza WHERE o GROUP BY, funziona quante vuoi, appena aggiungo anche solo GROUP BY si blocca con solito errore di connessione al foglio...mah ?!?!?
 

Sgrubak

Excel/VBA Expert
Supermoderatore
10 Marzo 2022
4.688
1.649
245
365 Beta x32
funziona quante vuoi
Quindi tenderei ad escludere problemi di connection string, anche se a vedere ConnectionStrings.com la versione corretta sarebbe
Visual Basic:
Con.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & NomeFile & _
"; extended properties=""Excel 12.0 Macro;HDR=yes;IMEX=1"";"
Ma IMEX = 1 con HDR = YES fa a cazzotti. Ci vorrebbe HDR=NO ma poi ti perdi gli header.
Ad ogni modo, da lo stesso problema anche con questa, ma fai qualche prova anche tu.

Pur cercando il problema perché m'incuriosisce, ripeto la domanda: hai necessità di usare ACE per qualche motivo?
Quale versione esatta di Excel hai? La 2023 non mi risulta. C'è la 2021, la 2024, la 365...

Di sicuro quel che cerchi di ottenere si ricava con una Pivot, o al massimo qualche formula. A voler fare gli "avanzati" (ma solo perché l'ho scoperto da poco e ci sto giocando un po' con ottimi risultati) PowerPivot e DAX.[/code]
 

DCapelli_old

Nuovo utente
Original poster
9 Agosto 2023
11
0
1
Excel 2023
OK Sgrubak @Sgrubak , grazie. ho provato anche io a sbatterci la testa e so che posso risolverla in altro modo, ma non capisco il perché dell'errore...mi sfugge qualche cosa. Comunque grazie, chiuderò il post cercando soluzione alternativa ma nel frattempo proverò a sbatterci ancora un po' la testa.