Word, Tabelle berechnen lassen

Hallo Wissende,

ich füge über Vba mittels .Paste eine Exceltabelle in Word ein. Das klappt.

Nun füge ich manuell oder über vba in die letzte Spalte eine Formel ein, z.B. „=Summe(Links)“, das klappt auch, die Summen werden korrekt berechnet.

Nur, ändere ich Werte in der Tabelle interessiert das die Summenfunktionen überhaupt nicht.

Frage1: wie löse ich eine Neuberechnung von Formeln in einer Tabelle aus, manuell und wichtiger per Vba?

Frage2: wie lösche ich den Inhalt einer Zelle in Vba?
ActiveDocument.Tables(1).Cell(3, 5).Delete
ist schon was in der Richtung .Delete ist mir dann doch zu gründlich :smile:, aber ich fand nix besseres in der Intellisense:frowning:

Ich will ja nur den Zellinhalt löschen, denn wenn der bestehen bleibt und ich dies tue:

ActiveDocument.Tables(1).Cell(3, 5).Formula Formula:="=summe(links)"

habe ich in der Zelle den alten Inhalt und die neue Summe :frowning:

Danke ^ Gruß
Reinhard

Manuell: [F9]
owT

Gruß

Stefan

Hallo Stefan,

leider nein, ich habe das ausprobiert da ich es von Excel her kenne, aber keine Reaktion, also Neuberechnung.

Leider kann ich auch nicht genau sagen welche Wordversion (97,2000,2003) das ist, da ich durch lange Tests den Überblick verloren habe.
Denn ich lasse durch Word Excel aufrufen und auch durch Excel Word,
und welche jeweilige Version dann anspricht, hängt wohl davon ab welche Version vorher aktiv war.

Aber F9 löste bei keiner Wordversion eine Neuberechnung der Tabelle aus:frowning:
In Word, Extras—Optionen fand ich leider nichts zu Neuberechnung/automatischerAktualisierung.

Achja, grad hier mit Word2002 getestet, kleine Tabelle eingefügt, Cell(1,1) und Cell(1,2) Zahlen rein, dann in Cell(1,3) manuell die Formel „=sum(left)“ (k.A. warum das hier englisch ist, aber völlig egal)
Es wird korrekt die Summe angezeigt. Verändere ich Cell(1,1) oder Cell(1,2) so bleibt die Summe gleich, und leider bringt F9 nichts:frowning:

Gruß
Reinhard

Hallo, Reinhard!

ich füge über Vba mittels .Paste eine Exceltabelle in Word
ein. Das klappt.

Schon eklig. Aber egal. Jetzt hast Du eine Tabelle.

Nun füge ich manuell oder über vba in die letzte Spalte eine
Formel ein, z.B. „=Summe(Links)“, das klappt auch, die Summen
werden korrekt berechnet.

Wie genau machst Du das? Ich mache das mal so:

ActiveDocument.Tables(1).Cell(1,3).Formula "=SUM(LEFT)"

Danach habe ich ein Feld in der Tabelle stehen, erkennbar am grauen Hintergrund.

Nur, ändere ich Werte in der Tabelle interessiert das die
Summenfunktionen überhaupt nicht.

Ja, das ist erst mal so.

Frage1: wie löse ich eine Neuberechnung von Formeln in einer
Tabelle aus, manuell und wichtiger per Vba?

Alles markieren, wenigstens aber das Feld, und dann F9.
Oder einfach per VBA über

ActiveDocument.Fields.Update

wenn Du gleich alle Felder aktualisieren möchtest.

Wenn Du nur die Felder in der Tabelle aktualisieren willst:

ActiveDocument.Tables(1).Select
Selection.Fields.Update

Frage2: wie lösche ich den Inhalt einer Zelle in Vba?
ActiveDocument.Tables(1).Cell(3, 5).Delete
ist schon was in der Richtung .Delete ist mir dann doch zu
gründlich :smile:, aber ich fand nix besseres in der
Intellisense:frowning:

Beispiel: Lösche alle Inhalte, nicht die Zellen, der zweiten Zeile:

ActiveDocument.Tables(1).Rows(2).select
Selection.delete unit:=wdCharacter,count:=1

Noch ein einfacher Tip am Rande: Zeichne das als Makro auf, was Du machen willst. Schaue dann im VBA-Editor nach, was genau Word daraus gemacht hat. So habe ich es auch gerade gemacht. In Word-VBA bin ich nicht so fit. Analog zu Excel-VBA hätte ich nämlich zuerst etwas aus der .Clear-Reihe (wie .ClearContents) oder so erwartet/vermutet…

