GELÖST Vier vermutlich einfach zu lösende Probleme (VBA)

Moderator: ModerationP

GELÖST Vier vermutlich einfach zu lösende Probleme (VBA)

Beitragvon d'r Bastler » 22. Mai 2022, 14:17

Moin zusammen,

Betreff geändert nachdem ich mich Back to my Roots gemacht habe und das Ganze per Userform lösen konnte.
Für Anregungen, wie das auch ohne ISF lösbar ist, bin ich dennoch dankbar.

Schönen Abend noch.

d'r Bastler


Ziel meiner Bastelei ist es, die Kopfzeile eines neuen Dokuments aus einer Combobox zu füllen. Anschließend soll die Datei unter ihrer Überschrift neu abgespeichert werden. Letzteres ist erledigt. In meiner Ausgangsdatei habe ich drei Textmarken: head, cbx und text, die ich für den oben beschriebenen ersten Schritt benötige. Die Probleme damit habe ich im Code beschrieben '>>>> Fehler ....

Code: Alles auswählen
Option Explicit

Private Sub Document_Open()
    With ActiveDocument
        .Bookmarks("cbx").Select
        Selection.InlineShapes.AddOLEControl ClassType:="Forms.ComboBox.1"
    End With
    FillCBX '>>> Problem#1 Fehlermeldung bei Aufruf von hier: #438 Objekt unterstützt diese Eigenschaft nicht!?
End Sub
Sub FillCBX() '>>> Fehlermeldung bei Aufruf von hier: Keine - läuft sauber durch?!
Dim aItems 'Array
Dim i As Integer
aItems = Array("eins", "zwei", "drei", "vier", "fünf")

        For i = 0 To UBound(aItems)
            ActiveDocument.ComboBox1.AddItem aItems(i)
        Next i
End Sub

Private Sub Combobox1_Change()
    With ActiveDocument
        .Bookmarks("head").Select
        Selection.Text = .ComboBox1.Value
'>>> Problem #2 Wie kann ich den bisherigen Text der Textmarke bei Combobox_Change erstzen
'>>> Problem #3 Nach dem Einfügen des Textes in die Kopfzeile wechselt Word in den Entwurfsmodus.
'>>> Das ließe sich rückgangig machen, aber iwe kann ich es verhindern?
        .Bookmarks("text").Select
    End With
End Sub

'>>> Problem#4 Wie kann ich die ComboBox per VBA (z.B. mit dem Change-Event löschen?


Hat jemand Zeit und Lust mir auf die Sprünge zu helfen?

Lieben Dank!
Zuletzt geändert von d'r Bastler am 22. Mai 2022, 17:46, insgesamt 1-mal geändert.
d'r Bastler

Selbst Heiden glauben an min. 10% Mystik in der EDV! Gilt auch für mein Win 10 pro & Office 2019, Win 11 pro & Office 2021 und alle VBAsteleien ... Aktueller Trollfutter-Vorrat: NULL
Benutzeravatar
d'r Bastler
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 674
Registriert: 23. Jan 2021, 22:36
Wohnort: VBAsteln makes the world go around

Re: Vier vermutlich einfach zu lösende Probleme (VBA)

Beitragvon d'r Bastler » 22. Mai 2022, 16:25

Moin nochmal!

Hier eine Step-by-Step, die beschreibt, was ich eigentlich vorhabe. Vielleicht gibt es ja ein einfacheres Konzept.

