MS-Office-Forum
Google
   

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Word
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads Der Renner, 11 Entwicklertools für Access, Tipps & Trick und offene Datenbanken zum einzigartigen Preis.
Themen-Optionen Ansicht
Alt 21.02.2017, 09:23   #1
Ausgeheckt
Neuer Benutzer
Neuer Benutzer
Standard Word 2013 - Texte und Tabellen mit Steuerelement verbergen bzw. sichtbar machen

Hallo zusammen,

ich erstelle eine Checkliste (Formular) die verschiedene Typen beinhaltet.

X =ActiveX Steuerelement Kontrollkästchen
mit Kontrollkästchen (Active-X Steuerelement)vor jeder Überschrift.

folgender Aufbau (schematisch):

Inhaltsverzeichnis:
Überschrift1 Thema1
X1 Überschrift2 TypA
X2 Überschrift2 TypB

Überschrift1 Thema2
X3 Überschrift2 TypA
X4 Überschrift2 TypB



Thema1
__X1 Typ A
_____Tabelle1 mit Kontrollkästchen für i.O. & n.i.O

__X2 Typ B
_____Tabelle2 mit Kontrollkästchen für i.O. & n.i.O

Thema2
__X3 Typ A
_____Tabelle3 mit Kontrollkästchen für i.O. & n.i.O

__X4 Typ B
_____Tabelle4 mit Kontrollkästchen für i.O. & n.i.O

Wie kann man mit Hilfe der Steuerelemente (z.B. Kontrollkästchen) die Typen (inkl. Text und Tabellen) auszublenden, die für den Check nicht relevant sind?

Wenn möglich ohne VBA- da die "Formular-User" es intuitiv hinbekommen sollen ohne zu vergessen, dass z.B. die Makrosicherheit (Achtung IT-Richtlinien) angepasst werden soll etc.

Zum Beispiel so als wenn man bei der Überschrift die Ebene ein und ausblendet (dieses kleine Dreieck) nur dauerhaft über Checkbox Ja / Nein o.ä. ?
Ausgeheckt ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 21.02.2017, 10:03   #2
MarkMH_K
MOF User
MOF User
Standard

Hi,

ein Schuß ins tiefblaue.

»Zum Beispiel so als wenn man bei der Überschrift die Ebene ein und ausblendet (dieses kleine Dreieck) nur dauerhaft über Checkbox Ja / Nein o.ä.?« Das ist die neue Eigenschaft des Paragraph-Objekts: Collapsed oder so. Aber ohne VBA?

In den alten Words konnte man Formatvorlagen in Symbolleisten ziehen, wo sie automatisch einer Schaltfläche zugeordnet wurden, ohne daß irgendein Makro generiert wurde, und dieser Schaltfläche konnte man auch Icon und einen beliebigen Anzeigetext zuweisen. Wenn a) die neue Eigenschaft in Formatvorlagen speicherbar ist (möglicherweise nur mit VBA, analog Visible), und b) das Hinzufügen von Formatvorlagen in die neuen Äquivalente der Symbolleisten möglich ist, könnte das ohne VBA gehen.

Gruß

Markus
MarkMH_K ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 21.02.2017, 10:29   #3
Ausgeheckt
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Leider kann ich mit den Begriffen "Paragraph-Objekts: collapsed ... " nichts anfangen, ohne das ich mich dazu wieder erkundigen müsste ob es funktioniert/praktikabel ist.

Vielleicht wäre das hinterlegen einer Feldfunktion möglich ...
"Gedanke: {IF {checkbox1} = True Then {Textmarke1} = hidden oder collapsed ...}"

Mir ist leider die Syntax nicht bekannt eine solche Verbindung herzustellen (Steuerelement <-> Textmarke)

Wenn es nur mit VBA geht (... mit VBA geht alles ...) dann halt mit VBA, was aber nicht dem Formular-User entgegenkommen würde.

ich habe das Gefühl nicht den richtigen Ansatz zu haben um es effizient umzusetzen.
Ausgeheckt ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 23.02.2017, 07:32   #4
Ausgeheckt
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Kann mir jemand detailliert helfen?
Bzw. mich zu einer Lösung verweisen :-) - ich finde nix.
Ausgeheckt ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 23.02.2017, 09:02   #5
Gerhard H
MOF Guru
MOF Guru
Standard

Hallo,

ich kann mir nicht vorstellen, dass da ohne VBA was geht. Um dir einen entsprechenden Vorschlag machen zu können, solltet du ein Musterdokument hochladen. Sowas kann man nicht blind aus dem Ärmel schütteln, da muss man experimentieren.

__________________

Gruß
Gerhard
Gerhard H ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.10.2017, 08:17   #6
Ausgeheckt
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard Verbergen klappt, Formular erstellt- Probleme beim Call einer Funktion

Hallo Zusammen,

Ich habe eine Lösung via VBA gefunden und erstellt.

Nun wollte ich das Makro optimieren bzw. korrigieren und folgendes Problem ist aufgetaucht.

'----------------------------Inspektion und Unterkategorien-----------

Public Sub CBInspDiaSIE_Click()
If CBInspDiaSIE.Value = True Then
Call InspDiaSIE1
CBInspDiaSIE.Caption = "Diagnose SIE"
Else
CBInspDiaSIE.Caption = "Diagnose SIE n.v"
End If
End Sub

Public Sub CBInspDiaFAN_Click()
If CBInspDiaFAN.Value = True Then
Call InspDiaFAN1
CBInspDiaFAN.Caption = "Diagnose FAN"
Else
CBInspDiaFAN.Caption = "Diagnose FAN n.v"
End If
End Sub

Public Sub CBInspDiaHEI_Click()
If CBInspDiaHEI.Value = True Then
Call InspDiaHEI1
CBInspDiaHEI.Caption = "Diagnose HEI"
Else
CBHECInspDiaHEI.Caption = "Diagnose HEI n.v"
End If
End Sub
'####################################
' Und hier ein Beispiel einer Funktion die aufgerufen wird:

'InspDiaFAN1###########################################################

Public Function InspDiaFAN1()
With ActiveDocument
'Text wird verborgen oder gezeigt

If .Bookmarks.Exists("InspDiaFAN") Then
If (.CBInsp.Value = True Or .CBInspGeo.Value = True) And .CBInspDiaFAN.Value = True Then
.Bookmarks("InspDiaFAN").Range.Font.Hidden = False
Else
.Bookmarks("InspDiaFAN").Range.Font.Hidden = True
End If
Else
MsgBox "Die Textmarke(n) 'InspDiaFAN' existiert nicht!"
End If
End With
End Function
'###############################


Wenn ich den CALL der Function for If... Then ... setze , also in die Public Sub ###-Click() Prozedur, dann funktioniert es. Ich denke das diese Variante aber der Performance meines 700 Seiten Langen Dokumentes schadet...

Kann mir jemand bitte helfen?
Ausgeheckt ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.10.2017, 10:29   #7
MarkMH_K
MOF User
MOF User
Standard

Hi,

auf die Schnelle (und ich bin kein guter und schon gar kein gelernter Programmierer):

Es wird wohl am Aufruf liegen. Mit Call ruft man Subs auf, die etwas tun (man kann den Subs auch Parameter mitgeben). Eine Function tut auch 'was, hat aber einen Rückgabewert:
Public Function ErmittleWas as Boolean
...
ErmittleWas = True 'oder False
End Function