Gruß, Manfred

Hallo Manfred,

ich füge über Vba mittels .Paste eine Exceltabelle in Word
ein. Das klappt.

Schon eklig. Aber egal. Jetzt hast Du eine Tabelle.

für das was ich vorhabe muß ich Text und Tabelle mixen, also mit beiden Welten klarkommen, denn Word kann mir zuwenig in der Tabelle, und Excel ist keine Textverarbeitung (natürlich ist es mir am liebsten ich könnte alles mit Excel machen, Hauptgrund dazu ich kenne mich in Word nicht so aus, das geht aber nicht)

Nun füge ich manuell oder über vba in die letzte Spalte eine
Formel ein, z.B. „=Summe(Links)“, das klappt auch, die Summen
werden korrekt berechnet.

Wie genau machst Du das? Ich mache das mal so:

ActiveDocument.Tables(1).Cell(1,3).Formula
„=SUM(LEFT)“

Danach habe ich ein Feld in der Tabelle stehen, erkennbar am
grauen Hintergrund.

Seltsam, deine Version hatte ich auch,
also so: .Cell(intZei, 5).Formula ="=Summe(Über)"
aber das passte dem Debugger nicht, er zwang mich zu:
.Cell(intZei, 5).Formula Formula:="=Summe(Über)"
wie du unten im Code siehst.

Liegt das an der Version, am deutsch/englischen? Ich glaube es war Word97 mit ich experimentierte.

Nur, ändere ich Werte in der Tabelle interessiert das die
Summenfunktionen überhaupt nicht.

Ja, das ist erst mal so.

Habe ich befürchtet, da ich in Vba nichts fand was wie Ereigniscode aussah, also eine abfangbare Reaktion auf das Change-Ereignis einer Zelle.

Frage1: wie löse ich eine Neuberechnung von Formeln in einer
Tabelle aus, manuell und wichtiger per Vba?

Alles markieren, wenigstens aber das Feld, und dann F9.

Ich habe heute morgen viel Zeit damit verbracht, und siehe da, ich fands sogar in der Hile, also erst Alles markieren, dann F9.

Oder einfach per VBA
über

ActiveDocument.Fields.Update

wenn Du
gleich alle Felder aktualisieren möchtest.

Jepp, auf Fields.Update stiess ich auch.
Im anderen Code wird nur die Tabelle die ich will markiert, aktualisiert, wie kriege ich denn die Markierung/Selection wieder weg in Vba?
Selection.MoveLeft Unit:=wdCharacter, Count:=1
klappt zwar, sieht mir aber nicht wie der Königsweg aus.

Beispiel: Lösche alle Inhalte, nicht die Zellen, der zweiten
Zeile:

ActiveDocument.Tables(1).Rows(2).select
Selection.delete unit:=wdCharacter,count:=1

Okay, das kann ich im Code benutzen um ihn zu verkürzen.

Noch ein einfacher Tip am Rande: Zeichne das als Makro auf,
was Du machen willst. Schaue dann im VBA-Editor nach, was
genau Word daraus gemacht hat. So habe ich es auch gerade
gemacht. In Word-VBA bin ich nicht so fit. Analog zu Excel-VBA
hätte ich nämlich zuerst etwas aus der .Clear-Reihe (wie
.ClearContents) oder so erwartet/vermutet…

Ja, der Makrorekorder, sehr gewöhnungsbedürftig, er zeichnet wohl nichts auf was ich mit der Maus mache? Oder gibt es da einen Trick?

Ja, mit Word-Vba bin ich auch noch sehr in der Reinschnupperphase:smile:
Deshalb geht es sehr mühsam Codezeile für Codezeile voran, jeden Befehl erstmal in der Hilfe in der Hilfe nachlesen, dann ggfs. Makro dazu aufzeichnen, die Aufzeichnung in der Hilfe nachschlagen usw.

Dumm ist halt wenn ich was suche und den Namen nicht kenne und der Makrorekorder mir nicht hilft:frowning:

Achja, die IntelliSense rettet mich oft.

Frostern
Reinhard, der dann doch schauen muß was denn dicke Bücher zu Word97-Vba so kosten bei ebay

Sub SummeEinfuegen()
Dim intZei As Integer
If Tabellennummer = 0 Then
MsgBox „Tabelle nicht gefunden“
Exit Sub
End If
With ActiveDocument.Tables(Tabellennummer)
For intZei = 2 To .Rows.Count - 1
.Cell(intZei, 5).Select
Selection.Delete
.Cell(intZei, 5).Formula Formula:="=Produkt(B" & intZei & „;D“ & intZei & „)“
Next intZei
.Cell(intZei, 5).Select
Selection.Delete
'.Cell(intZei, 5).Formula Formula:="=Summe(E2;E" & .Rows.Count - 1 & „)“
.Cell(intZei, 5).Formula Formula:="=Summe(Über)"
End With
End Sub

Sub TabelleAktualisieren()
If Tabellennummer = 0 Then
MsgBox „Tabelle nicht gefunden“
Exit Sub
End If
ActiveDocument.Tables(Tabellennummer).Select
Selection.Fields.Update
'Selection.Fields.ToggleShowCodes
'Selection.EscapeKey ’ bringt nix !?
Selection.MoveLeft Unit:=wdCharacter, Count:=1 'Markierung aufheben
End Sub

Hallo, Reinhard!

ich füge über Vba mittels .Paste eine Exceltabelle in Word
ein. Das klappt.

Schon eklig. Aber egal. Jetzt hast Du eine Tabelle.

für das was ich vorhabe muß ich Text und Tabelle mixen, also
mit beiden Welten klarkommen, denn Word kann mir zuwenig in
der Tabelle, und Excel ist keine Textverarbeitung (natürlich
ist es mir am liebsten ich könnte alles mit Excel machen,
Hauptgrund dazu ich kenne mich in Word nicht so aus, das geht
aber nicht)

Mach doch die Formel ins Excel mit rein, kopiere Dir die Tabelle und füge das als Excel-Tabellenobjekt (über Inhalte einfügen) nach Word ein. Dann ist es zwar umständlicher zu editieren. Du brauchst nämlich einen Doppelklick. Aber ansonsten hast Du eben eine Excel-Tabelle mit allem drum und dran in Word. Inklusive automatischer Berechnung.

Liegt das an der Version, am deutsch/englischen? Ich glaube es
war Word97 mit ich experimentierte.

Keine Ahnung, kann sein. Ich hab’s unter 2003 gemacht.

Nur, ändere ich Werte in der Tabelle interessiert das die
Summenfunktionen überhaupt nicht.

Ja, das ist erst mal so.

Habe ich befürchtet, da ich in Vba nichts fand was wie
Ereigniscode aussah, also eine abfangbare Reaktion auf das
Change-Ereignis einer Zelle.

Bestenfalls in den Dokumentereignissen. Doch auch da wird’s wieder eklig. Da müsstest Du dann raussuchen, ob sich die Tabelle geändert hat und und und…

Im anderen Code wird nur die Tabelle die ich will markiert,
aktualisiert, wie kriege ich denn die Markierung/Selection
wieder weg in Vba?

Selektiere irgendwas anderes.

Selection.MoveLeft Unit:=wdCharacter, Count:=1
klappt zwar, sieht mir aber nicht wie der Königsweg aus.

Mir auch nicht. Vor allem macht der Makrorekorder ständig ein .Select. Meistens kann man ein .Select, gefolgt von Selection.irgendwas auch verkürzen, in dem man die beiden Select-Dinger weglässt. Aber beim Delete ist das ein Problem: Delete auf Selection verhält sich eben anders als Delete auf einer Zelle. Daher geht’s an dieser Stelle vermutlich nicht anders.

Ja, der Makrorekorder, sehr gewöhnungsbedürftig, er zeichnet
wohl nichts auf was ich mit der Maus mache? Oder gibt es da
einen Trick?

Teils, teils. Wenn Du irgendwo hinklickst, geht das schon. Das Markieren funktioniert glaube ich nicht. Da musst Du dann mit den Tasten arbeiten.

Ja, mit Word-Vba bin ich auch noch sehr in der
Reinschnupperphase:smile:
Deshalb geht es sehr mühsam Codezeile für Codezeile voran,
jeden Befehl erstmal in der Hilfe in der Hilfe nachlesen, dann
ggfs. Makro dazu aufzeichnen, die Aufzeichnung in der Hilfe
nachschlagen usw.

Ich mache zuerst das Makro, das sagt mir dann, welche Befehle relevant sind und in welchen Objekten ich suchen muss.

Dumm ist halt wenn ich was suche und den Namen nicht kenne und
der Makrorekorder mir nicht hilft:frowning:

Der half mir eigentlich fast immer. Wenn der nicht mehr kann, muss halt Intellisense dran glauben.

