Tabel problemen

Status
Niet open voor verdere reacties.

DutchOirs

Gebruiker
Lid geworden
30 sep 2009
Berichten
720
Goedemiddag allen,

Wilde in een Word (2003) document in een tabel de waarde van een Veldnaam aanpassen.

Merk wel dat Word anders werkt dan in excel .


Heb even een test doc. gemaakt.

Zelfs een cel een DocVariable geven wil niet.

Doe dit door Invoegen - Veld - DocVariable / en naam van variabele invoeren.
Maar dit pakt ie niet in de cel.

Wat doe ik fout of vergeet ik
 

Bijlagen

  • TabelInfo.doc
    41 KB · Weergaven: 26
En nu nog even uitleggen wat je wilt, want ik snap er niks van: zit naar een leeg document te kijken met een lege tabel en een knop, en een Open procedure die niet werkt (wat nogal logisch is gezien de code). Dus wat is nu de bedoeling?
 
Goedenavond OctaFish,

Sorry, had een klein vb-tje gemaakt voor het eten, maar iets te simpel..

De opzet is dat ik in een Word document, waar tabels in staan, de variabelen weer op standaardwaarde kan zetten.
Is een extra optie, maar scheelt me een hoop werk in de toekomst..

Heb even een tabel gemaakt als voorbeeldje, alwaar ik reeds op een ander probleem liep??
Bedoeling is dat iedere cel een DocVariabele is oftewel een Veldnaam.

1e rij en 1e Kolom zou DNN(1) zijn
2e rij en 1e kolom zou dus DNN(2) zijn
enz tot rij 55, maar hier maar 2 rijen

1e rij en 2e Kolom is weer een ander variabele enz enz.

Als ik weet hoe het moet, maak ik ze allemaal. dus vandaar dit kleine vb-tje.

Vraag is hoe kan ik een variabele (DNN(1) bv. een andere waarde kunnen geven?
Dacht is niet moeilijk, mar kom er niet op :-(

Gr.

Dutcht
 
Laten we maar beginnen met uitleggen wat je fout doet, dan heb je iets om over na te denken bij het eten :)
PHP:
Dim UpDNN(1 To 55) As String
     UpDNN(1) = "Ok"
Je declareert hier een Matrix Variabele in VBA, meer niet. Vervolgens ga je die vulllen met tekst (althans: de eerste dimensie). En dan houdt het op. Een DOCVARIABLE kan nooit een matrix zijn, en kun je dus ook niet vullen als een matrix. Het is een tekstcontainer, meer niet. Je moet hem dus vullen vanuit je code. En dat doe je dus niet. Velden bijwerken heeft dus ook geen zin.
 
Ok OctaFish, begrijp hem.

Zoiets dan?
Code:
  Dim i As Integer, Streepje As String
  Streepje = "-"
  For i = 1 To 2                                                       ' CHECKEN COMBIGETALLEN MAAKT ACHTERGRONDKLEUR GRIJS
    UpDNN(i) = Streepje
  Next i

Is ook niet goed denk ik, want de Tabel moet ook aangestuurd worden.
Zoiets
Code:
  Dim i As Integer, Streepje As String
  Streepje = "-"
  For i = 1 To 2                                                       ' CHECKEN COMBIGETALLEN MAAKT ACHTERGRONDKLEUR GRIJS
    With ActiveDocument.Tables(8).Cell(Row:=i, Column:=1)
      UpDNN(i) = Streepje
    End With
  Next i

Probleem is alleen, krijg geen veldnaam in de cel.
 

Bijlagen

  • TabelInfo #1.doc
    43,5 KB · Weergaven: 26
Klein stapje

Code:
Private Sub CommandButton1_Click()
MsgBox ("But")
  Dim i As Integer, Streepje As String
  Streepje = "-"
  With ActiveDocument
    For i = 1 To 2                                                       ' CHECKEN COMBIGETALLEN MAAKT ACHTERGRONDKLEUR GRIJS
      Variables("UpDNN(i)") = "-"
      Variables("UpGet(i)") = Streepje
    Next i
    .Fields.Update
  End With
End Sub
Geen directe foutmeldingen en kan Veld een naam geven, maar geeft nog niet het ingevoerde weer
 

Bijlagen

  • TabelInfo #3.doc
    44,5 KB · Weergaven: 24
Laatst bewerkt:
Ben eruit denk ik.

Weet niet of het nog mooier kan?

Code:
Private Sub CommandButton1_Click()
MsgBox ("But")
  Dim i As Integer, e As Integer, Streepje As String, TmpSB As Integer
  Streepje = "-"
  TmpSB = 11
  
  With ActiveDocument
    For i = 1 To 2                                                      
      For e = 1 To 4
   '  .Variables("UpDNN(" & i & ")") = Streepje                 ' gebruik van een string
      .Variables("UpDNN(" & i & ")") = "UpDNN" & i             ' gebruik van tekst en een variabele
   '   .Variables("UpGet(" & i & "," & e & ")") = TmpSB & "%"   ' gebruik van een variabele en een tekst
      .Variables("UpGet(" & i & "," & e & ")") = 12              ' gebruik van cijfer
      Next e
    Next i
    .Fields.Update
  End With
End Sub
 

Bijlagen

  • TabelInfo #4.doc
    44,5 KB · Weergaven: 26
Laatst bewerkt:
Zal er morgen naar kijken, vanavond geen tijd gehad helaas.
 
Ik hoop niet dat je denkt dat je nu DocVariables hebt gemaakt met een matrix, want dat is natuurlijk niet zo. Je hebt hooguit variabelen gemaakt met haakjes en een komma in de naam. Maar dat mag natuurlijk :).
 
