Se sei un programmatore di database, a volte potresti ottenere file Excel che devi “ripulire” per inserire in Access. Due problemi comuni sono causati dai numeri di previdenza sociale e dai codici postali. È meglio archiviarli come testo nel database e non come numeri come spesso lo sono in Excel.

(In Excel i numeri possono essere visualizzati correttamente a causa della formattazione delle celle e non perché sono memorizzati come testo.)

Anche quando l’intervallo è formattato come testo in Excel, completo di zeri iniziali, il più delle volte Access converte questi valori in numeri.

Tuttavia, se il numero è preceduto da un apostrofo, come per un’etichetta, Access lo importerà correttamente come testo senza l’apostrofo iniziale.

Per preparare i numeri di previdenza sociale per l’importazione in Access, può tornare utile una piccola macro veloce, che si assicura che siano presenti gli zeri iniziali e che l’apostrofo sia a posto per la cella. Per utilizzare la macro, è sufficiente selezionare l’intervallo di numeri di previdenza sociale e quindi eseguire la macro:

Sub SSN2Text()

Dim c As Range     Application.ScreenUpdating = False     'Format selected cells as text     Selection.NumberFormat = "@"

For Each c In Selection         If Left(c, 1) = "'" Then             'strip the apostrophe, if any             c = Mid(c, 2, 99)

Else             c = "'" & Right("000000000" & c, 9)

End If     Next c     Application.ScreenUpdating = True End Sub

La soluzione per i codici postali è di natura simile. La macro per elaborare i codici postali passa attraverso ogni cella della selezione, la formatta come testo, aggiunge un apostrofo iniziale e inserisce gli zeri iniziali. La differenza è che la macro deve tenere conto anche dei casi in cui sono presenti codici postali a cinque o nove cifre.

Sub ZIP2Text()

Dim c As Range     Application.ScreenUpdating = False     'Format selected cells as text     Selection.NumberFormat = "@"

For Each c In Selection         If Left(c, 1) = "'" Then             'strip the apostrophe, if any             c = Mid(c, 2, 99)

End If         If Len(c) <= 5 Then             c = "'" & Right("00000" & c, 5)

Else             c = "'" & Right("00000" & c, 10)

End If     Next c     Application.ScreenUpdating = True End Sub

_Nota: _

Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.

ExcelTips è la tua fonte di formazione economica su Microsoft Excel.

Questo suggerimento (2400) si applica a Microsoft Excel 97, 2000, 2002 e 2003. Puoi trovare una versione di questo suggerimento per l’interfaccia a nastro di Excel (Excel 2007 e versioni successive) qui: