Thema Datum  Von Nutzer Rating
Antwort
05.01.2016 11:46:41 Matthias Kirchhoff
NotSolved
06.01.2016 11:20:56 Gast6735
NotSolved
06.01.2016 21:50:53 Gast64143
NotSolved
07.01.2016 22:49:51 Gast28465
NotSolved
08.01.2016 08:32:55 Raffi95
NotSolved
Blau Word VBA/UserForm für Bedienungsanleitung
08.01.2016 20:29:04 Gast49284
Solved
11.01.2016 18:59:33 Matthias
NotSolved
11.01.2016 22:34:24 Gast32054
NotSolved

Ansicht des Beitrags:
Von:
Gast49284
Datum:
08.01.2016 20:29:04
Views:
1889
Rating: Antwort:
 Nein
Thema:
Word VBA/UserForm für Bedienungsanleitung

Hallo Matthias!

Also hier mal eine Version. Ich lese dabei aber alle Kapitel aus. Also 1. Kapitel, 1.1 Kapitel usw. Falls du nur die ersten (Hauptkapitel) und nicht die Unterkapitel brauchst, müsste man nochmal was ändern. Um das Ganze anwendefreundlich zu gestalten. Einfach ein neues Dokument erstellen. Dort einen BUtton erstellen und den Code zuweisen.

1
2
3
Private Sub CommandButton1_Click()
UserForm1.Show
End Sub

Dann eine Userform einfügen und den folgen Code bei der Userform einfügen.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
Option Explicit
Dim kapitel()
Private WithEvents beenden As MSForms.CommandButton
Private WithEvents löschen As MSForms.CommandButton
Dim doc
 
Private Sub UserForm_Initialize()
Dim dlg As Dialog
 
Dim kap
Dim i As Long
Dim name As String
Dim neubox
Dim neubutton
 
name = ActiveDocument.name
Set dlg = Dialogs(wdDialogFileOpen)
With dlg
If .Display = 0 Then
    MsgBox "Die Auswahl wurde abgebrochen, das Programm wird beendet!", , "Abbruch Dateiauswahl"
    End
Else
    Set doc = Documents.Open(FileName:=dlg.name)
End If
End With
 
ReDim kapitel(3, 0)
kapitel(0, 0) = 0
 
For Each kap In doc.Paragraphs
    If kap.OutlineLevel < 10 And kap.Range.Text <> Chr(13) Then
        
            kapitel(0, 0) = kapitel(0, 0) + 1
            ReDim Preserve kapitel(3, kapitel(0, 0))
            kapitel(0, kapitel(0, 0)) = Replace(kap.Range.Text, Chr(12), "")
            kapitel(1, kapitel(0, 0)) = kap.Range.Start
         
    End If
Next kap
 
Me.Caption = "Auswahl der Kapitel"
Me.Height = kapitel(0, 0) * 25 + 100
Me.Width = 500
Me.ScrollBars = fmScrollBarsVertical
Me.ScrollHeight = kapitel(0, 0) * 25 + 300
 
 
 
Set neubox = Me.Controls.Add("forms.Label.1")
neubox.Height = 40
neubox.Width = 400
neubox.Top = 10
neubox.Left = 20
neubox.Caption = "Bitte wählen Sie die Dateien aus, die erhalten bleiben sollen!"
Set neubox = Nothing
 
For i = 1 To kapitel(0, 0)
    Set neubox = Me.Controls.Add("forms.CheckBox.1")
    neubox.Height = 40
    neubox.Top = i * 25
    neubox.Left = 20
    neubox.Caption = kapitel(0, i)
    neubox.Font.Size = 8
    Set neubox = Nothing
Next i
 
For i = 1 To 2
Set neubutton = Controls.Add("Forms.CommandButton.1", , True)
    With neubutton
   
      Select Case i
        Case 1
            .Caption = "löschen"
            .Left = 75
            .Top = kapitel(0, 0) * 25 + 40
            .Width = 100
            .Height = 20
          Set löschen = neubutton
        Case 2
            .Caption = "beenden"
            .Left = 325
            .Top = kapitel(0, 0) * 25 + 40
            .Width = 100
            .Height = 20
        Set beenden = neubutton
         
      End Select
    End With
Next i
 
End Sub
 
Private Sub löschen_click()
Dim i As Long
Dim stelle As Range
 
For i = 1 To kapitel(0, 0)
 If Me.Controls("CheckBox" & i).Value = True Then kapitel(3, i) = "x"
   
Next i
 
For i = kapitel(0, 0) To 1 Step -1
 If kapitel(3, i) = "x" Then
    If i = kapitel(0, 0) Then
        doc.Range(kapitel(1, i), kapitel(1, i)).Select
    Else
        doc.Range(kapitel(1, i), kapitel(1, i + 1)).Select
    End If
    Set stelle = Selection.Bookmarks("\HeadingLevel").Range
    While Left(stelle.Text, 1) = Chr(12)
        stelle.SetRange stelle.Start + 1, stelle.End
    Wend
    While Right(stelle.Text, 1) = Chr(12)
        stelle.SetRange stelle.Start, stelle.End - 1
    Wend
    stelle.Select
   
    Selection.Delete
   
 End If
Next i
 
Unload UserForm1
 
End Sub
 
Private Sub beenden_click()
Unload UserForm1
End Sub

Der Anwender kann sich dann seine Datei aussuchen, die geöffnet wird. Die Kapitel werden angezeigt. Falls es zu viele sind, muss man scrollen. Die mit dem Haken werden gelöscht. Danach bleibt die Datei noch offen und man kann schauen und ggf. speichern. Da wir noch am Testen sind :-) wollte ich nicht einfach was speichern. Nicht, dass die Quelldatei dann futsch und die Daten (wichtige) weg sind. Kann man am Ende noch einfügen.

Man könnte es auch mit einer Listbox machen, dann wird es ggf. nicht zu lang. Ich bin übrigens davon ausgegangen, dass die Kapitel autm. eingefügt werden. Sollte es keine Kapitel in dem Sinne geben (also nur Überschriften unformatiert) müssen wir das anders machen. Dann würde ich die Seite des Inhaltsverzeichnisses auslesen lassen. Aber schauen wir mal wie es funktioniert.

Viele Grüße

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
05.01.2016 11:46:41 Matthias Kirchhoff
NotSolved
06.01.2016 11:20:56 Gast6735
NotSolved
06.01.2016 21:50:53 Gast64143
NotSolved
07.01.2016 22:49:51 Gast28465
NotSolved
08.01.2016 08:32:55 Raffi95
NotSolved
Blau Word VBA/UserForm für Bedienungsanleitung
08.01.2016 20:29:04 Gast49284
Solved
11.01.2016 18:59:33 Matthias
NotSolved
11.01.2016 22:34:24 Gast32054
NotSolved