OK,

Is het ook mogelijk om specifiek gericht op een bepaalde Tabel, de waarde in een cel te veranderen?

Dus bv. Tabel 8, rij 2 en kolom 4
 
Dat kan wel, want je kunt elke tabel apart lezen en de cellen er uit halen. Beetje zoals Excel, maar dan ingewikkelder :).
Code:
Sub CheckTabel()
Dim tbl As Table, rij As Row, kol As Column, cel As Cell
    For Each tbl In ActiveDocument.Tables
        MsgBox tbl.Rows.Count & vbLf & tbl.Columns.Count
        For Each rij In tbl.Rows
            For Each cel In rij.Cells
                MsgBox cel.Range.Text
            Next cel
        Next rij
    Next tbl
End Sub
 
Hoi OctaFish,

Hierbij loopt ie alle Tabellen af, wat nu als je er meerdere hebt.
Dus een aansturing van een bepaalde Tabel zou mooi zijn
en tevens hoe je uit kan vinden welk nummer een Tabel heeft. Dit kan door te testen weet ik, maar is er ook een mogelijkheid om dit te achterhalen? er is namelij geen eigenschappen van een Tabel.
 
Je kunt tabellen een Titel geven; dan kun je ze herkennen. Die titel kun je met VBA instellen en uitlezen.
Code:
Sub CheckTabel()
Dim tbl As Table, rij As Row, kol As Column, cel As Cell, i As Integer
Dim aDoc As Document
    Set aDoc = ActiveDocument
    For Each tbl In aDoc.Tables
        i = i + 1
        If tbl.Title = "" Then tbl.Title = "Tabel " & i
        MsgBox tbl.Title
        MsgBox tbl.Rows.Count & vbLf & tbl.Columns.Count
        For Each rij In tbl.Rows
            For Each cel In rij.Cells
''                MsgBox cel.Range.Text
            Next cel
        Next rij
    Next tbl
End Sub
 
Hoi OctaFish,

werkt helaas niet en geeft een foutmelding: "Compileer fout - Kan de methode of gegevenslid niet vinden"

Code:
Dim tbl As Table, rij As Row, kol As Column, cel As Cell, i As Integer
Dim aDoc As Document
    Set aDoc = ActiveDocument
    For Each tbl In aDoc.Tables
        i = i + 1
        If tbl.[COLOR=#ff0000][B]Title[/B][/COLOR] = "" Then tbl.Title = "Tabel " & i
        MsgBox tbl.Title
        MsgBox tbl.Rows.Count & vbLf & tbl.Columns.Count
        For Each rij In tbl.Rows
            For Each cel In rij.Cells
                MsgBox cel.Range.Text
            Next cel
        Next rij
    Next tbl
End Sub

wat doe ik fout?
 
Dat had ik ook, en dat komt door een compatibiliteitsprobleem. Als je het document converteert naar een docx of docm doet-ie het wel. Nu kun je überhaupt geen titel of Alternatieve tekst ingeven; die opties zijn uitgeschakeld in de tabel. En dan kan een macro het uiteraard ook niet :).
 
vreemd, in m'n Updating file (ook een .doc) werkt een en ander wel?

Heb dit voorbeeldje gemaakt en doet het niet?

Enig idee hoe ik hem kan converteren?

Zie in m'n Opslaan als, geen optie voor DocM of DocX

DocX is toch Word 2007 document?
 
Laatst bewerkt:
Ik gebruik zelf Office 365 (Office 2019 zeg maar) en daar zit het in het menu <Bestand>. Je ziet dan, bij DOC bestanden, de knop Converteren staan.
 
Ok staat dus niet bij Word 2003, jammer

Heb nog een mooie gevonden die niet werkt :-(

Code:
Sub FindTableNumber()
    Dim J As Integer
    Dim iTableNum As Integer
    Dim oTbl As Table

    Selection.Bookmarks.Add ("TempBM")
    For J = 1 To ActiveDocument.Tables.Count
        Set oTbl = ActiveDocument.Tables(J)
        oTbl.Select
        If Selection.Bookmarks.Exists("TempBM") Then
            iTableNum = J
            Exit For
        End If
    Next J
    ActiveDocument.Bookmarks("TempBM").Select
    ActiveDocument.Bookmarks("TempBM").Delete
    MsgBox "The current table is table " & iTableNum
End Sub
https://word.tips.net/T000505_Index_Number_for_the_Active_Table.html
 
Je kan uiteraard in Word 2003 nooit een conversie doen naar een hogere versie; Word 2k3 kan alleen van oudere versies converteren. Niet van nieuwere.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan