Condividi:        

[EXCEL] Estrarre dati da un file .mdb esistente

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Re: [EXCEL] Estrarre dati da un file .mdb esistente

Postdi Anthony47 » 01/10/10 13:10

Intervengo su questa discussione su insistenza di Flash: avendo lavorato con lui per risolvere alcuni problemi residui su cui si stava avvitando preferisce che sia io a pubblicare il file prodotto, che sembra risponda alle domande di Zoro76 ed e' scaricabile qui: http://rapidshare.com/files/422024994/C ... yFlash.zip

Con l' avvertenza che io di tutto questo lavoro ignoro quasi tutto, quindi ...se funziona cosi' bene, altrimenti tocca sempre a Flash!

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Sponsor
 

Re: [EXCEL] Estrarre dati da un file .mdb esistente

Postdi Zoro76 » 04/10/10 16:07

Grazie mille Anthony per il file. Oggi l'ho provato ed è come pensavo venisse e mi piace molto. Avrei però delle correzioni da chiedere se non è disturbo: prima cosa che nel foglio MANUFATTI mi piacerebbe avere l'ordinamento delle colonne fatto in modo diverso: 1 ordine colonna CATASTA e secondo ordine colonna CATASTAORD; seconda cosa se si possono cancellare i totali alla fine (non mi servono :) ); terza cosa nelle colonne LARGHEZZA e LUNGHEZZA sarebbero da dividere gli importi per 10.
Ho notato che utilizzando un file .mdb diverso (con meno manufatti) dopo la riga dei totali continua con la formattazione dei bordi; se possibile mi farebbe piacere avere una formattazione fatta come il foglio "Riepilogo" fatto da Flash (praticamente diviso con righe vuote tra le cataste).

Purtroppo ho notato che adesso il file salta alcuni parametri negli altri fogli:
- nel foglio SFERE non compaiono i dati della colonna "mt. Lineari gabbia" e dopo i totali disegna ancora bordi;
- nel foglio ARMATURE non compaiono i dati della colonna "P[Kg]" e mancano i bordi verticali;
- il foglio SEZIONI, nel file originale, scompariva: magari è un piccolo bug dovuto ai punti precedenti.

Allego un archivio con 2 file così che potete vedere gli errori che ho citato e la formattazione delle cataste.

Intanto vi ringrazio infinitamente per tutto il tempo che mi state dedicando. So che non sono cose semplici e che sono anche un po' pignolo ma per il mio lavoro queste cose purtroppo devono essere fatte in questo modo (sono brutte da perdere le vecchie abitudini :) )

Ciao Zoro

http://rapidshare.com/files/423078224/Esempio1.zip
Zoro76
Utente Senior
 
Post: 107
Iscritto il: 10/03/10 10:55

Re: [EXCEL] Estrarre dati da un file .mdb esistente

Postdi Zoro76 » 08/10/10 14:09

Ciao ragazzi...mi sa che quello che vi ho chiesto è troppo difficile. Vorrei provare a spiegarmi un po' meglio magari riesco a rendere le cose più semplici.

Allora: io ho questo file di ACCESS che cambia di volta in volta. (anche il percorso cambia parzialmente)
- Da questo file io ho bisogno di 5 colonne che sono all'interno della tabella MANUFATTI e sono: SIGLA - CATASTA - CATASTAORD - LARGHEZZA - LUNGHEZZA.
- Questi dati devono essere ordinati in base a CATASTA e CATASTAORD

Quindi servirebbe una macro che mi carichi il file e che mi copi queste 5 colonne sul 2° foglio di excel; quindi faccio le modiche opportune ad alcuni dati; poi con un'altra macro sul primo foglio impagino il tutto. Esiste la possibilità che i dati della colonna CATASTAORD siano uguali.

spero di aver spiegato in maniera più comprensibile il mio problema.

Grazie intanto
Ciao
Zoro76
Utente Senior
 
Post: 107
Iscritto il: 10/03/10 10:55

Re: [EXCEL] Estrarre dati da un file .mdb esistente

Postdi Flash30005 » 10/10/10 01:01

Il tuo problema mi sembra chiaro ma operare su un programma fatto da terzi non è cosa semplice
abbiamo (insieme ad Anthony) già analizzato il problema
Anthony ha egregiamente risolto una parte a me ostica
ora sto cercando nei ritagli di tempo di fare ciò che desideri.
Penso anche che questo tuo problema non sia nato ieri e che risolvevi in qualche maniera quindi cerca di avere un po' di pazienza...

Appena potrò ti farò sapere
Ciao