Wenn ich's recht gelesen habe, willst Du etwas aus- oder einblenden. Dann vielleicht so:
Sub HideBookmark (bmName as String, showHide as Boolean)
ActiveDocument(Bookmarks(bmName).Range.Font.Hidden = showHide
End Sub 'HideBookmark

und der Aufruf so: Call HideBookmark InspDiaFAN, True

HTH.

Markus
MarkMH_K ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.10.2017, 10:52   #8
Ausgeheckt
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Vielen Dank, ich probiere es mal aus.
Ausgeheckt ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.10.2017, 13:47   #9
Ausgeheckt
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo zusammen,

es funktioniert-ob es die Performance steigert weiß ich noch nicht.

Um es noch einfacher in der Formularerweiterung zu machen möchte ich in der Prozedur mit Variablen arbeiten. D.h. Die Bezeichnung der Checkbox und die der betreffenden Textmarke sind bis auf "CB" identisch.

Wie kann ich das verknüpfen?

Public Sub CBInspDiaSIE_Click()
Dim name As String
Dim Checkbox As String
Dim Zusammengesetzt As Checkbox

Checkbox = "CB"
name = "InspDiaSIE"

If Zusammengesetzt("Checkbox" & "name").Value = True Then
Zusammengesetzt.Caption = "Diagnose SIE"
Call HideBookmark("name", False)
Else
Call HideBookmark("name", True)
Zusammengesetzt.Caption = "Diagnose SIE n.v"
End If
End Sub
Ausgeheckt ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.10.2017, 14:48   #10
Gerhard H
MOF Guru
MOF Guru
Standard

Hallo ausgeheckt,

du kannst Active-X-Steuerelemente nicht so zusammensetzen. Das sind word-technisch spezielle Inlineshapes, von denen du erst per Schleife den Typ (ControlObject) feststellen musst, dann die Sorte (Checkbox), und dann deren Namen.

Hier ein Beispiel für zwei Checkboxen namens "CBEins" und "CBZwei" die sich auf zwei Textmarken namens "Eins" und "Zwei" beziehen (das Auslagern der Ein/Ausblendaktionen in eine eigene Sub hab ich mir jetzt gespart):
Code:

Sub einAus()
Dim checkBx As Object
Dim textmarkenName As String
Dim i As Long

On Error GoTo fehler

With ActiveDocument
    For i = 1 To .InlineShapes.Count
       If .InlineShapes(i).Type <> wdInlineShapeOLEControlObject Then Exit Sub 'dann ist es nämlich kein Steuerelement!
        
        If .InlineShapes(i).OLEFormat.ProgID = "Forms.CheckBox.1" Then 'forms.checkbox.1 ist activeX-checkbox
            Set checkBx = InlineShapes(i).OLEFormat.Object
            
            'Textmarken-Name = Checkbox-Name abzüglich zweier Zeichen ("CB")
            textmarkenName = Right(checkBx.Name, Len(checkBx.Name) - 2)
            
            'Aus/Einblend-Aktionen
            .Bookmarks(textmarkenName).Range.Font.Hidden = Not checkBx.Value
       End If
    Next
End With

Exit Sub
fehler:
MsgBox Err.Number & ": " & Err.Description & vbLf & "Vermutlich: Textmarkenname nicht kompatibel mit Textbox-Name ohne 'CB'"
End Sub
Musterdokument mit diesem Code im Anhang
Angehängte Dateien
Dateityp: docm PerCheckboxEinUndAusblenden.docm (37,7 KB, 3x aufgerufen)

__________________

Gruß
Gerhard
Gerhard H ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.10.2017, 13:59   #11
Ausgeheckt
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Nachricht Text hervorheben in Textmarken bzw. Tabellen nach Bedingung

Vielen Dank für die Super Zuarbeit- es ist deutlich besser geworden.
Die Schleife zum durchlaufen der Checkbox-Bezeichnung habe ich nicht angewendet.

Im Anhang mal ein Musterdokument (nur minimaler Auszug) in der Tabellen sind die verborgen werden.
In diesen Tabellen können Prioritäten ausgewählt werden.

Wie kann ich je nach ausgewählter Priorität die Zelle einfärben bzw. den Texthintergrund farblich hervorheben?

Ich habe schon was eingebaut- aber die Syntax durchläuft mein ganzes Dokument.... aus Performance gründen wäre es angebracht das nur die Tabellen oder Textmarken durchsucht werden in den solche Prioritäten (Begriffe) vorkommen.
Wie steuert man sowas an??

Vielen Dank für die Unterstützung!
Angehängte Dateien
Dateityp: docm Test Dokument Makro Code bessere Performance 171013 1 MS Forum.docm (142,4 KB, 1x aufgerufen)
Ausgeheckt ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.10.2017, 15:48   #12
Gerhard H
MOF Guru
MOF Guru
Standard

Hallo ausgeheckt ,

ich würde das Färben der Prioritäten über das OnExit-Ereignis der Inhaltssteuerelemente steuern.

Dazu muss natürlich jedes Kombinationsfeld ein Inhaltssteuerelement-Kombinationsfeld sein (Mischungen zwischen diesen und den alten "Formularen aus Vorversionen" würde ich eh vermeiden); und jedes Kombinationsfeld, das gefärbt werden soll, braucht einen Tag, und zwar immer den gleichen (im angehängten Beispiel hab ich "prio" genommen).

Und wenn du beim Eintragen der Werte ein wenig sorgfältig bist (z.B. ist "informativ" groß geschrieben und viele andere Einträge haben ein Leerzeichen am Ende), kannst du dir das Trim und LCase sparen. Das Makro sieht dann so aus und ist im angehängten Dokument enthalten:
Code:

Private Sub Document_ContentControlOnExit(ByVal CC As ContentControl, Cancel As Boolean)
  Dim farbe As Long
  
   'nur bei ContentControls anspringen, deren Tag "prio" lautet:
   If CC.Tag <> "prio" Then Exit Sub
  
    'Farben festlegen:
    Select Case CC.Range.Text
        Case Is = "schnellstmöglich"
            farbe = 255 'rot
        Case Is = "zeitnah"
            farbe = 26367 'orange
        Case Is = "langfristig"
            farbe = 39423 'hell-orange
        Case Is = "informativ"
            farbe = 65535 'gelb
        Case Else
            farbe = -16777216 'automatisch
End Select

'färben:
CC.Range.Shading.ForegroundPatternColor = farbe
End Sub
Die Farbe wechselt, sobald das Steuerelement wieder verlassen wird.

Ich hab aber faulheitshalber nur die Inhaltssteuerelemente in der Prioritätenspalte der ersten Tabelle zurechtgemacht. Zum Erweitern musst du nur anderen Kombinationsfelder mit den Tags versehen und die Einträge korrigieren.
Angehängte Dateien
Dateityp: docm ausgeheckt171013_1.docm (170,6 KB, 1x aufgerufen)

__________________

Gruß
Gerhard
Gerhard H ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 16.10.2017, 12:08   #13
Ausgeheckt
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Viel Dank für den Support!

Ich habe noch ein paar Anpassungen vorgenommen- da es sich um ein Formular handelt.

Die Farbgebung wird auf die betroffene Zelle angewendet und der Dokumentenschutz (Formular) wird dazu vorher aufgehoben und wieder gesetzt.

Ebenso habe ich es mit TRIM umgesetzt, da ich die Zelle wieder weiß bekommen möchte wenn kein Inhalt vorhanden ist.
Um das Listfeld in einer definierten (ca.) Breite habe möchte - auch wenn keine Text (Priorisierung) ausgewählt wird habe ich es mit Leerzeichen gefüllt
Aber um mir die exakte Nacharbeit zu sparen .-) kommt mir die TRIM Funktion zur Hilfe.


