Archive

Archive for the ‘Microsoft Office’ Category

Excel: Impossibile impostare la proprietà LineStyle per la classe Border

January 13th, 2009 Nicola No comments

Si parla di Excel 2000 e 2003, non ho ancora provato sul 2007.
Ho avuto bisogno di aggiungere, via macro vba dei bordi ad alcune celle. Mi sono fatto dire da Excel come fare, registrando una macro. il risultato è stato il seguente:

Range("E30:M30").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With

Se lanciate la macro, non va, e segnala il seguente errore:

errore di run-time 1004: Impossibile impostare la proprietà LineStyle per la classe Border

La soluzione all’inghippo l’ho trovata da mamma Microsoft:

http://support.microsoft.com/kb/277577/it

Il motivo, tradotto in automatico, è il seguente:

È visualizzato il messaggio di errore poiché il codice di record macro (riguardanti la proprietà XlInsideHorizontal ) è non valido per un intervallo bordato con solo una riga.

La proprietà XlInsideHorizontal è valida solo se si “bordano” almeno due righe, non una sola.

Quindi danno la soluzione: commentare il blocco riguardante la proprietà XlInsideHorizontal.

In questo modo la macro funzione correttamente.

Leggere i dati da un foglio Excel in Java

December 9th, 2008 Nicola No comments

Java e Excel… mah…

Prendete il foglio Excel, compilate una tabella ed assegnatele un nome:

excel21

A questo punto potete chiudere Excel e disinstallarlo. Non serve infatti che Excel sia installato sulla macchina in cui si trova il file che abbiamo appena creato.

Occorre però essere in ambiente Windows, perchè dobbiamo creare un ODBC verso quel file, utilizzando il driver per Excel della Microsoft. Se l’ODBC si chiama TESTODBC, il seguente codice:

Connection con;
Statement stmt;
ResultSet rs;try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection("jdbc:odbc:TESTODBC", "", "");
stmt = con.createStatement();

rs = stmt.executeQuery("SELECT * FROM TABELLAODBC");

while (rs.next()) {
System.out.println(rs.getString(1));
System.out.println(rs.getString(2));
System.out.println(rs.getString(3));
}

}
catch(SQLException e) {
System.out.println("Ops... " + e);
}
catch (ClassNotFoundException cl) {
System.out.println("Ops..." + cl);
}

Restituisce il risultato:

Mario
Bianchi
2
Mario
Rossi
3

Categories: Database, Java, Microsoft Office Tags: , ,

Promemoria: Excel 2007, creare una colonna con i valori distinti di un’altra colonna

December 1st, 2008 Nicola 1 comment

In Excel 2007 c’è una funzione, da menù, che elimina le righe doppie da una colonna selezionata, sotto “Data” –> “Remove Duplicates”

Questo pezzettino di codice fa si che, all’apertura del file, vengano presi i dati presenti nella colonna A del foglio 1, copiati nella colonna A del foglio 2 ed in quest’ultima elimininate tutte le righe doppie.

Sheets("Sheet1").Select
Range("A1:A5").Select
Selection.Copy

Sheets("Sheet2").Select
Range("A1:A1").Select
ActiveSheet.Paste

Application.CutCopyMode = False
ActiveSheet.Range("$A$1:$A$5").RemoveDuplicates Columns:=1, Header:=xlNo

Range("A1").Select

Visualizzare le sezioni di un documento Word

October 27th, 2008 Nicola No comments

Ho un documento Word fatto così:

Queste quattro righe di codice

MsgBox ActiveDocument.Sections.Count
MsgBox ActiveDocument.Sections.Item(1).Range
MsgBox ActiveDocument.Sections.Item(2).Range
MsgBox ActiveDocument.Sections.Item(3).Range

hanno il seguente effetto:

Esportare un word in pdf da Lotus Notes, utilizzando Word 2007

October 3rd, 2008 Nicola No comments

Word 2007 ha la possibilita, previa installazione di un plugin, di esportare il documento in formato pdf. Ho usato questa funzione per esportare in pdf un documento word aperto da uno script notes.

L’apertura del file è sempre la stessa:

Set wordAppObject = CreateObject("Word.Application")
Set wordDocObject = wordAppObject.Documents.Open("c:\prova.doc")

Se si prova a registrare una macro in word, esportando in pdf si ottiene la seguante istruzione:

wordDocObject.ExportAsFixedFormat OutputFileName:= filepdf,
                                  ExportFormat:=wdExportFormatPDF,
                                  OpenAfterExport:=False, 
                                  OptimizeFor:=wdExportOptimizeForOnScreen, 
                                  Range:=wdExportAllDocument,
                                  From:=1, To:=1,
                                  Item:=wdExportDocumentContent,
                                  IncludeDocProps:=True,
                                  KeepIRM:=True,
                                  CreateBookmarks:=wdExportCreateNoBookmarks,
                                  DocStructureTags:=True,
                                  BitmapMissingFonts:=True,
                                  UseISO19005_1:=False

La documentazione della funzione ExportAsFixedFormat si trova qua:

http://msdn.microsoft.com/en-us/library/bb256835.aspx

dove vengono descritti tutti i parametri. Questa istruzione, trasformata in una istruzioni lotus script diventa:

Call wordDocObject.ExportAsFixedFormat(filepdf,
                                            17,
                                         False,
                                             0,
                                             0,
                                             1,
                                             1,
                                             0,
                                          True,
                                          True,
                                              0,
                                           True,
                                           True,
                                           False  )

Dove ho sostituito alle costanti di word i valori presi dalle tabelle qui sotto:

WdExportFormat

wdExportOptimizeForOnScreen

wdExportAllDocument

a href=”http://www.nicolacolonna.it/wp-content/uploads/2008/10/pdf3.gif”>

WdExportItem

WdExportCreateBookmarks