Beim Öffnen der Datei "Opener.docm"
- Die Datei enthält vier Textmarken cbx, head, file, text
- Erstellen einer ActiceX-Combobox an der Textmarke cbx (ok)
- Füllen der Combobox aus einem Array aItems (Problem #0 bei Aufruf aus Sub Document_Open Fehler 438 // mit Nachhilfe = manuellem Aufruf der Sub Fill_CBX ok)
- Combobox_Change: Übertragen des Combobox.Value sItem (as string) an Bookmark head (ok)
- - Falls dort bereits ein Wert vorhanden, dann überschreiben (Problem #1)
- Vermeiden der Ansicht Entwurf, Erzwingen der Ansicht Druck (Problem #2)
- Weiter zum Bookmark file (ok)
- Der dort eingetippte sFile (as string) dient als Dateinname für den nächsten Schritt
- Markieren von sFile als Parameter für die Sub MakeFile(sFile as string)
- MakeFile erstellt eine neue Datei sFile.docx im Verzeichnis sItem (konnte ich bereits realisieren) aber ohne Combobox (Problem #3)
- Schließen von Opener.docm ohne Speichern (ok)
- Aktivieren von /sItem/sFile.docx (ok)

Das Ganze dient der Erstellung von Bedienungsanleitungen in unterschiedlichen Kategorien als Druckseite.

Lieben Dank für Eure Vorschläge!
d'r Bastler

Selbst Heiden glauben an min. 10% Mystik in der EDV! Gilt auch für mein Win 10 pro & Office 2019, Win 11 pro & Office 2021 und alle VBAsteleien ... Aktueller Trollfutter-Vorrat: NULL
Benutzeravatar
d'r Bastler
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 674
Registriert: 23. Jan 2021, 22:36
Wohnort: VBAsteln makes the world go around

Re: GELÖST Vier vermutlich einfach zu lösende Probleme (VBA)

Beitragvon theoS » 22. Mai 2022, 18:46

Für Anregungen, wie das auch ohne ISF lösbar ist, bin ich dennoch dankbar.

so ganz habe ich dein Problem nicht verstanden.
Meinst du:
Anlegen eines Dokuments aus einer Vorlage (.dotm)?
In der Vorlage sollen an bestimmten Stellen (Bookmarks) Comboboxen eingefügt werden statt der Bookmarks?
Diese Comboboxen sollen gefüllt werden mit einem von dir im Code fest verdrahteten Array?
Aus den Comboboxen möchtest du den Text aufrufbar machen, der ausgewählte Text soll dann die Box ersetzen?

Hab ich das richtig interpretiert?

Frage: Hast du dir schon mal das Autotextfeld angeschaut?
Bzw. die "neue" Feldfunktion die Autotextbausteine einfügt?
theo s.
Benutzeravatar
theoS
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 5937
Registriert: 19. Apr 2008, 00:14

Re: GELÖST Vier vermutlich einfach zu lösende Probleme (VBA)

Beitragvon d'r Bastler » 22. Mai 2022, 20:12

Moin Theo!
Deine Fragen der Reihe nach:

aus .dotm? Nein. aus .docm
cbxen einfügen? Jein - nur eine CBX
Array? - Yep
Box ersetzen? - Nein - nach Auswahl + Neuanlage löschen.

Zum letzten ausführlicher: Es soll im Verzeichnis namens cbx.value eine neue .docx angelegt werden, aber eben ohne die cbx aus dem .docm. Der Verzeichnisname soll auch als Kopfzeile in der .docx erscheinen und noch solange änderbar sein, solange nicht die neue Datei angelegt ist.

Deine letzte Frage: Beides mal - Nein. Auf die Idee Autotext habe ich verzichtet, weil ich gerne eine optisch sofort erkennbare Option gesucht habe. Autotext mit F3 scheint mir für meine User zu versteckt. Aber auch hier lasse ich mich gerne eines Besseren belehren.

Ganz lieben Dank für Deine Mühe!
d'r Bastler

Selbst Heiden glauben an min. 10% Mystik in der EDV! Gilt auch für mein Win 10 pro & Office 2019, Win 11 pro & Office 2021 und alle VBAsteleien ... Aktueller Trollfutter-Vorrat: NULL
Benutzeravatar
d'r Bastler
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 674
Registriert: 23. Jan 2021, 22:36
Wohnort: VBAsteln makes the world go around

Re: GELÖST Vier vermutlich einfach zu lösende Probleme (VBA)

Beitragvon theoS » 22. Mai 2022, 21:37

Also, ein Verzeichnisname ohne Dateinamen?
Ich nehme da immer das Feld her das mir den vollständigen Pfad incl. Namen des gespeicherten Dokuments anzeigt.
Möglich, dass du so was nachbauen willst?
Welche Version verwendest du/ihr?
Bei den Versionen nach 2007 gibt es ein sehr schönes Auswahlfeld für Textbausteine im Menü. Das kann man sich aber auch relativ bequem als "Feld" im Text selbst anlegen.
Diese "Felder" kann man auch so einstellen dass sie sich löschen nach Bearbeitung, wobei das meiner Meinung nach nicht mal nötig ist.
Und, ist dir das Konzept einer *.dotm bekannt?
theo s.
Benutzeravatar
theoS
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 5937
Registriert: 19. Apr 2008, 00:14

Re: GELÖST Vier vermutlich einfach zu lösende Probleme (VBA)

Beitragvon knobbi38 » 22. Mai 2022, 22:05

Hallo d'r Bastler,

auch mit deinen Erläuterungen habe ich den Zweck für dein Vorhaben nicht ganz verstanden, allerdings fand ich dein Problem #0 recht interessant, weil ich das mit Word so auch noch nie gemacht habe. Geht natürlich wieder ganz anders als in allen anderen Office Anwendungen. :?

Hier mal ein Beispiel, wie man zur Laufzeit eine ActiveX Combobox anlegen und mit einer Eventklasse verbinden kann. Den Code für das Zerstören der Eventklasse und des Objekts überlasse ich jetzt mal dir.

Gruß Ulrich
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
knobbi38
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4229
Registriert: 02. Jul 2015, 14:23

Re: GELÖST Vier vermutlich einfach zu lösende Probleme (VBA)

Beitragvon d'r Bastler » 23. Mai 2022, 12:13

Moin, Ihr beiden!
Erst mal lieben Dank, dass Ihr trotz gelöst immer noch dabei seid!

@knobbi: als ich Deinen Code aufgemacht habe, war ich erst einmal leicht entsetzt, was für ein riesen Aufwand notwendig ist, ein Problem zu lösen, das eigentlich MS lösen müsste. Das Einfügen einer ActiveX-CBX und ihr Befüllen darf auch vom Programmierer keine Klassen-Programmierung verlangen. Ohne bisher irgendwelche Ambitionen gehabt zu haben, mich in diese Königsklasse vorzuwagen (getreu Schuster - bleib bei ....) hast Du mir mit Deiner Datei eine Tür aufgeschubst, dessen Hinterzimmer ich mal zaghaft (allerdings in XL, da bin wenigstens ein bisschen zu Fuß, in WD hinke ich bestenfalls ;-)) erforschen werde. Konsequenz: Armes Forum - da werden noch viele Fragen kommen :mrgreen: Vielen Dank!

@Theo: Deine Frage nach .dotM ist (zu meiner Schande muss ich es gestehen) mehr als berechtigt. Alle meine Versuche seit Word 4.0 mir für einen neuen PC, eine neue Office-Version (meine aktuellen s. Signatur) eine konsistente Vorlagen-Sammlung mit Textformaten, ShortKeys für internationale Sonderzeichen und Ansichten zu erstellen, haben mir derart den Nerv geraubt, dass ich dazu übergegangen bin, sie jeweils neu zu erstellen. Selbst in Word ist mein VBA inzwischen schneller, als mich mit diesen vermaledeiten Vorlagen rumzuschlagen (= Kriegsfuß mit Käsesocken) Wie gesagt, konnte ich das Thema mit einer USF ohne jegliche unlösbare Fehlermeldung inzwischen zum Laufen bringen.

Thema Dateinamen: Ausgehend von einer Datei, die an beliebigem Ort auf beliebig vielen PCs liegen kann, verwende ich inszwischen konsequent ThisDocument/Workbook. Dann lege ich unterhalb des MasterDokuments aus dem Projekt die Unterordner (z.T. auf einemServer) an. Diese werden dann bei der Erstellung eines neuen Dokuments über die CBX ausgewählt. Der Dateinamen ergibt sich (Word-Style) aus der Überschrift 1 bzw. dem Titel des Dokuments, bei Bedarf mit Anlage-Datum im Dateinamen. Dadurch reduziert sich der Arbeitsablauf auf die Eingabe des Titels, die Auswahl des Unterodners und Klick auf Make Document und das neue Dokument liegt aufgeräumt in seinem Schächtelchen (Ordner).

Bisher kabe ich die Dokumente per SaveAs nach ihrem Format (.doc, .pdf, .txt, rtf) sortiert und mit Prefixes (IN-Rechnung(Invoice), BF-Brief, RE-Antwort, RM-Mahnung, usw.) im Dateinamen kategorisiert. Im neuen Projekt sind es nach Themenbereichen sortierte Dokumente, die später auf Abruf in ein Dokument zusammengeführt werden und dann als PDF zum Drucker gehen sollen. Jeder Ordner stellt später also quasi ein Kapitel des Druckwerks dar, jedes Dokument einen Abschnitt.

Um in allen Teildokumenten das gleiche Erscheinungsbild zu haben nutze ich die Normal.dotm. Das schaffe ich dann immerhin noch ;-)

Schöne Grüße und lieben Dank!

p.s. Am aktuellen Projekt werde ich aus Zeitgründen die nächsten Tage nur wenig weiterbasteln können, stelle es nach Fertigstellung aber dann hier ein. Vielleicht kann jemand mein Gebastel ja brauchen.
d'r Bastler

Selbst Heiden glauben an min. 10% Mystik in der EDV! Gilt auch für mein Win 10 pro & Office 2019, Win 11 pro & Office 2021 und alle VBAsteleien ... Aktueller Trollfutter-Vorrat: NULL
Benutzeravatar
d'r Bastler
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 674
Registriert: 23. Jan 2021, 22:36
Wohnort: VBAsteln makes the world go around

Re: GELÖST Vier vermutlich einfach zu lösende Probleme (VBA)

Beitragvon theoS » 23. Mai 2022, 22:32

Du sagst ja selbst, du hättest gerne eine andere Lösung.
Dein Code läuft übrigens wunderbar, wenn man ihn in ein gewöhnliches Modul kopiert und dort startet.
Schwupp hast du eine Combox, gefüllt mit deinen Werten.
Bei mir sieht das dann so aus:
Code: Alles auswählen
Public dd1 As Document

Sub su_setzControl()
 Set dd1 = ActiveDocument
    With dd1
        .Bookmarks("cbx").Range.InlineShapes.AddOLEControl ClassType:="Forms.ComboBox.1"
    End With
    FillCBX 'kein Problem wenn sich der Code im Modul befindet
End Sub


Sub FillCBX()
'auch kein Problem wenn sich der Code im Modul befindet.
Set dd1 = ActiveDocument
Dim aItems 'Array
Dim i As Integer
aItems = Array("eins", "zwei", "drei", "vier", "fünf")

        For i = 0 To UBound(aItems)
            dd1.ComboBox1.AddItem aItems(i)
        Next i
End Sub


Warum sich der Code aber nicht aus einer Prozedur Document_Open() öffnen lässt? Vermute mal dass das deswegen ist, weil ThisDocument ja eine Klasse ist.

In ThisDocument muss allerdings stehen bleiben der Code für Combobox_Change.
hier habe ich mal deinen Code so verändert, dass er den Text der Bookmark ersetzt.
Bookmarks haben allerdings die schlechte Angewohnheit dabei zu verschwinden, daher setzt man sie anschließend wieder neu falls man die noch mal braucht.
Code: Alles auswählen
Private Sub Combobox1_Change()
Dim rngBM As Range
Set rngBM = Me.Bookmarks("head").Range
rngBM.Text = Me.ComboBox1.Text
Me.Bookmarks.Add Name:="head", Range:=rngBM
Me.StoryRanges(wdPrimaryHeaderStory).Text = Me.ComboBox1.Text 'geht nur, wenn die Kopfzeile schon da ist
End Sub

Da das Change-Event ja nur in ThisDocument ablaufen kann, kannst du dir hier Tipparbeit sparen.

'>>> Problem #3 Nach dem Einfügen des Textes in die Kopfzeile wechselt Word in den Entwurfsmodus.

Das liegt daran dass du mit dem Select arbeitest. Hier musst du lediglich den StoryRange der Kopfzeile ansprechen, dann geht das auch ohne.
Zum Einfügen einer Kopfzeile dann z.b. bei der su_setzControl() kannst du sowas machen:
Code: Alles auswählen
dd1.Sections(1).Headers(wdHeaderFooterPrimary).Range.Text = "x"

mit der Combobox_change dann das:
Code: Alles auswählen
Me.StoryRanges(wdPrimaryHeaderStory).Text = Me.ComboBox1.Text 'geht nur, wenn die Kopfzeile schon da ist

Das was du da mit deinen Ordnern und einzelnen Dokumenten machst, ist ja schon fast ein Zentraldokument :)
theo s.
Benutzeravatar
theoS
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 5937
Registriert: 19. Apr 2008, 00:14

Re: GELÖST Vier vermutlich einfach zu lösende Probleme (VBA)

Beitragvon d'r Bastler » 23. Mai 2022, 23:26

Theo!!!!
Die Netiquette erklärte in ihren frühen Jahren mal, dass viele Ausrufezeichen und große Schrift Brüllen bedeuten! Diesem Wink folge ich oben. Aber als Lobgebrüll!

Deine Erläuterungen sind Klasse! Damit sind quasi alle Probleme meiner ursprünglichen Version ohne USF trickreich gelöst und sogar auch von mir verstanden. Leider kann ich sie aus Zeitgründen erst nächste Woche zur Übung detailliert ausprobieren, werde das aber mit Freude tun. Dann ist hoffentlich auch meine USF-Lösung bald komplett.

Stichwort Zentraldokument: Stimmt, Profis machen das so ... ich kanns nicht, schäm ...

Liebe Grüße!
d'r Bastler

Selbst Heiden glauben an min. 10% Mystik in der EDV! Gilt auch für mein Win 10 pro & Office 2019, Win 11 pro & Office 2021 und alle VBAsteleien ... Aktueller Trollfutter-Vorrat: NULL
Benutzeravatar
d'r Bastler
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 674
Registriert: 23. Jan 2021, 22:36
Wohnort: VBAsteln makes the world go around

Re: GELÖST Vier vermutlich einfach zu lösende Probleme (VBA)

Beitragvon theoS » 24. Mai 2022, 15:49

Es ist in der Tat interssant, dass man das Makro nicht mit einer Document_Open() ausführen kann. Dennoch gibt es eine Möglichkeit das beim Öffnen des Dokuments auszuführen auch wenn das Makro in einem Modul steht. Mit AutoOpen() im Namen wird das auch beim Öffnen ausgeführt. Allerdings weiß ich jetzt nicht ob das nur bei mir klappt, das müsste auszuprobieren sein ob man da nicht dem VBA-ProjektObjektModell vertrauen muss dazu. Bei mir gings totzdem. :)
Code: Alles auswählen
Public dd1 As Document