Private Sub Document_ContentControlOnExit(ByVal CC As ContentControl, Cancel As Boolean)
Dim farbe As Long
Call DocumentUnprotect
'nur bei ContentControls anspringen, deren Tag "prio" lautet:
If CC.Tag <> "prio" Then Exit Sub

'Farben festlegen:
Select Case Trim(CC.Range.Text)

Case Is = "schnellstmöglich"
farbe = 255 'rot
Case Is = "zeitnah"
farbe = 26367 'orange
Case Is = "langfristig"
farbe = 39423 'hell-orange
Case Is = "informativ"
farbe = 65535 'gelb
Case Else
farbe = 16777215 'weiß
End Select

'färben:
'CC.Range.Shading.ForegroundPatternColor = farbe
CC.Range.Cells.Shading.ForegroundPatternColor = farbe
Call DocumentProtect
End Sub
Ausgeheckt ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 17.10.2017, 10:17   #14
Ausgeheckt
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard Formular entsprechend der angezeigten Textmarken in ein neues WORD Dokment speichern

Hallo zusammen,

zum finalen Abschluss suche ich nach einer Lösung. mit der ich aus dem Formular (600 Seiten) entsprechend meiner ausgewählten Punkte (Textmarken & Standardtexte) ein minimiertes Formular speichere (.docx) um so das Word beim ausfüllen nicht zu quälen :-)

Im Anhang ein Testdokument welches minimiert werden kann von den 3 Seiten zum Beispiel nur ein Dokument erzeugen wenn die erste Auswertung erzeugt wurde.

mit save as habe ich es nicht hinbekommen und wenn ich es exportiere bleiben alle Textmarken und Bereich erhalten, d.h. das Dokument bleibt so groß wie es ist.

Kann mir jemand einen Ansatz liefern?
Angehängte Dateien
Dateityp: docm ausgeheckt171017_1.docm (103,5 KB, 1x aufgerufen)
Ausgeheckt ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 17.10.2017, 11:10   #15
Gerhard H
MOF Guru
MOF Guru
Standard

Hallo ausgeheckt,

abgesehn davon, dass dein Testdokument nur eine Seite statt der versprochenen 3 hat, was die Interpretation deines Vorhabens erschwert: Ich hab keine Ahnung, was du meinst. Es könnte sein, dass du meinst: Du möchtest alle ausgeblendeten Textstellen aus dem Dokument raus haben. Das ginge einfach:
Code:

Sub schrumpfs()
 With ActiveDocument.Range.Find
    .Font.Hidden = True
    .Replacement.Text = ""
    .Execute Replace:=wdReplaceAll
End With

'Activedocument.Saveas2.......
End Sub
Allerdings geht dieser Vorschlag davon aus, dass dein Originaldokument eine Dokument-Vorlage (*.dotm) ist. Ansonsten wäre es mir zu gefährlich, im Originaldokument rumzulöschen.

Falls meine Interpretation in die Irre geht, lass es uns wissen.

__________________

Gruß
Gerhard
Gerhard H ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:53 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

Copyright ©2000-2010 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günther Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.
Beachten Sie bitte auch unsere Nutzungsbedingungen.