Auslesen einer Textdatei in VB

Hallo zusammen
Ich möchte sämtliche benutzerdefinierten Dialogfelder bzw. Informationen/ Warnungen in eine Externe Textdatei schreiben (um eine bessere Administration zu erreichen) und diese über einen Schlüssel per VBA (Excel)-Code aufrufen. Wie kann ich das umsetzen?

Gruss salvo

Hallo, Salvo!

Ich möchte sämtliche benutzerdefinierten Dialogfelder bzw.
Informationen/ Warnungen in eine Externe Textdatei schreiben
(um eine bessere Administration zu erreichen) und diese über
einen Schlüssel per VBA (Excel)-Code aufrufen. Wie kann ich
das umsetzen?

Ist die Frage, ob es eine Textdatei sein soll, oder ob auch Excel oder Access-Tabelle i. O. (zwecks vielleicht besserer/luxuriöserer Administration) wären? Bei einer Textdatei (oder allgemein) ist die Frage der Performance: Liest Du die Datei immer aus, wenn Du eine Msgbox anzeigen lassen willst? Das könnte relativ lange dauern. Oder liest Du sie ein Mal beim Programmstart aus und greifst dann darauf zu? Wäre besser…

Ad 1 würde ich diese Informationen sowieso in eine Ressourcendatei packen, die zu Deinem Programm hinzukompiliert wird. Aber wenn es denn eine Textdatei sein soll, würde ich folgendermaßen vorgehen:

  1. Speichern der Datei mit irgendeinem definierten Separator, zuerst lfd. Nummer (den auch als Schlüssel beim Aufruf verwenden), dann Meldungstext, dann Meldungstitel, ggf. auch Buttons, halt alle Parameter, die Msgbox entgegennimmt und die Du verwenden willst.

  2. Einen entsprechenden Typen (alle Parameter) anlegen und in ein globales Array mit Index der lfd. Nummer von 1. beim Programmstart einlesen (dazu zunächst das Array mit () dimensionieren, Datei einmal auslesen und max. Index ermitteln oder diesen in eine eigene Zeile am Anfang ablegen und dann das Array mit ReDim passend dimensionieren).

  3. Da u. U. an den Indizes was passieren könnte (was Du derzeit sicherlich nicht willst, was aber schneller passiert als Dir lieb ist), würde ich entsprechende Konstanten vergeben (z. B. MSG_ALLGEMEINER_FEHLER=123) und diese zum Auslesen verwenden. Wenn Du dann nämlich Deine Textdatei änderst und aus irgendwelchen Gründen die Angaben für Deinen allgemeinen Fehler den Index 1033 bekommt, musst Du nur eine Zeile ändern. Und der Code wird leserlicher.

Wie das Auslesen funktioniert, schaust Du am besten in der Hilfe unter FreeFile und Open dateiname For modus As dateinummer nach.

Gruß, Manfred

Hallo Manfred

Ich möchte sämtliche benutzerdefinierten Dialogfelder bzw.
Informationen/ Warnungen in eine Externe Textdatei schreiben
(um eine bessere Administration zu erreichen) und diese über
einen Schlüssel per VBA (Excel)-Code aufrufen. Wie kann ich
das umsetzen?

Ist die Frage, ob es eine Textdatei sein soll, oder ob auch
Excel oder Access-Tabelle i. O. (zwecks vielleicht
besserer/luxuriöserer Administration) wären? Bei einer
Textdatei (oder allgemein) ist die Frage der Performance:
Liest Du die Datei immer aus, wenn Du eine Msgbox anzeigen
lassen willst? Das könnte relativ lange dauern. Oder liest Du
sie ein Mal beim Programmstart aus und greifst dann darauf zu?
Wäre besser…

Wie kann ich das umsetzen? Ich meine, msgbox soll nicht jedesmal die datei auslesen sondern dies sollte schon bei programmstart passieren. wie funktioniert das im einzelnen?

Ad 1 würde ich diese Informationen sowieso in eine
Ressourcendatei packen, die zu Deinem Programm hinzukompiliert
wird. Aber wenn es denn eine Textdatei sein soll, würde ich
folgendermaßen vorgehen:

Wie ist eine solche Ressourcendatei aufgebaut und wie erzeug ich die?

  1. Speichern der Datei mit irgendeinem definierten Separator,
    zuerst lfd. Nummer (den auch als Schlüssel beim Aufruf
    verwenden), dann Meldungstext, dann Meldungstitel, ggf. auch
    Buttons, halt alle Parameter, die Msgbox entgegennimmt und die
    Du verwenden willst.

  2. Einen entsprechenden Typen (alle Parameter) anlegen und in
    ein globales Array mit Index der lfd. Nummer von 1. beim
    Programmstart einlesen (dazu zunächst das Array mit ()
    dimensionieren, Datei einmal auslesen und max. Index ermitteln
    oder diesen in eine eigene Zeile am Anfang ablegen und dann
    das Array mit ReDim passend dimensionieren).

  3. Da u. U. an den Indizes was passieren könnte (was Du
    derzeit sicherlich nicht willst, was aber schneller passiert
    als Dir lieb ist), würde ich entsprechende Konstanten vergeben
    (z. B. MSG_ALLGEMEINER_FEHLER=123) und diese zum Auslesen
    verwenden. Wenn Du dann nämlich Deine Textdatei änderst und
    aus irgendwelchen Gründen die Angaben für Deinen allgemeinen
    Fehler den Index 1033 bekommt, musst Du nur eine Zeile ändern.
    Und der Code wird leserlicher.

