Collegare excel tramite vba con sql

di il
33 risposte

Collegare excel tramite vba con sql

Buongiorno a tutti, ho una necessità…

vorrei collegare un file excel ad una tabellla sql. 

Informandomi un po su internet ho realizzato questo codice, però all'esecuzione mi riporta l'errore :

 tipo non definito dall'utente. 

Ho attivato tutte le librerie di sql ma niente., consigli?

dove ho inserito x è perchè ho coperto i dati sensibili

Sub test()
Dim con As ODodb.Connection
Set con = New adodb.Connection

con.Open "driver=(sql server);server=192.xxx.x.xxx;database=xxxxxxx;uid=xxxxx;pwd=xxxxxx;"
Dim rng As Range: Set rng = Application.Range("a2:d7")
For Each Row In rng.Rows
ID = Row.Cells(1).Value
matricola = Row.Cells(2).Value
utenza = Row.Cells(3).Value
indirizzo = Row.Cells(4).Value

SQL = "select  top (100)" & ID & ", " & matricola & ", " & utenza & ", " & indirizzo & " from tab_reader where nomefile like '%%'"
con.Execute SQL
Next Row
con.Close
MsgBox ("concluso")
End Sub

33 Risposte

  • Re: Collegare excel tramite vba con sql

    Quel tipo di errore dovrebbe essere rilevabile già con il debug.

    Su quale riga si blocca?

    Hai il riferimento alla libreria ADO? Salvo che tu non l'abbia digitato a mano e non con un copia incolla, questo codice

    Dim con As ODodb.Connection
    Set con = New adodb.Connection

    è stranissimo. 0Dodb non so cosa sia e di suo l'editor di VBA dovrebbe correggere subito “adodb” in “ADODB” (maiuscolo)

  • Re: Collegare excel tramite vba con sql

    Errore di battitura, lo stavo riscrivendo a mano per cercare di capire se ci fosse, ma in questo caso l'ho creato io. 

    Ho attivato la libreria ADO, partito il debug ma si ferma alla riga della connessione al db 

    “ con.Open “driver=(sql server);server=192.xxx.x.xxx;database=xxxxxxx;uid=xxxxx;pwd=xxxxxx;” ” 

    [Microsoft] [driver manager odbc] nome origine dati non trovato e driver predefinito non specificato

  • Re: Collegare excel tramite vba con sql

    Perchè vuoi usare ODBC?

      "Provider=SQLOLEDB;Data Source=192.xxx.xxx.xxx;Initial Catalog=TuoDb;User Id=myUsername;Password=myPassword;"
  • Re: Collegare excel tramite vba con sql

    28/07/2023 - oregon ha scritto:


    Provider=SQLOLEDB;Data Source=192.xxx.xxx.xxx;Initial Catalog=TuoDb;User Id=myUsername;Password=myPassword;

    Ho provato anche a cambiarlo, logicamente aggiornando i dati, ma continua ad uscirmi errore.

  • Re: Collegare excel tramite vba con sql

    28/07/2023 - oregon ha scritto:


    Perchè vuoi usare ODBC?

      "Provider=SQLOLEDB;Data Source=192.xxx.xxx.xxx;Initial Catalog=TuoDb;User Id=myUsername;Password=myPassword;"

    Onestamente è la prima volta che mi imbatto in questa tipologia di codice, quindi è quasi arabo per me

  • Re: Collegare excel tramite vba con sql

    Domanda da un milione di Bolivar Venezuelani:

    Excel supporta gia' la possibilita' di leggere dati da una tabella di SQL Server/MySQL/dBase, ed in generale da qualunque DBMS per il quale e' installato il driver ODBC (ho appena installato il driver per SQLite, giusto per provare)

    Perche' lo devi fare da codice?

  • Re: Collegare excel tramite vba con sql

    Ciao,

    a parte gli errori che ti hanno già segnalato….

    perchè non fai una cosa molto semplice ?

    Vai su foglio excel e crea una connessione da origini Altre

    Seleziona Sqlserver e dopo aver passato il nome del server segui le istruzioni per crearti la connessione

    Se ti sei collegato correttamente vai sulle proprietà di connessione e ti prendi la stringa di connessione che ha generato.

  • Re: Collegare excel tramite vba con sql

    28/07/2023 - migliorabile ha scritto:


    Domanda da un milione di Bolivar Venezuelani:

    Excel supporta gia' la possibilita' di leggere dati da una tabella di SQL Server/MySQL/dBase, ed in generale da qualunque DBMS per il quale e' installato il driver ODBC (ho appena installato il driver per SQLite, giusto per provare)

    Perche' lo devi fare da codice

    Da excel ci sono riuscito però volevo creare una funzione per evitare che persone non molto abili con excel possano combinare qualche guaio con il database sql. Poi oltre che ad effettuare una query di selezione ( select ) vorrei che facesse un update nel database sql… questo   è il motivo per la quale voglio farlo tramite codice  

  • Re: Collegare excel tramite vba con sql

    28/07/2023 - By65Franco ha scritto:

    28/07/2023 - By65Franco ha scritto:


    Ciao,

    a parte gli errori che ti hanno già segnalato….

    perchè non fai una cosa molto semplice ?

    Vai su foglio excel e crea una connessione da origini Altre

    Seleziona Sqlserver e dopo aver passato il nome del server segui le istruzioni per crearti la connessione

    Se ti sei collegato correttamente vai sulle proprietà di connessione e ti prendi la stringa di connessione che ha generato

    Buongiorno, l'ho fatto però non trovo il modo per modificare la seLECT. Mi prende in considerazione l'intera tabella mentre io vorrei trovare un sistema per dirgli i criteri di selezione.

  • Re: Collegare excel tramite vba con sql

    Per i criteri devi lavorare con la WHERE della SELECT

    Per aggiornare la UPDATE e per inserire la INSERT

    Ma tu, prima di utilizzare SQL Server, quanto sai del linguaggio SQL?

  • Re: Collegare excel tramite vba con sql

    31/07/2023 - oregon ha scritto:


    riteri devi lavorare con la WHERE della SELECT

    Per aggiornare la UPDATE e per inserire la INSERT

    Ma tu, prima di utilizzare SQL Server, quanto sai del linguaggio SQL?

     ActiveWorkbook.Queries.Add Formula:= _
           "let" & Chr(13) & "" & Chr(10) & "    Origine = Sql.Database(""XXXX"", ""XXXX"", [Query=""select *  from TABELLA wherE XXXXX like '%%'"", CommandTimeout=#duration(0, 0, 1, 0), MultiSubnetFailover=true])" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & "    Origine"
       ActiveWorkbook.Worksheets.Add
       With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
           "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=Query1;Extended Properties=""""" _
           , Destination:=Range("$A$1")).QueryTable
           .CommandType = xlCmdSql
           .CommandText = Array("SELECT * FROM [Query1]")
           .RowNumbers = False
           .FillAdjacentFormulas = False
           .PreserveFormatting = True
           .RefreshOnFileOpen = False
           .BackgroundQuery = True
           .RefreshStyle = xlInsertDeleteCells
           .SavePassword = False
           .SaveData = True
           .AdjustColumnWidth = True
           .RefreshPeriod = 0
           .PreserveColumnInfo = True
           .ListObject.DisplayName = "Tabella_Query1"
           .Refresh BackgroundQuery:=False
       End With

    Tramite il registratore, sono riuscito ad identificare dove inserire la query.. Ora però se volessi attivare la macro tramite un tasto mi dice che la query già esiste (query 1).. soluzioni?

     -  vedere se la query già esiste e scriverne una nuova 

    - cancellarla ad ogni fine macro?

    - altra soluzione?

    Grazie mille

  • Re: Collegare excel tramite vba con sql

    Non parlo di query di Excel ma di qyery inviate a SQL server.

    Devi inserire sul DB SQL Server o non sto capendo nulla io?

  • Re: Collegare excel tramite vba con sql

    Tramite excel devo interrogare un database sql ( quindi faccio la select * from ecc..) poi ci saranno dei dati presenti nel file excel, in quel caso dovrò fare update su sql tabella set campo =cells(riga,colonna) where eccc )… 

    però l'interazione deve avvenire sempre tramite excel

  • Re: Collegare excel tramite vba con sql

    E si, in questo modo è incomprensibile.

    Ma in sintesi estrema, perchè vorrei capire meglio, di cosa hai bisogno ?

    Qual'è il flusso delle informazioni da dover trattare tra excel e database ? 

    Qual'è il flusso delle informazioni da dover trattare tra database e excel ? 

    Quali operazioni deve compiere l'utente per interagire con il database e excel ? 

Devi accedere o registrarti per scrivere nel forum
33 risposte