|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jul 2007
Messaggi: 1092
|
[vba word] creare una tabella dentro tabella
Salve a tutti. Scusate il titolo un pò criptico.
Forse un'immagine sarà più d'aiuto. In pratica devo creare un documento word con questo layout: http://img134.imageshack.us/my.php?i...titolo1ds7.jpg Il problema è che non ho la più pallida idea di come fare. Il codice che ho scritto finora è questo Codice:
Private Sub cmdCrea_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)
strQueryName = "qrylingue"
Set objRST = Application.CurrentDb.OpenRecordset(strQueryName)
objtable.Cell(1, 1).Range.ParagraphFormat.Alignment = wdAlignParagraphRight
objtable.Columns(1).PreferredWidth = 150
objtable.Columns(2).PreferredWidth = 350
objtable.Cell(1, 1).Range.Text = "Altra(e) lingua(e)"
objtable.Cell(1, 1).Range.Font.Name = "Arial Narrow"
objtable.Cell(1, 1).Range.Font.Size = 11
objtable.Cell(1, 1).Range.Font.Bold = False
objtable.Rows.Add
objtable.Cell(2, 1).Range.Text = "Autovalutazione"
objtable.Cell(2, 1).Range.Font.Name = "Arial Narrow"
objtable.Cell(2, 1).Range.Font.Size = 11
objtable.Cell(2, 1).Range.Font.Bold = False
' qua ci vanno le voci comprensione, parlato, scritto
objtable.Rows.Add
objtable.Cell(3, 1).Range.Text = "Livello europeo (*)"
objtable.Cell(3, 1).Range.Font.Name = "Arial Narrow"
objtable.Cell(3, 1).Range.Font.Size = 11
objtable.Cell(3, 1).Range.Font.Bold = False
' qui ci vanno le voci ascolto, lettura (incolonnate sotto comprensione),
' interazione orale (sotto parlato) e produzione orale
i = 3
Do While Not objRST.EOF
For k = 0 To objRST.Fields.Count - 1
lingua = objRST.Fields("lingua")
ascolto = objRST.Fields("cvep_ascolto")
lettura = objRST.Fields("cvep_lettura")
interazione = objRST.Fields("cvep_interazione")
porale = objRST.Fields("cvep_produz_orale")
pscritta = objRST.Fields("cvep_produz_scritta")
Next k
objtable.Rows.Add
objtable.Cell(i + 1, 1).Range.Text = lingua
objtable.Cell(i + 1, 1).Range.Font.Name = "Arial Narrow"
objtable.Cell(i + 1, 1).Range.Font.Size = 10
objtable.Cell(i + 1, 1).Range.Font.Bold = False
' qua andranno i valori del recordset
i = i + 1
objRST.MoveNext
Loop
End Sub
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jul 2007
Messaggi: 1092
|
Scusate se uppo ma proprio non ne vengo fuori.
Dopo tanti sbattimenti ho fatto decisamente dei progressi. La tabella col layout mostrato in figura sono riuscito a crearlo ma probabilmente sbaglio qualcosa a livello concettuale perchè mi ritrovo con delle righe vuote alla fine del mio documento. Spero che qualcuno abbia la pazienza di dedicarmi 5 minuti e scaricare il file in questione. http://files-upload.com/files/678289/word.zip edit. Penso che il problema stia in questa linea di codice objword.ActiveDocument.Tables.Add Range:=objword.ActiveDocument.Tables(1).Cell(2, 2).Range, numrows:=2 + contalingue, NumColumns:=5, _ DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _ wdAutoFitFixed che uso per creare la tabella all'interno della mia cella. Il fatto è che ho dovuto inserire quest'istruzione 2 volte affinchè la tabella venisse creata. Inserendola una volta soltanto non funziona Ultima modifica di john_revelator : 14-12-2007 alle 16:29. |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jul 2007
Messaggi: 1092
|
Nessuno che abbia mai avuto lo stesso problema?
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jul 2007
Messaggi: 1092
|
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jul 2007
Messaggi: 1092
|
Ho risolto e si trattava di una sciocchezza.
Semplicemente all'interno del mio codice per due volte eseguivo questa istruzione objtable.Rows.Add che era superflua. Da qui le righe in più che venivano create. Se qualcuno comunque mi sapesse spiegare la ragione per la quale per poter creare una tabella all'interno di una cella sono costretto ad eseguire questa istruzione due volte: objword.ActiveDocument.Tables.Add Range:=objword.ActiveDocument.Tables(1).Cell(2, 2).Range, numrows:=2 + contalingue, NumColumns:=5, _ DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _ wdAutoFitFixed mi toglierebbe una grossa curiosità. Grazie a tutti per l'attenzione. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:38.



