Wie das Auslesen funktioniert, schaust Du am besten in der
Hilfe unter FreeFile und Open dateiname For modus As
dateinummer nach.

Gruß, Manfred

Hallo Salvo,

Hallo Salvo,

da bleiben noch viele Fragen offen.

Bsp. wie schreibst du sie in ein Textfile. Mit der Anweisung Print, dann liest du sie mit line input aus.
Ich selbst würde ein Type anlegen,wenn ich es so machen würde. Dieser Type hat dann eine Feste länge.

Type Dialog
oKButton as boolean 'Soll ein OKButton vorhanden sein?
Cancel as boolean 'Soll ein Abbruch Button vorhanden sein?
Mld as String 'Welche Meldung soll angezeigt werden
Textfeld as Boolean 'Soll ein Textfeld da sein
end Type

Dies kannst du deinen Wünschen anpassen.
Du öffnest dann die Datei im Modus Random und kannst mit dem Befehl Get die Daten auslesen und mit dem Befehl Put die Daten in die Datei schreiben.
Hier stellen sich mir jetzt andere Fragen… Wie willst du die Steuerelemnte auf der Form anordnen? ( Willst du die Positionen auch mit in die Datei schreiben?)
Was willst du machen, wenn der User da daten eingeben kann? Wie möchtest du sie auswerten? Oder sind es nur Msgboxen? ( da ist der eine Befehl aber wesentlich einfacher :wink:

Alternativ würde ich dir vorschlagen… saemtliche Dialoge in dein Programm zu machen und die dann mit dem Befehl DeinDialog.show zu Ansicht bringen.
Alternativ kannst du auch saemtlich dialoge in eine *.Dll packen und die *.dll in dein programm einbinden und bei Bedarf aufrufen :smile:
Wenn du aber dies alles nicht willst und darauf bestehst die Daten in eine Resourcendatei zu packen, dann schau mal hier

http://www.activevb.de/tutorials/tut_dialoge/dialoge…

Hier wird erklärt wier du Dialoge in eine resourcendatei bekommst :smile:

MFG Alex

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

hallo,

Hallo Salvo,

Hallo Manfred

Ich möchte sämtliche benutzerdefinierten Dialogfelder bzw.
Informationen/ Warnungen in eine Externe Textdatei schreiben
(um eine bessere Administration zu erreichen) und diese über
einen Schlüssel per VBA (Excel)-Code aufrufen. Wie kann ich
das umsetzen?

Ist die Frage, ob es eine Textdatei sein soll, oder ob auch
Excel oder Access-Tabelle i. O. (zwecks vielleicht
besserer/luxuriöserer Administration) wären? Bei einer
Textdatei (oder allgemein) ist die Frage der Performance:
Liest Du die Datei immer aus, wenn Du eine Msgbox anzeigen
lassen willst? Das könnte relativ lange dauern. Oder liest Du
sie ein Mal beim Programmstart aus und greifst dann darauf zu?
Wäre besser…

Wie kann ich das umsetzen? Ich meine, msgbox soll nicht
jedesmal die datei auslesen sondern dies sollte schon bei
programmstart passieren. wie funktioniert das im einzelnen?

Ad 1 würde ich diese Informationen sowieso in eine
Ressourcendatei packen, die zu Deinem Programm hinzukompiliert
wird. Aber wenn es denn eine Textdatei sein soll, würde ich
folgendermaßen vorgehen:

Wie ist eine solche Ressourcendatei aufgebaut und wie erzeug
ich die?

benutze XML!

hier kannst du deine daten sturkturiert ablegen. beim starten des programmes „parst“ du einmal das xml-file rein, bsp. in ein recordset

bei fehler einfach auf den ds zugreifen- fertig

grüße

rasta

Hallo!

benutze XML!

So langsam wird’s gut.

hier kannst du deine daten sturkturiert ablegen. beim starten
des programmes „parst“ du einmal das xml-file rein, bsp. in
ein recordset

Mit welchem Parser? Mit oder ohne Schema? Was benutzt Du? Bin nämlich immer mal wieder auf der Suche nach einem.

Gruß, Manfred

hi manfred,

Hallo!

benutze XML!

So langsam wird’s gut.

hier kannst du deine daten sturkturiert ablegen. beim starten
des programmes „parst“ du einmal das xml-file rein, bsp. in
ein recordset

Mit welchem Parser? Mit oder ohne Schema? Was benutzt Du? Bin
nämlich immer mal wieder auf der Suche nach einem.

http://www.planetsourcecode.com/vb/scripts/BrowseCat…

Gruß, Manfred

gruß

rasta