P.s. se invii la tua email in Mp ti scriverò direttamente appena avrò qualche risultato soddisfacente
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [EXCEL] Estrarre dati da un file .mdb esistente

Postdi Zoro76 » 09/11/10 11:07

Salve a tutti.

Girando in questo forum e in altri sono arrivato a questo punto. Adesso ho una macro che mi fa scegliere quale file mdb voglio aprire e una che mi importa le colonne che mi servono dalla tabella MANUFATTI di questo file. Purtroppo non riesco a farle funzionare assieme.
Vi chiedo un consiglio su come poter risolvere il problema:

Macro 1:
Codice: Seleziona tutto
Sub ScegliFile()

With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = False
        .Filters.Clear
        .Filters.Add "All files", "*.*"
        .Filters.Add "ACCESS", "*.mdb", 1
        .Show

     If .SelectedItems.Count = 0 Then
     MsgBox ("Nessuna voce selezionata, procedura annullata")
     GoTo Esci
     End If
     FullNome = .SelectedItems(1)     'Directory e Nome del file selezionato
    End With
Esci:


Macro 2:
Codice: Seleziona tutto
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array( _
        "OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;Password="""";User ID=Admin;Data Source=C:\Programmi\Tecnosoft\Precad2008\Opere\8545_Liv_2_H_48\" _
        , _
        "8545_Liv_2_H_48.Mdb;Mode=Share Deny Write;Extended Properties="""";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLE" _
        , _
        "DB:Database Password="""";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:Encrypt Database=" _
        , _
        "False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;Jet OLEDB:" _
        , "Support Complex Data=False"), Destination:=Range("$A$1")).QueryTable
        .CommandType = xlCmdSql
        .CommandText = "SELECT SIGLA, CATASTA, CATASTAORD, LARGHEZZA, LUNGHEZZA FROM MANUFATTI"
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .SourceDataFile = _
        "C:\Programmi\Tecnosoft\Precad2008\Opere\8545_Liv_2_H_48\8545_Liv_2_H_48.Mdb"
        .ListObject.DisplayName = "Tabella__8545_Liv_2_H_48"
        .Refresh BackgroundQuery:=False
    End With


Grazie a tutti
Zoro76
Utente Senior
 
Post: 107
Iscritto il: 10/03/10 10:55

Re: [EXCEL] Estrarre dati da un file .mdb esistente

Postdi Anthony47 » 09/11/10 14:19

Ok, la prima macro ti mette nella variabile FullNome il nome del file che vuoi aprire; dove, nella seconda macro, vuoi usare questo nome file?

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCEL] Estrarre dati da un file .mdb esistente

Postdi Zoro76 » 09/11/10 14:41

in teoria sarebbe da mettere al posto di questa riga:

Codice: Seleziona tutto
"C:\Programmi\Tecnosoft\Precad2008\Opere\8545_Liv_2_H_48\8545_Liv_2_H_48.Mdb"


alla fine della seconda macro:

Questa riga se non ho capito male da il nome al foglio?

Codice: Seleziona tutto
.ListObject.DisplayName = "Tabella__8545_Liv_2_H_48"



Io ho provato a fare così ma mi da errore alla fine della macro:
Codice: Seleziona tutto
Sub ScegliFile()

With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = False
        .Filters.Clear
        .Filters.Add "All files", "*.*"
        .Filters.Add "ACCESS", "*.mdb", 1
        .Show

     If .SelectedItems.Count = 0 Then
     MsgBox ("Nessuna voce selezionata, procedura annullata")
     GoTo Esci
     End If
     FullNome = .SelectedItems(1)     'Directory e Nome del file selezionato
    End With
Esci:
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array( _
        "OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;Password="""";User ID=Admin;Data Source=C:\Programmi\Tecnosoft\Precad2008\Opere\" _
        , _
        "Mode=Share Deny Write;Extended Properties="""";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLE" _
        , _
        "DB:Database Password="""";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:Encrypt Database=" _
        , _
        "False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;Jet OLEDB:" _
        , "Support Complex Data=False"), Destination:=Range("$A$1")).QueryTable
        .CommandType = xlCmdSql
        .CommandText = "SELECT SIGLA, CATASTA, CATASTAORD, LARGHEZZA, LUNGHEZZA FROM MANUFATTI"
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .SourceDataFile = _
        "FullNome"
        .ListObject.DisplayName = "Tabella__8545_Liv_2_H_48"
        .Refresh BackgroundQuery:=False
    End With
End Sub


L'errore è questo:
Immagine
Zoro76
Utente Senior
 
Post: 107
Iscritto il: 10/03/10 10:55

Re: [EXCEL] Estrarre dati da un file .mdb esistente

