PDA

View Full Version : [vba word] formattazione testo e inserimento immagine


john_revelator
29-11-2007, 17:35
Ciao a tutti. Dovrei generare un documento di word a partire dai dati contenuti in un db di access.
Riporto qui solo una parte del codice per semplificare il tutto.
Vi spiego velocemente quali sono le mie difficoltā:

1) Non riesco a capire perchč se voglio formattare in grassetto il contenuto della prima riga nella colonna di sinistra della mia tabella mi vengono formattate in grassetto anche tutte le voci del recordset.
2) Come faccio ad inserire un'immagine nella prima riga della tabella? Ho letto del metodo addpicture ma non riesco a farlo funzionare.
3) Come faccio ad allineare a destra il contenuto di una cella? Ho provato con
objTable.Cell(i, 1).range.Paragraphs.Alignment = wdAlignParagraphRight come potete vedere poi commentato all'interno del codice ma non funziona.

Spero possiate darmi qualche dritta. Grazie a tutti. :)


Private Sub cmdGenCV_Click()

Set objWord = CreateObject("Word.Application")
objWord.Visible = True
Set objDoc = objWord.Documents.Add()

Set objRange = objDoc.range()
objDoc.Tables.Add objRange, 1, 2
Set objTable = objDoc.Tables(1)

strQueryName1 = "qrynominativo"

Set objRST1 = Application.CurrentDb.OpenRecordset(strQueryName1)

objTable.Columns(1).PreferredWidth = 150
objTable.Columns(2).PreferredWidth = 350


objTable.Cell(1, 1).range.Text = "Curriculum Vitae Europass"
objTable.Cell(1, 1).range.Font.Bold = True

For i = 0 To objRST1.Fields.Count - 1
objTable.Rows.Add
objTable.Cell(i + 2, 1).range.Text = objRST1.Fields(i).Name
'objTable.Cell(i + 1, 1).range.Font.Bold = True
'objTable.Cell(i, 1).range.Paragraphs.Alignment = wdAlignParagraphRight
objTable.Cell(i + 2, 2).range.Text = objRST1.Fields(i).Value
Next

'objTable.Cell(41, 1).selection.Shapes.AddPicture ("C:\Documents and Settings\Utente\Documenti\Immagini\europass.jpg")

End Sub


Per allineare a destra il contenuto della prima riga/prima colonna ho provato anche cosė come trovato in diversi siti

objTable.Cell(1, 1).range.ParagraphFormat.Alignment = wdAlignParagraphRight

ma il testo mi rimane allineato a sinistra.

john_revelator
29-11-2007, 18:56
Allora, con questo codice sono riuscito ad inserire la foto

objTable.Cell(1, 1).range.InlineShapes.AddPicture ("C:\Documents and Settings\Utente\Documenti\Immagini\europass.jpg")

ma se la volessi allineare tutta a destra nella cella oppure se la volessi spostare verso destra di un certo numero di centimetri/millimetri?

john_revelator
29-11-2007, 20:23
Nell'attesa di qualche risposta avrei un'altra domanda da porvi:
come faccio ad inserire in ogni pagina del mio documento di word un pič di pagina del genere, con la dicitura curriculum vitae di (nome e cognome ricavati dalla query) preceduta dal numero di pagina? Grazie.

Pagina 1 / 3 - Curriculum vitae di
Mario Rossi

john_revelator
01-12-2007, 18:59
Dim rngFooter As Range
Set rngFooter = objWord.ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary).Range
With rngFooter

.Text = "Pagina "
.Collapse wdCollapseEnd
.Move unit:=wdCharacter, Count:=1

.Fields.Add Range:=rngFooter, Type:=wdFieldPage
.Collapse wdCollapseEnd
.Move unit:=wdCharacter, Count:=1
.Text = "/"
.Collapse wdCollapseEnd
.Move unit:=wdCharacter, Count:=1
.Fields.Add Range:=rngFooter, Type:=wdFieldNumPages

.Move unit:=wdCharacter, Count:=1
.Text = " Curriculum Vitae di" & vbCrLf & nome_cognome & vbTab
.Collapse wdCollapseEnd
.Move unit:=wdCharacter, Count:=1

'.Font.Size = 10
End With


Allora, dopo molte ricerche su internet ho trovato questo codice che ho cercato con le mie scarse conoscenze di vba di adattare alle mie esigenze.
Sembra essere a posto tranne che per il fatto che la dimensione del testo č troppo grande.
Ho provato ad aggiungere a fine codice (come vedete commentato)
.Font.Size = 10

ho anche provato a mettere 5 ma la dimensione del testo non cambia.
Mi sapreste dire la sintassi giusta? Grazie. :)

banryu79
02-12-2007, 11:27
Dim rngFooter As Range
Set rngFooter = objWord.ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary).Range
With rngFooter

.Text = "Pagina "
.Collapse wdCollapseEnd
.Move unit:=wdCharacter, Count:=1

.Fields.Add Range:=rngFooter, Type:=wdFieldPage
.Collapse wdCollapseEnd
.Move unit:=wdCharacter, Count:=1
.Text = "/"
.Collapse wdCollapseEnd
.Move unit:=wdCharacter, Count:=1
.Fields.Add Range:=rngFooter, Type:=wdFieldNumPages

.Move unit:=wdCharacter, Count:=1
.Text = " Curriculum Vitae di" & vbCrLf & nome_cognome & vbTab
.Collapse wdCollapseEnd
.Move unit:=wdCharacter, Count:=1

'.Font.Size = 10
End With


Allora, dopo molte ricerche su internet ho trovato questo codice che ho cercato con le mie scarse conoscenze di vba di adattare alle mie esigenze.
Sembra essere a posto tranne che per il fatto che la dimensione del testo č troppo grande.
Ho provato ad aggiungere a fine codice (come vedete commentato)
.Font.Size = 10

ho anche provato a mettere 5 ma la dimensione del testo non cambia.
Mi sapreste dire la sintassi giusta? Grazie. :)

Non so nulla di vba ma potrebbe esserti utile questa pagina?

-> MSDN aggiungere intestazioni e pič di pagina ai documenti (http://msdn2.microsoft.com/it-it/library/ms178795(vs.80).aspx)

Magari la grandezza del Font devi settarla prima.

Ciao :)

john_revelator
02-12-2007, 16:05
Ciao, ti ringrazio per la buona volontā. Avevo giā visto anche quel link ma non mi č stato d'aiuto.
Ho giā spulciato mille siti, forum, italiani e stranieri cercando una soluzione ma niente.
Spero che qualcuno pratico di vba word sappia aiutarmi. :)