Avatar billede henrik1975 Nybegynder
29. december 2005 - 15:24 Der er 1 kommentar og
1 løsning

Oprette mere end een tabel i Word

Jeg har et problem som sikkert er nemt at løse (når man ved hvordan).

Jeg kalder Word fra SPSS og skriver noget output til det nyåbnede worddokument. Output består af en række tabeller med indhold. Men efter jeg har åbnet første tabel og fyldt den med tekst/tal - så kan jeg ikke finde ud af at lave en blank linje og derefter åbne tabel nummer 2.

Første kald på WordApp.ActiveDocument.Tables.Add(Range:=WordApp.ActiveDocument.Range, NumRows:=(intRow), NumColumns:=(intCol), DefaultTableBehavior:=wdWord9TableBehavior)

fungerer fint.  Men hvordan vælger jeg placeringen af tabel 2? Har prøvet med WordApp.ActiveDocument.GoTo what:=wdGoToLine, which:=Last inden Tables.Add kaldes igen, men uden held.

Hele koden er:

Sub Main
'On Error GoTo Oopps
Set Wordapp=GetObject(,"Word.Application")

WordApp.Documents.Add("C:\test.doc")

' Declare variables and get the designated output items object:
Dim objOutputDcc As ISpssOutputDoc
Dim objOutputItems As ISpssItems
Set objOutputDoc = objSpssApp.GetDesignatedOutputDoc
Set objOutputItems = objOutputDoc.Items

' Read the number of items and get the first pivot table
Dim objOutputItem As ISpssItem
Dim objPivotTable As PivotTable
Dim objRowLabels As ISpssLabels

Dim intCount As Integer, I As Integer
Dim objDataCells As ISpssDataCells
Dim lngNumRows As Long
Dim lngNumColumns As Long

WordApp.Visible = True

intCount = objOutputItems.Count

For I = 0 To intCount - 1
    Set objOutputItem = objOutputItems.GetItem (I)

    If objOutputItem.SPSSType = SPSSPivot Then
    Set objPivotTable = objOutputItem.Activate()
    Set objRowLabels = objPivotTable.RowLabelArray
    Set objDataCells = objPivotTable.DataCellArray

    intCol = objDataCells.NumColumns
    intRow = objDataCells.NumRows

WordApp.ActiveDocument.GoTo what:=wdGoToLine, which:=Last
WordApp.ActiveDocument.Tables.Add(Range:=WordApp.ActiveDocument.Range, NumRows:=(intRow), NumColumns:=(intCol), DefaultTableBehavior:=wdWord9TableBehavior)

        For intC = 0 To intCol-1
        For intR = 0 To intRow-1
            tekst=objDataCells.ValueAt(intR,intC)
            If tekst<>"" Then
                WordApp.Selection.Tables(1).Cell((intR+1), (intC+1)).Range.InsertAfter tekst
            End If
        Next
        Next
    End If

Next


Oopps:
Debug.Print "error " & Err & ": " & Err.Description & ""

End Sub
Avatar billede supertekst Ekspert
30. december 2005 - 11:30 #1
Forslag: Inden du opretter en tabel - så skriv et linieskift i Word - går en linien op - opret tabellen - herefter gå til slutningen af dokumentet - opret næste tabel o.s.v.

MVH
Supertekst
Avatar billede henrik1975 Nybegynder
05. januar 2006 - 15:06 #2
En linje skulle ændres til:

Set objrange = WordApp.ActiveDocument.Tables.Add(Range:=objrange, NumRows:=(intRow), NumColumns:=(intCol), DefaultTableBehavior:=wdWord9TableBehavior).range

+ der skulle tilføjes følgende efter for..next

objrange.Collapse wdCollapseEnd
objrange.InsertParagraphAfter
objrange.Collapse wdCollapseEnd
objrange.InsertParagraphAfter
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester