Archivi categoria: Office

Programmazione in ambito Microsoft Office (Word, Excel, Access…) con VBA ecc.

[VB6] Gestione specifiche import-export di database Access

Per il mio lavoro, spesso ho la necessità di gestire l’importazione e l’esportazione di file di dati (tipicamente file di testo con record a lunghezza fissa) da Microsoft Access. Per queste attività ho sempre utilizzato la gestione delle specifiche di importazione/esportazione nativa di Access, ma è una funzionalità che non mi ha mai soddisfatto completamente.

Per esempio ci sono stati dei casi in cui non sono riuscito a modificare una specifica già esistente e ho dovuto ricrearla da zero, senza contare il problema di inserire un campo all’interno di una specifica già esistente: in questo caso è necessario ricalcolare manualmente il carattere di partenza di ciascun campo successivo. Anche lo spostamento di un campo in una diversa posizione è un’attività che può diventare un’atroce perdita di tempo.

Ecco quindi che, diverso tempo fa, ho pensato di creare un progetto in Visual Basic 6.0 (download di 153 kb). Anzi, i progetti sono più di uno:

  • un progetto che comprende l’interfaccia principale (ImportExport.vbp)
  • un progetto che comprende l’interfaccia per la gestione delle specifiche (Specifiche.vbp)
  • un progetto per gestire le attività di importazione (Import.vbp)
  • un progetto per gestire le attività di esportazione (Export.vbp). 

Con il link sopra riportato potete scaricare tutti questi progetti, con anche gli eseguibili già compilati, un database di prova e alcuni file di testo, con qualche specifica di importazione/esportazione già caricata.

Le specifiche, infatti, vengono caricate in una tabella di Access. E’ possibile estrarre anche le specifiche da un database già esistente e salvarle in questa tabella speciale, così da centralizzare tutte le attività di importazione/esportazione.

Non è tutto: considerato che potrebbe essere necessario eseguire un’importazione/esportazione anche direttamente da un programma VBA scritto all’interno di Access (o di un altro prodotto Office) o perfino in un proprio programma scritto in qualsiasi altro linguaggio (perfino VB.NET), ho pensato di gestire i parametri della riga di comando utilizzati per avviare i programmi Import.exe e Export.exe.

In questo modo è possibile avviare, per esempio, Import.exe passandogli già i parametri necessari per eseguire l’importazione senza nemmeno aprire la sua interfaccia grafica! Il trucco sta tutto nell’evento Load del form Import.frm:

Private Sub Form_Load() 
    ReDim argv(5) As String 
    Dim i As Integer 
    
    Dim sNomeFile 
    Dim sNomeSpecifica 
    Dim sNomeDB 
    Dim sNomeTabella 
      

    ' legge la riga di comando: 
    argv = GetCommandLine(argv) 
    
    If argv(1) <> "" Then 
        ' i parametri vengono passati secondo quest'ordine: 
        sNomeFile = argv(1) 
        sNomeSpecifica = argv(2) 
        sNomeDB = argv(3) 
        sNomeTabella = argv(4) 
        sFlagDelete = argv(5) 
        
        If argv(5) = 1 Then 
            Call DeleteTable(sNomeDB, sNomeTabella) 
        End If 
        
        If argv(1) <> "" Then 
            Call ImportaFile(sNomeFile, sNomeSpecifica, sNomeDB, sNomeTabella) 
        End If 
        
        ' annulla il caricamento del form: 
        Unload Me 
        Exit Sub 
    End If 
    
    ReDim arraySpecifiche(1) 
    arraySpecifiche = ElencaSpecifiche() 
    
    Me.txtNomeSpecifica.Clear 
    For i = 1 To arraySpecifiche(0) 
        Me.txtNomeSpecifica.AddItem arraySpecifiche(i) 
    Next i 
        
End Sub

Per ultima, una piccola precisazione: questo programma l’ho scritto qualche anno fa, ma non l’avevo mai pubblicato prima, quindi è una soluzione assolutamente inedita.

Può sembrare anacronistico un progetto scritto in VB6 come nuova soluzione, visto che ormai .NET è diventata la piattaforma di sviluppo prevalente, ma c’è una considerazione da tenere presente: tra i file forniti con il file compresso c’è anche un report dell’analisi eseguita con Code Advisor per verificare la compatibilità dei progetti con VB.NET. L’esito è assolutamente confortante, dato che viene segnalato solo un piccolo problema relativo a Option Explicit, facilmente eliminabile.

Ovviamente questo progetto può essere utilizzato come prototipo per realizzare una soluzione analoga e più orientata agli oggetti, utilizzando codice VB.NET puro.

In ogni caso spero che possa essere utile a chi, come me, ha avuto problemi nell’utilizzo delle funzionalità native di Access per la gestione delle specifiche di importazione/esportazione.

[VSTO] creazione di un task panel tramite VB.NET e C#

Sul blog di Emanuele Mattei è stato pubblicato un articolo sulla gestione di un task panel in Office: http://blog.shareoffice.it/emanuele/articles/9240.aspx.

Anche in questo caso, la tecnologia trattata è VSTO, cioè Visual Studio Tools for Office che ora, nella nuova versione di Visual Studio 2008 (in particolare nella versione Professional), è incluso del prodotto stesso e non è più necessario installarlo come add-in separato.

[VSTO] Creare uno Smart Tag in Word

Sul sito www.iprogrammatori.it è stato pubblicato un articolo che spiega la procedura per creare uno smart tag in Word, utilizzando Visual Tools for Office (VSTO).

Articolo completo QUI. Nella pagina è possibile anche trovare un link per scaricare l’esempio.

[Excel 2007] Patch per bug nei calcoli

Il 26 Settembre 2007, Punto Informatico aveva segnalato un bug nei calcoli di Excel 2007: http://punto-informatico.it/p.aspx?id=2073462

In particolare risultano errati questi calcoli che dovrebbero fornire in tutti i casi 65535, mentre invece forniscono 100000:
=5,1*12850
=10,2*6425
=20,4*3212,5
=40,8*1606,25
=850*77,1
=77,1*850
=154,2*425
=212,5*308,4
=308,4*212,5
=425*154,2

Microsoft ha fornito la spiegazione ufficiale dell’errore, attribuendolo ad un errore di visualizzazione e non di calcolo. Infatti è sufficiente aggiungere alla formula di cui sopra -1 oppure +2 e otterremo il risultato corretto:
http://blogs.msdn.com/excel/archive/2007/09/25/calculation-issue-update.aspx

Errore di calcolo o errore di visualizzazione, la cosa comunque è estremamente inquietante, tanto che Microsoft ha anticipato una patch per risolvere il problema, come indicato nel nuovo articolo di Punto Informatico:
http://punto-informatico.it/p.aspx?id=2085908

Ecco quindi la patch, scaricabile da: http://blogs.msdn.com/excel/archive/2007/10/09/calculation-issue-update-fix-available.aspx e che dovrebbe essere inclusa nel Service Pack di Office 2007 e tra gli aggiornamenti di Windows Update.

[Access] Diagrammi di Gantt con Access per la pianificazione di progetti

Sul sito Microsoft (portale per le PMI) è disponibile un articolo che spiega come è possibile creare diagrammi di Gantt con Access per la pianificazione di progetti. Dalla stessa pagina è possibile scaricare un file PDF con l’intero articolo e un file .zip con il database Access di esempio.

Iscriviti

Ricevi al tuo indirizzo email tutti i nuovi post del sito.

Unisciti agli altri 844 follower