Postdi Anthony47 » 10/11/10 14:19

Pero' il popup che hai inserito non mi sembra un messaggio di errore, ma una richiesta di informazioni, forse la richiesta di password.

Vediamo se qualche conoscitore di db puo' dire qualcosa di preciso.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCEL] Estrarre dati da un file .mdb esistente

Postdi Zoro76 » 10/11/10 15:45

Sembra strano perchè il file mdb lo posso aprire traquillamente da access senza nessuna password. E se registro una macro per estrarrela tabella lo fa tranquillamente.
Zoro76
Utente Senior
 
Post: 107
Iscritto il: 10/03/10 10:55

Re: [EXCEL] Estrarre dati da un file .mdb esistente

Postdi Zoro76 » 16/11/10 14:12

Sono riuscito a sistemare.
Grazie a tutti per l'aiuto
Zoro76
Utente Senior
 
Post: 107
Iscritto il: 10/03/10 10:55

Re: [EXCEL] Estrarre dati da un file .mdb esistente

Postdi Flash30005 » 16/11/10 14:37

Zoro76 ha scritto:Sono riuscito a sistemare.


Siamo contenti per te!!!
Sarebbe opportuno per coloro che dovessero imbattersi nel tuo stesso problema che tu dica esattamente come sei riuscito.
La "filosofia" del Forum si basa proprio sullo scambio di informazioni.

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [EXCEL] Estrarre dati da un file .mdb esistente

Postdi Zoro76 » 16/11/10 15:46

Ecco qui la macro per scegliere un file mdb e importare 5 colonne della tabella MANUFATTI del file stesso

Codice: Seleziona tutto
Public Sub mRecuperaDati()

On Error GoTo RigaErrore

    Dim cn As Object
    Dim rs As Object
    Dim sh1 As Worksheet
    Dim sh2 As Worksheet
    Dim vApri As Variant
    Dim lRiga As Long
   
    With Application
        .ScreenUpdating = False
        .Calculation = xlManual
        .StatusBar = _
            "Sto eseguendo: Sub mRecuperaDati()"
    End With

    Set cn = CreateObject("ADODB.Connection")
    Set rs = CreateObject("ADODB.Recordset")
   
    With ThisWorkbook
        Set sh1 = .Worksheets("Foglio1")
        Set sh2 = .Worksheets("Cataste")
    End With
   
    vApri = _
        Application.GetOpenFilename( _
            FileFilter:= _
            "Access(*.mdb), *.mdb")
           
    If vApri <> False Then

        With sh1
       
            .Range("A1").Value = "SIGLA"
            .Range("B1").Value = "LARGHEZZA"
            .Range("C1").Value = "LUNGHEZZA"
            .Range("D1").Value = "CATASTA"
            .Range("E1").Value = "CATASTAORD"
            lRiga = .Range("A" & .Rows.Count).End(xlUp).Row + 1

            cn.CursorLocation = 1
            cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; " _
                & "Data Source=" & vApri
               
            rs.CursorLocation = 1
            If sh2.Range("B2") = "" Then
                rs.Open "SELECT COMMESSA, OGGETTO, RIFERIMENTO FROM DATIOPERA", cn, 1, 3, 1
                sh2.Range("B2").Value = rs(0)
                sh2.Range("B3").Value = rs(1)
                sh2.Range("B4").Value = rs(2)
                rs.Close
            End If
            rs.Open "SELECT SIGLA, LARGHEZZA, LUNGHEZZA, CATASTA, CATASTAORD FROM MANUFATTI", cn, 1, 3, 1

            .Range("A" & lRiga).CopyFromRecordset rs

        End With
   
    End If
   
RigaChiusura:

    If rs.State = 1 Then
        rs.Close
    End If
    If cn.State = 1 Then
        cn.Close
    End If

    Set sh2 = Nothing
    Set sh1 = Nothing
    Set rs = Nothing
    Set cn = Nothing
   
    With Application
        .ScreenUpdating = True
        .Calculation = xlAutomatic
        .StatusBar = ""
    End With
    Exit Sub

RigaErrore:
    MsgBox Err.Number & vbNewLine & Err.Description
    Resume RigaChiusura

End Sub


inoltre importa anche da un'altra tabella dello stesso file altri 3 campi.

Spero possa essere d'aiuto

Ciao
Zoro76
Utente Senior
 
Post: 107
Iscritto il: 10/03/10 10:55

Precedente

Torna a Applicazioni Office Windows


Topic correlati a "[EXCEL] Estrarre dati da un file .mdb esistente":


Chi c’è in linea

Visitano il forum: Nessuno e 36 ospiti