2012-05-02 4 views
10

Ho un 2010 Excel file con un foglio che si estende 34864 rows e 1387 columns. Sto cercando di importarlo in Access 2010 con la procedura guidata di importazione, ma quando seleziono quel foglio, ACCESS si risponde, e dopo alcuni secondi, mi dà unottenere un errore imprevisto dal driver di database esterno (1) durante l'importazione di dati da Excel per accedere

"Errore imprevisto dal driver di database esterno (1)"

Questo è dovuto alla dimensione del foglio o c'è qualcosa nelle celle che impedisce il funzionamento. Altri fogli dallo stesso file vengono importati senza problemi.

+1

suggerisco di provare un test a 1/2 importazione di dimensioni, e poi andare avanti se questo è successo. – octopusgrabbus

risposta

3

Verificare questo per la specifica di Access 2010: http://office.microsoft.com/en-us/access-help/access-2010-specifications-HA010341462.aspx.

Nel tuo caso, potrebbe essere il numero di colonne, quindi prova prima a importare meno di 255. Inoltre, potrebbe essere la dimensione dei dati nelle colonne o nei tipi di dati (importazione del testo in numerico, ecc.)

+0

ora è giù fino a 72 colonne, e ho rimosso la maggior parte degli elementi quindi ci sono solo 1863 righe ora, che ancora non verranno caricate in accesso in modo abbastanza interessante, se copio i dati da quel foglio ad un altro nuovo foglio, il nuovo foglio verrà caricato (con 1863 righe e 72 colonne), ma se copio il foglio che mi sta dando problemi, quella copia non verrà caricata – user1251858

+0

Sembra un dato "residuo" che causa il problema. Quando copi 1863 righe, copi esattamente ciò che vedi/vuoi. Quando copi un foglio, copi TUTTI i dati (oltre le 1863 righe). Per esempio. potresti avere alcuni dati nella riga # 18000 della cella # 55 che è in colore BIANCO. –

+0

ma ho evidenziato tutte quelle righe e premuto "cancella", non dovrebbe cancellare quello che c'è? o è questo un diverso tipo di dati? – user1251858

2

Ho appena sperimentato anche questo problema e ho trovato una soluzione molto semplice e facile. Ho notato che il mio foglio di calcolo aveva un nome personalizzato, quindi ho deciso di verificare se ciò causava il problema. L'ho cambiato con il nome predefinito di "Sheet1" e, sicuramente, ha funzionato !!

0

Nel mio caso il foglio di calcolo è stato collegato a un altro foglio di calcolo. Stavo importando un sottoinsieme del foglio originale. Ho creato un nuovo foglio e copiato la colonna di dati per colonna nel blocco note e quindi nel nuovo foglio rimuovendo i collegamenti. C'era qualcosa nei collegamenti che stava causando il problema.
BTW: era questo insieme di dati da quando ho eseguito questa sequenza di importazione da questo foglio di calcolo a questo database più di 50 volte. Il dimezzamento dei dati ha funzionato per la prima (più grande) metà dei dati, ma non per il secondo.

1

Salvare il foglio di Excel in un file .CSV delimitato da virgola, quindi caricarlo come file di testo. Per me, questo funziona bene.

Il problema è che in .xls (x) sono presenti tutti i tipi di problemi di lay-out. La conversione in .CSV rimuove tutti i markup relativi al lay-out e li converte in dati "grezzi".

tutto il meglio!

0

ciao anche io sto affrontando questo errore quando import il file .xlsb. Dopo di che ho copiato il contenuto in un altro file xlsx, quindi importare questo file xlsx.

1

Lungo le linee di RHiggins risposta:

Nel mio caso Jet OleDb.4.0 gettato questo errore (oledbconnection.open()) perché il nome di un foglio di lavoro in una cartella di lavoro (xls) era troppo lungo.

0

stavo ottenendo questo errore durante l'importazione da un file xlsb, salvare il file in formato XLSX e quindi importare, dovrebbe funzionare

0

Un altro problema che viene scoperto è che se il file di Excel viene salvato come un binario foglio di lavoro Excel solo salvalo come una cartella di lavoro di Excel e ha caricato bene.

0

Ho avuto lo stesso errore. Il foglio di calcolo è stato creato da un altro software (SAP). Poiché non è stato creato da Office, Excel non è stato in grado di leggerlo (!?!). Devo aprirli in Excel, salvarlo, quindi caricarlo in Access e funziona! Come un caso peggiore, diciamo che avete decine di file, si può solo aprire e chiudere da codice VBA prima dell'importazione.

1

Scaricare e installare Microsoft Access Database Engine 2010 Redistributable e quindi modificare le stringhe di connessione DB in Microsoft Excel per utilizzare ACE come provider.

Change (esempio):

Provider=Microsoft.Jet.OLEDB.4.0 

a:

Provider=Microsoft.ACE.OLEDB.12.0. 

Microsoft sta lavorando su una risoluzione e fornirà un aggiornamento in una prossima release.

+0

Una cosa da notare qui: È necessario * utilizzare * la versione 2010, indipendentemente dalla versione di Office installata sul computer. Ho provato a scaricare/installare la versione 2016 del motore di database di Access ridistribuibile, ma non si installava sul mio computer, apparentemente perché ho installato le applicazioni di Office Desktop dal mio abbonamento O365. Apparentemente, i componenti CTR (Click-To-Run) interferiscono con l'installazione di versioni più elevate della ridistribuibile. –

1

Utilizzare questa

OleDbConnection conObj = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\a.XLS;Extended Properties=Excel 8.0;") 

invece di questo

OleDbConnection conObj = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\a.XLS;Extended Properties=Excel 8.0;") 
10

Si può verificare questo errore dopo l'installazione di patch di sicurezza KB4041681. Vedi questa voce MSDN. Nel mio caso, la sostituzione Microsoft.Jet.OLEDB.4.0 provider con Microsoft.ACE.OLEDB.12.0 aiutato.

+0

Grazie. Sospetto che questo sia il mio problema. Ha sempre funzionato bene prima di oggi. – Lumberjack

0

ho avuto lo stesso problema, dopo aver ottenuto un aggiornamento di sicurezza in Windows 7 si è verificato questo errore. Abbiamo troppi file Excel per eseguire un'operazione di apertura/chiusura, quindi ho deciso di provare altri modi.

1- Restituire un punto di ripristino quando Access ha funzionato correttamente: non ha funzionato nel mio caso. L'unica modifica nella configurazione del software è un aggiornamento per la sicurezza e sembra che l'aggiornamento per la sicurezza continui a causare problemi.

2- Ridurre righe, colonne ecc. Non ha funzionato per me; il primo file che l'accesso ha cercato di raggiungere aveva 10k righe, la riduzione di queste righe a 3 non era la soluzione.

3- Cercando di modificare la stringa di connessione: non ha funzionato per me, non è molto ragionevole; la connessione funziona da anni, improvvisamente perché dovrebbe fermarsi? In alcuni casi lo fa ma non questa volta.

4- La disinstallazione dell'ultimo aggiornamento per la sicurezza ha funzionato nel mio caso. Ecco l'aggiornamento di sicurezza disinstallato.

Screen shot of uninstalled security update

Buona fortuna con solving.

0

risolta per Windows 7:

Disinstallare l'aggiornamento di sicurezza KB4041681 e KB4041678 entrambi (Relativo a Excel e Jet/ACE provider)

0

Una soluzione che ha funzionato per me quando si affronta questo problema è quello di avere l'Excel File in cui è in corso l'importazione/esportazione quando è in corso l'importazione Importazione &.

Il problema sembra essere causato dalla patch che impedisce la transazione di dati tra file CLOSED .xls e altre applicazioni di database esterne. Avere il file excel aperto risolve questo problema.

Alcuni esempi di codice di esempio qui sotto per evidenziare cosa funziona e cosa no con VBA:

non riesce

wbTarget.SaveAs strFilename, xlExcel8 
wbTarget.Close  
ExportSheetToDB strFilename, strSheetName, "tblTemp" 

opere

wbTarget.SaveAs strFilename, xlExcel8 
ExportSheetToDB strFilename, strSheetName, "tblTemp" 
wbTarget.Close