Sub AutoOpen()
 Set dd1 = ActiveDocument
    With dd1
        .Bookmarks("cbx").Range.InlineShapes.AddOLEControl ClassType:="Forms.ComboBox.1"
    End With
   
    FillCBX  'kein Problem wenn sich der Code im Modul befindet
dd1.Sections(1).Headers(wdHeaderFooterPrimary).Range.Text = "x"
End Sub


Sub FillCBX()
'auch kein Problem wenn sich der Code im Modul befindet.
Set dd1 = ActiveDocument
Dim aItems 'Array
Dim i As Integer
aItems = Array("eins", "zwei", "drei", "vier", "fünf")

        For i = 0 To UBound(aItems)
            dd1.ComboBox1.AddItem aItems(i)
        Next i

End Sub

nochmal den Code in "ThisDocument":
Code: Alles auswählen
Private Sub Combobox1_Change()
Dim rngBM As Range
Set rngBM = Me.Bookmarks("head").Range
rngBM.Text = Me.ComboBox1.Text
Me.Bookmarks.Add Name:="head", Range:=rngBM
Me.StoryRanges(wdPrimaryHeaderStory).Text = Me.ComboBox1.Text 'geht nur, wenn die Kopfzeile schon da ist
End Sub

Noch ein Hinweis: Die Textmarke "head" die ich hier verwende ist eine "geschlossene", sprich ich habe ein Wort markiert als ich die erstellt hab. Man erkennt sie auch an den beiden Klammern.
Nur mit der würde das so funktioneren.
theo s.
Benutzeravatar
theoS
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 5937
Registriert: 19. Apr 2008, 00:14

Re: GELÖST Vier vermutlich einfach zu lösende Probleme (VBA)

Beitragvon d'r Bastler » 24. Mai 2022, 20:36

Moin Theo!

Wie gesagt, zum Testen werde ich erst nächste Woche Zeit haben, bin und bleibe neugierig und vielen Dank an Dich!!

Aber immerhin ist mein Zentral(friedhofs)-Dokument schon betriebsbereit! Der Code ist inzwischen beeindruckend kurz (noch vor einem Jahr hätte ich einen Roman dafür benötigt, um den Code später selbst wieder zu verstehen...). In der Userform sind nur zwei Properties abweichend gesetzt: ShowModal = false (was aber nicht sein muss) und der Style der cbxFolder hat den Wert 2, der die manuelle Ergänzung der Ordnerliste verhindert.

Im Anhang liegt ein gezippter Ordner mit einem ReadMeFirst.txt, den ich zum Verständnis meiner Bastelei wärmsten empfehle.

Und hier noch der Code der Userform zur Schnellansicht:
Code: Alles auswählen
Option Explicit
Public sPath As String

Private Sub UserForm_Initialize()
Dim i As Integer, f As Integer
Dim aChapter ' Array

sPath = ThisDocument.Path & "\"
aChapter = Array("SubFolder_A", "SubFolder_B", "SubFolder_C", "SubFolder_D")