Frostern

Ebenso,
Gruß, Manfred

Hallo Manfred,

Hallo, Reinhard!

ich füge über Vba mittels .Paste eine Exceltabelle in Word
ein. Das klappt.

Schon eklig. Aber egal. Jetzt hast Du eine Tabelle.

für das was ich vorhabe muß ich Text und Tabelle mixen, also
mit beiden Welten klarkommen, denn Word kann mir zuwenig in
der Tabelle, und Excel ist keine Textverarbeitung (natürlich
ist es mir am liebsten ich könnte alles mit Excel machen,
Hauptgrund dazu ich kenne mich in Word nicht so aus, das geht
aber nicht)

Mach doch die Formel ins Excel mit rein, kopiere Dir die
Tabelle und füge das als Excel-Tabellenobjekt (über Inhalte
einfügen) nach Word ein. Dann ist es zwar umständlicher zu
editieren. Du brauchst nämlich einen Doppelklick. Aber
ansonsten hast Du eben eine Excel-Tabelle mit allem drum und
dran in Word. Inklusive automatischer Berechnung.

In dem Punkt bin ich noch am austesten, also ich probiere auch die anderen Möglichkeiten in Word eine Excel-Tabelle einzufügen, als Object, als Object aus Datei usw.

Erste Tests hatten immer Mängel an der Funktionalität o.ä.
Ich will schon die Oberhand behalten und Word sagen wie groß die Tabelle ist die da als Objekt eingefügt wird, was wiederum Code in Excel erfordert der vom ersten Blatt alle nicht anzuzeigenden Zellen ausblendet, soweit ich das sehe wird nur das erste Blatt eingefügt. Gut dies kann ich in Excel lösen.

Und das mit dem notwendigen Doppelklick gefällt mir nicht, ich habe es jetzt so, in Word klickt man oben auf einen Menubefehl, der wechselt zu Excel, dort kann man in der Tabelle Änderungen vornehmen, dann klickt man in Excel oben auf einen Menupunkt und man ist wieder in Word und die Tabelle ist eingefügt.

Das klappt auch, nur will ich jetzt uach die Option bieten, in der Tabelle auch was ändern zu können und jede Änderung soll die Tabelle automatisch aktualisieren.
Da hängst noch, am „automatisch“.

Liegt das an der Version, am deutsch/englischen? Ich glaube es
war Word97 mit ich experimentierte.

Keine Ahnung, kann sein. Ich hab’s unter 2003 gemacht.

Gut, kommt mit Priorität 2 auf meine Nochzutesten-Liste *gg*
Nachfrage, du hast auch deutsches 2003?

Nur, ändere ich Werte in der Tabelle interessiert das die
Summenfunktionen überhaupt nicht.

Ja, das ist erst mal so.

Mist :frowning:

Habe ich befürchtet, da ich in Vba nichts fand was wie
Ereigniscode aussah, also eine abfangbare Reaktion auf das
Change-Ereignis einer Zelle.

Bestenfalls in den Dokumentereignissen. Doch auch da wird’s
wieder eklig. Da müsstest Du dann raussuchen, ob sich die
Tabelle geändert hat und und und…

*Ohren spitz*, klingt ja äußerst interessant, wie finde ich denn die Dokumentereignisse?
Bisher fand ich nur New, Close,Open (okay bei 2003 waren es 2 mehr, aber mit denen konnte ich nix anfangen)

Das Open bzw. Close benutze ich ja um die Menufehle hinzuzufügen oder wieder zu löschen.

Im anderen Code wird nur die Tabelle die ich will markiert,
aktualisiert, wie kriege ich denn die Markierung/Selection
wieder weg in Vba?

Selektiere irgendwas anderes.

Okay, dann gebe ich die Suche nach Deselect oder Unselect auf.

Selection.MoveLeft Unit:=wdCharacter, Count:=1
klappt zwar, sieht mir aber nicht wie der Königsweg aus.

Mir auch nicht. Vor allem macht der Makrorekorder ständig ein
.Select. Meistens kann man ein .Select, gefolgt von
Selection.irgendwas auch verkürzen, in dem man die beiden
Select-Dinger weglässt. Aber beim Delete ist das ein Problem:
Delete auf Selection verhält sich eben anders als Delete auf
einer Zelle. Daher geht’s an dieser Stelle vermutlich nicht
anders.

Derzeit bin ich heilfroh wenn überhaupt was funktioniert:smile:
Select, falls möglich zu entfernen kommt später.

Ja, der Makrorekorder, sehr gewöhnungsbedürftig, er zeichnet
wohl nichts auf was ich mit der Maus mache? Oder gibt es da
einen Trick?

Teils, teils. Wenn Du irgendwo hinklickst, geht das schon. Das
Markieren funktioniert glaube ich nicht. Da musst Du dann mit
den Tasten arbeiten.

Bei mir nicht, irgendwo hinklicken zeigt keine Reaktion und es wird auch nichts aufgezeichnet :frowning:

Gruß
Reinhard

Hallo, Reinhard!

Keine Ahnung, kann sein. Ich hab’s unter 2003 gemacht.

Gut, kommt mit Priorität 2 auf meine Nochzutesten-Liste *gg*
Nachfrage, du hast auch deutsches 2003?

Jepp.

Nur, ändere ich Werte in der Tabelle interessiert das die
Summenfunktionen überhaupt nicht.

Ja, das ist erst mal so.

Mist :frowning:

Na, so wild ist das auch nicht. Ich kann immerhin auch Excel sagen, dass er nur auf Klick neuberechnen soll und nicht permanent…

Bestenfalls in den Dokumentereignissen. Doch auch da wird’s
wieder eklig. Da müsstest Du dann raussuchen, ob sich die
Tabelle geändert hat und und und…

*Ohren spitz*, klingt ja äußerst interessant, wie finde ich
denn die Dokumentereignisse?
Bisher fand ich nur New, Close,Open (okay bei 2003 waren es 2
mehr, aber mit denen konnte ich nix anfangen)

Geh in den VBA-Editor, gib unter Suche „WithEvents“ ein, gehe dann z. B. auf’s DocumentChange-Ereignis und schaue detaillierter unter „Verwenden von Ereignissen mit dem Application-Objekt“ nach. Da steht drin, was so geht…

Teils, teils. Wenn Du irgendwo hinklickst, geht das schon. Das
Markieren funktioniert glaube ich nicht. Da musst Du dann mit
den Tasten arbeiten.

Bei mir nicht, irgendwo hinklicken zeigt keine Reaktion und es
wird auch nichts aufgezeichnet :frowning:

Wie gesagt: Mal so, mal so. Menüpunkte aufrufen per Maus geht aber?

Gruß, Manfred

Hallo Manfred,

Nur, ändere ich Werte in der Tabelle interessiert das die
Summenfunktionen überhaupt nicht.

Ja, das ist erst mal so.

Mist :frowning:

Na, so wild ist das auch nicht. Ich kann immerhin auch Excel
sagen, dass er nur auf Klick neuberechnen soll und nicht
permanent…

den Schalter um in Word die Berechnung einer Tabelle auf permanent zu stellen suche ich ja.

*Ohren spitz*, klingt ja äußerst interessant, wie finde ich
denn die Dokumentereignisse?
Bisher fand ich nur New, Close,Open (okay bei 2003 waren es 2
mehr, aber mit denen konnte ich nix anfangen)

Geh in den VBA-Editor, gib unter Suche „WithEvents“ ein, gehe
dann z. B. auf’s DocumentChange-Ereignis und schaue
detaillierter unter „Verwenden von Ereignissen mit dem
Application-Objekt“ nach. Da steht drin, was so geht…

Na, das ist doch was, da habe ich nachher, morgen was zum Testen, wäre Klasse wenn ich da was finde.

Teils, teils. Wenn Du irgendwo hinklickst, geht das schon. Das
Markieren funktioniert glaube ich nicht. Da musst Du dann mit
den Tasten arbeiten.

Bei mir nicht, irgendwo hinklicken zeigt keine Reaktion und es
wird auch nichts aufgezeichnet :frowning:

Wie gesagt: Mal so, mal so. Menüpunkte aufrufen per Maus geht
aber?

Ich hatte jetzt nur getestet mit der Maus irgendo im Blatt/Tabelle hinzuklicken um dann da irgendwas zu markieren und mit Blatt meine ich Dokument,muß mich da noch gewaltig in der Wortwahl bei Word umstellen:smile:
Daher gehe ich davon aus, daß man „oben“ mit der Maus weiter was auswählen kann, weiß das aber jetzt nicht genau.
Gut, läßt sich ja leicht testen und aus deiner Nachfrage folgere ich daß das gehen muß. Falls nicht bei mir, melde ich mich wieder deshalb, gehe aber davon nicht aus daß irgendwas mit der Maus ist.

Gruß
Reinhard