Vai al contenuto

Conversione di una tabella MDB Access in CSV

Aggiornato il 11.11.2022
Questa funzione consente di convertire una singola tabella di un database Microsoft Access (file MDB) in formato CSV.

La funzione richiede in ingresso:
- Nome del file MDB da cui prelevare i dati
- Nome del file CSV da creare
- Nome della tabella da esportare
Option Explicit
 
ConvertMDB2CSV "c:\dati\database.mdb","c:\dati\esportazione.csv","NOMETABELLA"
 
Function ConvertMDB2CSV(MDBfilename, CSVfilename, tableName)
   'On Error Resume Next
   Dim objConn
   Dim objRset
   Dim rigaDati
   Dim campoDB
   Dim okCompleted
   Dim numCampo
   Dim separatoreRecord
   Dim separatoreCampi
 
   Const adOpenStatic = 3
   Const adLockOptimistic = 3
   separatoreCampi = ";"
   separatoreRecord = vbCrLf
   okCompleted=False
 
   Rdy.SaveStringToFile CSVfilename,""
   Set objConn = CreateObject("ADODB.Connection")
   objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & MDBfilename
 
   If Not(Err) Then
       Set objRset = CreateObject("ADODB.Recordset")
       objRset.Open "SELECT * FROM [" & tableName & "]" , objConn, adOpenStatic, adLockOptimistic
 
       ' Esportazione nome campi
       Set rigaDati=Rdy.BigString
       numCampo=0
       For Each campoDB In objRset.Fields
           numCampo=numCampo+1
           If numCampo>1 Then
               rigaDati.add separatoreCampi
           End If
           rigaDati.add """" & replace("" & campoDB.name,"""","""""") & """"
       Next
 
       'Accoda il record al file CSV
      Rdy.SaveStringToFile CSVfilename,rigaDati.value & separatoreRecord,True
 
       ' Esportazione dati
       While Not(objRset.EOF)
           Set rigaDati=Rdy.BigString
        numCampo=0
           For Each campoDB In objRset.Fields
               numCampo=numCampo+1
               If numCampo>1 Then
                   rigaDati.add separatoreCampi
               End If
               rigaDati.add """" & replace("" & campoDB.value,"""","""""") & """"
           Next
 
           'Accoda il record al file CSV
         Rdy.SaveStringToFile CSVfilename,rigaDati.value & separatoreRecord,True
           Set rigaDati=Nothing
           objRset.MoveNext
       Wend
       objRset.Close
       Set objRset=Nothing
     okCompleted=True
   End If
 
  objConn.Close
  Set objConn = Nothing
  ConvertMDB2CSV=okCompleted
End Function