cbxFolder.List = aChapter

For i = 0 To UBound(aChapter)
    If Dir$(sPath & aChapter(i), vbDirectory) = "" Then
        MkDir sPath & aChapter(i)
        f = f + 1
    End If
Next

If f > 0 Then
    MsgBox f & " neue Ordner angelegt!", , "Anzahl " & i
End If

lblName.Caption = "Bitte beachten: Titel = Dateiname!" & vbNewLine & "Keine unzulässigen Zeichen!"

End Sub

Private Sub cbxFolder_Change()
Dim sText As String
Dim rng As Range

'' Bookmark head
If ActiveDocument.Bookmarks.Exists("head") Then
    Set rng = ActiveDocument.Bookmarks("head").Range
    rng.Text = cbxFolder.Value
Else
    MsgBox "Bookmark head?"
End If

sText = cbxFolder.Text
    With ActiveDocument
        .Bookmarks.Add Range:=rng, Name:="head"
    End With

End Sub

Private Sub cmdMakeFile_Click()
Dim sDocName As String, sDocPath As String, sDocFolder As String
Dim rng As Range

'' Titel vorhanden?
sDocName = tbxTitel.Text
If Len(sDocName) < 2 Then
    MsgBox "Bitte Titel eingeben!", , "Hinweis"
    Exit Sub
End If

''Kapitel ausgewählt?
sDocFolder = cbxFolder.Value
If cbxFolder.ListIndex < 0 Then
    MsgBox "Bitte Kapitel auswählen!", , "Hinweis"
        Exit Sub
End If

'' Bookmark title
If ActiveDocument.Bookmarks.Exists("title") Then
    Set rng = ActiveDocument.Bookmarks("title").Range
    rng.Text = sDocName
Else
    MsgBox "Bookmark title?"
End If

sDocPath = ThisDocument.Path & "\" & sDocFolder & "\" & sDocName & ".docx"
ActiveDocument.SaveAs FileName:=sDocPath, FileFormat:=wdFormatDocumentDefault
Unload Me
MsgBox sDocPath, , "Neue Datei angelegt!"

End Sub


Viel Spaß damit!
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
d'r Bastler

Selbst Heiden glauben an min. 10% Mystik in der EDV! Gilt auch für mein Win 10 pro & Office 2019, Win 11 pro & Office 2021 und alle VBAsteleien ... Aktueller Trollfutter-Vorrat: NULL
Benutzeravatar
d'r Bastler
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 674
Registriert: 23. Jan 2021, 22:36
Wohnort: VBAsteln makes the world go around


Zurück zu Word Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 13 Gäste