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.