+ Rispondi al Thread
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: Collegare File Excel A Query Access

  1. #1
    salvodel71 non è in linea Novello
    Post
    13

    Collegare File Excel A Query Access

    Ciao a tutti,
    grazie per aver risposto ai miei precedenti quesiti.
    Il mio problema è il seguente :

    ho un foglio excel conteggio_pluto.xls che devo aprire e cambiare nome in conteggio_pippo.xls e a quest'ultimo collegarlo alla qryconteggio_pippo come origine dati.

    1) aprire conteggio_pluto e cambiare nome in conteggio_pluto ;

    2) collegare il file conteggio_pluto alla qryconteggio_pluto già precedentemente creata ;

    3) verificare che il file sia stato creato magari aprendolo ;

    Grazie

  2. #2
    L'avatar di dragone bianco
    dragone bianco non è in linea Moderatore Globale
    Luogo
    Aosta
    Post
    7,734

    Question

    Ti puoi spiegare meglio?
    Lo vuoi fare tutto da excels??

    Ciao

  3. #3
    salvodel71 non è in linea Novello
    Post
    13
    Ciao Dragone,
    grazie per avermi risposto.
    No praticamente io vorrei farlo tutto in codice da access tramite un pulsante di comando.
    Praticamente ho provato a registrare la macro facendo tutto da excel e mi è venuto questo codice :

    codice:
    With ActiveSheet.QueryTables.Add(Connection:=Array( _
            "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=C:\Documents and Settings\salvatore\Documenti\salvio\lavo" _
            , _
            "ro\archivio\CIVILI.MDB;Mode=Share Deny Write;Extended Properties="""";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet " _
            , _
            "OLEDB:Database Password=ud1personale;Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops" _
            , _
            "=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encr" _
            , _
            "ypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=Fal" _
            , "se"), Destination:=Range("A2"))
            .CommandType = xlCmdTable
            .CommandText = Array("qryconteggio_iengo")
            .Name = "CIVILI"
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .PreserveColumnInfo = True
            .SourceDataFile = _
            "C:\Documents and Settings\salvatore\Documenti\salvio\lavoro\archivio\CIVILI.MDB"
            .Refresh BackgroundQuery:=False
        End With
        ActiveWorkbook.Save

    Ho provato ad importarlo come codice in access ma mi da problemi.
    Quindi vorrei farlo direttamente con codice VBA di access.
    Grazie

  4. #4
    L'avatar di dragone bianco
    dragone bianco non è in linea Moderatore Globale
    Luogo
    Aosta
    Post
    7,734
    se vuoi farlo tutto da codice non hai bisogno di collegare puoi leggere i dati che ti servono sul fogli excels e memorizzarli direttamente in una tabella.A meno che tu non voglia che i dati access e quelli excels siano allineati.

    Ciao

  5. #5
    salvodel71 non è in linea Novello
    Post
    13
    I dati devono essere allineati sempre.
    Una volta creato il collegamento tra la query qryconteggio_pippo i cui campi sono(Inizio assenza,fine Assenza) e il file conteggio_pippo, aprirò quando ce ne sarà bisogno il file conteggio_pippo e farò l'aggiorna dati prelevando i dati aggiornati dalla qryconteggio_pippo.
    Questo file excel è un file che conteggia i giorni di assenza di ogni dipendente e deve sempre essere aggiornato.
    Siccome le assenze vengono registrate sul database in access allora mi serve il collegamento con ciascun file excel nel quale ci sono particolari formule per il conteggio dei giorni.
    Ora la creazione la facevo a mano sia della query che del file.
    Aprivo un file excel di quel tipo già esistente lo rinominavo e poi lo collegavo alla qry corrispondente.
    Ricapitolando da VBA di access :

    1) aprire il file excel "c:\lavoro\conteggio_paperino.xls"
    2) rinominarlo in "conteggio_pluto.xls"
    3) agganciarlo allaqueryconteggio_pluto

    Adesso vorrei automatizzare la procedura.
    Grazie

  6. #6
    L'avatar di dragone bianco
    dragone bianco non è in linea Moderatore Globale
    Luogo
    Aosta
    Post
    7,734
    Facciamo un passo alla volta.
    Per "pilotare" excels da access tramite VBA devi abilitare la libreria.

    Vai nell'editor VBA di access (ti basta aprire un modulo, o posizionarti sun del codice che hai scrito)
    vai al menu Strumenenti - Riferimenti e abilita la voce Microsoft excels 9.0

    ora hai a disposizione tutti i codici di excels, puoi usare i codici per aprire il file modifcarlo e salvarlo con il nome.

    In excels esiste questa funzione
    variabile=Getopenfilaname

    Ti apre una finestra di dialogo per cercare il file.
    se clicchi su apri restituisce una stringa contenente il percorso del fle scelto, se clicchi su annulla restituisce una stringa vuota.

    tratto dalla guida in linea
    Esempio
    Questo esempio visualizza la finestra di dialogo Apri con il filtro file impostato a file di testo. Se l'utente sceglie un nome di file, il codice visualizzerà quel nome file in una finestra di messaggio.

    fileToOpen = Application _
    .GetOpenFilename("Text Files (*.txt), *.txt")
    If fileToOpen <> False Then
    MsgBox "Open " & fileToOpen
    End If
    Domanda
    Quote Originariamente inviato da salvodel71
    1) aprire il file excel "c:\lavoro\conteggio_paperino.xls"
    2) rinominarlo in "conteggio_pluto.xls"
    una volta aperto il file devi fargli delle modifiche, prima di salvarlo con il nome??

    Ciao

  7. #7
    salvodel71 non è in linea Novello
    Post
    13
    Ho provato non funziona.
    La libreria in questione è la Microsoft excel 11.
    Scusami ma nn posso usare questo codice adattandolo (codice della macro registrata con excel )

    codice:
    With ActiveSheet.QueryTables.Add(Connection:=Array( _
    "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Password=" """;User ID=Admin;Data Source=C:\Documents and Settings\salvatore\Documenti\salvio\lavo" _
    , _
    "ro\archivio\CIVILI.MDB;Mode=Share Deny Write;Extended Properties="""";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet " _
    , _
    "OLEDBatabase Password=ud1personale;Jet OLEDB:Engine Type=5;Jet OLEDBatabase Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops" _
    , _
    "=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encr" _
    , _
    "ypt Database=False;Jet OLEDBon't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=Fal" _
    , "se"), Destination:=Range("A2"))
    .CommandType = xlCmdTable
    .CommandText = Array("qryconteggio_iengo")
    .Name = "CIVILI"
    .FieldNames = True
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .BackgroundQuery = True
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = False
    .SaveData = True
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .PreserveColumnInfo = True
    .SourceDataFile = _
    "C:\Documents and Settings\salvatore\Documenti\salvio\lavoro\archivi o\CIVILI.MDB"
    .Refresh BackgroundQuery:=False
    End With
    ActiveWorkbook.Save
    oppure usare la funzione :

    workbooks (xxxxxx) save as etc e poi fare il collegamento OLEDB ?

    Scusami ma è molto importante
    Ultima modifica di TheTruster; 22-06-2006 14:14  Motivo: Aggiunta Tags [CODE]

  8. #8
    L'avatar di dragone bianco
    dragone bianco non è in linea Moderatore Globale
    Luogo
    Aosta
    Post
    7,734
    fai attenzione che ora lavori da access il file excels non &#232; aperto.

    Es:
    With ActiveSheet.QueryTables.Add(Connection:=Array( _
    "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Passwo rd=" """;User ID=Admin;Data Source=C:\Documents and Settings\salvatore\Documenti\salvio\lavo" _
    ActiveSheet indica il foglio attivo di excel, (usando excels il foglio su cui lavori &#232; quello attivo)

    invece da access devi aprire il file e posizionarti sul foglio su cui devi lavorare.

    codice:
    Workbooks.Open Filename:="C:\Prova.xls"
    WorkSheets("Foglio2").Select

    apre il file prova e ti seleziona il foglio 2 (&#232; in background, vedi che excels &#232; aperto dal task managera)

    per chiudere excels
    codice:
    Excel.Workbooks.Close
    Ciao

  9. #9
    salvodel71 non è in linea Novello
    Post
    13
    Scusami mi dovresti dire come integrare il codice VBA per aprire in background, cambiare nome al file excel e poi connetterlo alla query di access.
    Posso in parte utilizzare quello della macro di excel che ho scritto prima ?
    Grazie

  10. #10
    L'avatar di dragone bianco
    dragone bianco non è in linea Moderatore Globale
    Luogo
    Aosta
    Post
    7,734
    Puoi usare il codice che mi hai postato ma prima scrivi le 2 righe di codice per aprire il File.

    Ciao

+ Rispondi al Thread
Pagina 1 di 2 12 ultimoultimo

Discussioni simili

  1. Articolo: [VBA] Lettura e scrittura File Di Testo
    Da dragone bianco nel forum Microsoft Office, Access, VBA
    Risposte: 0
    Ultimo Post: 27-09-2006, 17:00
  2. [access]copiare query in un file di excel
    Da baby10 nel forum Access
    Risposte: 1
    Ultimo Post: 29-05-2006, 20:36
  3. Articolo: Interagire con i file - 1° parte
    Da freezer nel forum Visual Basic 6
    Risposte: 0
    Ultimo Post: 18-11-2005, 09:51
  4. Articolo: Gestione dei file: tipi di file
    Da freezer nel forum Visual Basic 6
    Risposte: 0
    Ultimo Post: 18-11-2005, 09:50
  5. Risposte: 3
    Ultimo Post: 21-09-2005, 19:53

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi