Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    2

    Ado, creare connessione da excel in access

    Salve a tutti, sono un nuovo utente del forum.. e vi scrivo perchè sto impazzendo nel creare una connessione da excel 2007 su access 2007. praticamente ho creato un pulsante in una form in excel che dovrebbe (premuto il pulsante) importare alcuni dati presenti nel foglio in una tabella già creata su Access.. all'interno della form ho creato il seguente codice che però non funziona dandomi come errore:

    [Microsoft] [Driver Manager ODBC] Nome origine dati non trovato e driver predefinito non specificato.

    io ho già attivato le librerie:
    - Microsoft ActiveX Data Objects 2.8 Library
    - Microsoft OLE DB Service Component 1.0 Type Library

    vi posto il codice:

    Private Sub cmdImporta_Click()

    Dim Conn

    Set Conn = CreateObject("ADODB.Connection")
    sConn = "driver={Microsoft Access Driver (*.mdb)}; dbq=" & "C:/Cartella/Database.mdb"

    Conn.Open (sConn) ' qui mi da errore!
    ..... 'altro codice

    forse devo attivare qualche altra libreria? purtroppo sto imparando adesso ad utilizzare ADO e vba, però non sono riuscito a capire dove sbaglio.. ringrazio a tutti coloro che mi potranno dare una mano.. ciao

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Qui trovi un esempio funzionante di esportazione. Incolla l'indirizzo nel tuo browser. L'ho dovuto scrivere così perchè veniva tagliato dal forum.

    [url*]http://www.exceltip.com/st/Export_data_from_Excel_to_Access_[/url](ADO)_using_VBA_in_Microsoft_Excel/425.html
    [/url]

    Dagli un'occhiata.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    2
    ciao, ti ringrazio per il link (mi è stato utile), però se non chiedo troppo adesso ho un problema.. praticamente dal foglio excel devo solamente esportare alcune colonne (e non tutto il foglio).. ho postato il seguente codice, però non so come far reperire il nome del foglio attivo in automatico (dato che cambia per ogni file excel che devo importare):

    Private Sub cmdImporta_Click()

    Dim Conn As New ADODB.Connection
    Dim RecordSet As ADODB.RecordSet
    Dim i As Long
    Dim foglio As String
    Dim TabVendite As ADODB.RecordSet


    Set Conn = New ADODB.Connection

    Conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=C:\StampeCoco\Database.accdb; Persist Security Info=false"

    Set TabVendite = New ADODB.RecordSet
    Set TabVendite.ActiveConnection = Conn

    'Dichiaro il Recordset e la variabile per la Query
    Dim SQL As String
    Set RecordSet = New ADODB.RecordSet

    foglio = ActiveSheet.Name

    'Creo la query per reperire i dati sul foglio Excel
    SQL = "SELECT DATA, NEGOZIO, AREA1, REPARTO, CATEGORIA, CONSUNTIVO, ART_CONS FROM [foglio ]"

    RecordSet.Open SQL, Conn

    'Mediante un ciclo, scorro tutto il Recordset compiendo una serie di INSERT sulla tabella di destinazione appena creata
    With RecordSet

    While Not .EOF
    SQL = "INSERT INTO TabVendite " & _
    "(Data, IdNegozio, IdArea, IdReparto, IdCategoria, Consuntivo, NumeroClienti) VALUES (" & _
    "'" & .Fields("DATA").Value & "', " & _
    "'" & .Fields("NEGOZIO").Value & "', " & _
    "'" & .Fields("AREA1").Value & "')" & _
    "'" & .Fields("REPARTO").Value & "')" & _
    "'" & .Fields("AREA").Value & "')" & _
    "'" & .Fields("REPARTO").Value & "')" & _
    "'" & .Fields("CATEGORIA").Value & "')" & _
    "'" & .Fields("CONSUNTIVO").Value & "')" & _
    "'" & .Fields("ART_CONS").Value & "')"

    CurrentProject.Connection.Execute SQL
    RecordSet.MoveNext
    Wend
    End With
    ' Chiudo il Recordset e annullo l'oggetto
    RecordSet.Close
    Set RecordSet = Nothing
    ' Chiudo la connessione
    Conn.Close
    Set Conn = Nothing

    End Sub

    praticamente non riesco a fargli passare in automatico il nome del foglio.. ho provato con ActiveSheet.Name ma non funziona... saresti così gentile da potermi dire come risolvere questo problema..

    grazie mille.. ciao

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Fammi capire. I dati devono essere accodati tutti nella stessa tabella, giusto? I fogli invece sono tutti di uno stesso file oppure no?

    Nel caso siano tutti nello stesso file hai la necessità specifica di selezionare il nome del foglio di volta in volta o devi fare il lavoro una tantum ed importarli tutti?

  5. #5
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Stamattina non mi ero accorto che avessi stravolto il codice che ti avevo linkato. Nel link è chiaramente spiegato come estrarre solo le colonne di tuo interesse. Se vuoi poter specificare da quale foglio attingere basta che inserisci tale parametro in fase di input e hai risolto.

    codice:
    Sub ADOFromExcelToAccess()
    Dim cn As ADODB.Connection, rs As ADODB.Recordset, r As Long
    Dim strFoglio As String
    strFoglio = InputBox("nome foglio", "foglio")
        Set cn = New ADODB.Connection
        cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & _
            "Data Source=C:\TUO_PERCORSO\tuo_file.mdb;"
        Set rs = New ADODB.Recordset
        rs.Open "nominativi", cn, adOpenKeyset, adLockOptimistic, adCmdTable
        r = 2
        Do While Len(Sheets(strFoglio).Range("A" & r).Formula) > 0
            With rs
                .AddNew
                .Fields("nome") = Sheets(strFoglio).Range("A" & r).Value
                .Fields("cognome") = Sheets(strFoglio).Range("B" & r).Value
                .Fields("data_nascita") = Sheets(strFoglio).Range("E" & r).Value
                .Update
            End With
            r = r + 1
        Loop
        rs.Close
        Set rs = Nothing
        cn.Close
        Set cn = Nothing
    End Sub
    Nel mio esempio ho estratto le colonne A,B ed E dal foglio che seleziono digitandone il nome al momento della richiesta , importandole nella tabella rispettivamente nei campi nome,cognome e data_nascita.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.