PDA

Vollständige Version anzeigen : Nummer langfristig speichern


Kalle-Klamrott
18.07.2006, 11:16
Hallo zusammen,

Ich habe zwei verschiedene Testblätter, die mit einem Tabellenblatt bearbeitet werden. Das Makro verändert dabei geringfügig das Aussehen der Tabelle. Bei jedem neuem Test soll die nachfolgende Testnummer einfügt werden 1,2,3 usw. Kein Problem!
Wenn ich jetzt 1 Monat das eine Testblatt nicht mehr benutzte, möchte ich die Zählung der Nummer vom letzten Testbericht fortführen. Wie kann ich die Testnummer jetzt langfristig speichern?

Gruss
Dennis

Petschen
18.07.2006, 11:44
Hallo Dennis,

da gibt es mehrere Möglichkeiten.
Die einfachste ist sicherlich die letzte Testnummer in einer (ausgeblendeten) Zelle zu speichern und von da aus beim nächsten Durchlauf wieder auszulesen.
Man kann solche Werte aber auch in einer ini-Datei zwischenspeichern, z.B. so:

System.PrivateProfileString("C:\Testnummern\Testnummer.ini", "Testnummer") = letzteTestnummer

Den Pfad musst Du natürlich entsprechend abändern, der Begriff Testnummer ist dann praktisch die Überschrift in der ini (kann man auch weglassen) und letzteTestnummer wäre eben deine letzte Testnummer.

Beim Öffnen deiner Testdatei müsstest Du den Wert dann entsprechend wieder aus der ini-Datei auslesen (z.B. so):

letzteTestnummer = System.PrivateProfileString("C:\Testnummern\Testnummer.ini", "Testnummer")

Ach so, Du musst die ini-Datei nicht vorher erstellt haben, die wird automatisch erstellt wenn sie nicht vorhanden ist.

Ich hoffe das hilft Dir.

Gruß

Petra

Kalle-Klamrott
18.07.2006, 14:08
Hi Petra,

besten Dank für die Hilfe!!! Genau richtig!
Wieder was gelernt! :)

Gruss
Dennis

myfake
18.07.2006, 14:27
Hallo Petra/Dennis,

da würde ich mich gerne mal einklinken ;)

Irgendwie stehe ich gerade auf dem Schlauch. Wie sieht denn die komplette Anweisung aus?

Ich habe es so versucht ...

<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre><span class="TOKEN">Option</span> <span class="TOKEN">Explicit</span>
&nbsp;
<span class="TOKEN">Public</span> letzteTestnummer <span class="TOKEN">As</span> <span class="TOKEN">Integer</span>
&nbsp;
<span class="TOKEN">Private Sub</span> Workbook_BeforeClose(Cancel <span class="TOKEN">As</span> <span class="TOKEN">Boolean</span>)
System.PrivateProfileString(&quot;C:\Daten\Privat\MOF\Testnummer.ini&quot;, &quot;Testnummer&quot;) = letzteTestnummer
<span class="TOKEN">End</span> <span class="TOKEN">Sub</span>
&nbsp;
<span class="TOKEN">Private Sub</span> Workbook_Open()
letzteTestnummer = System.PrivateProfileString(&quot;C:\Testnummern\Testnummer.ini&quot;, &quot;Testnummer&quot;)
<span class="TOKEN">End</span> <span class="TOKEN">Sub</span></pre></div>
Code eingefügt mit dem MOF Code Converter (http://www.ms-office-forum.net/forum/codeconverter.php)

... aber da meckert der Debugger bei "System" <- Variable nicht deklariert

Vielen Dank schon einmal im Voraus.

cu
myfake

funny-peculiar
18.07.2006, 15:09
Hallo, myfake,

nimm das Vorgehen aus http://www.ms-office-forum.net/forum/showthread.php?t=135297.

Ciao,
Holger

myfake
18.07.2006, 15:18
Hallo Holger,

vielen Dank schon einmal für den Link. :top: Aber wie kann ich denn dann auslesen, wie oft die Datei schon geöffnet wurde?

cu
myfake

P.S. außerdem würde es mich trotzdem interessieren, wie es mit einer "ini" funktioniert ;)

funny-peculiar
18.07.2006, 15:25
Hallo, myfake,

für eine Textdatei einen eindeutigen Trenner festlegen, anhand dessen die Anztahl ermittelt werden kann. Dies kann eine Zahl in der ersten Zeile der Datei sein, die Anzahl der Trennlinien,

Eine Ini-Datei ist eine genormte textdatei mit festen Vorgaben, an welchen Stellen sich welche Daten befinden. Beispiel kann ich von hier aus nicht senden, da ich mich an den Code nicht erinnern kann und mein elektronisches Gedächtnis dazu benötigen würde.

Per Klassenprogrammierung über einen Namen, in dem die Anzahl der Öffnungen festgehalten wird.

Ciao,
Holger

funny-peculiar
18.07.2006, 17:30
Hallo, myfake,

die direkte Vrogehensweise mit der Vorgabe der Namen und Werte für die einzelnen Bereiche habe ich leider auf die Schnelle nicht gefunden, nur ein weiteres Beispiel für die Abbildung in einer Textdatei. Dort kann aber die Datei so lange durchlaufen werden, bis der passende Begriff auf der linken Seite des Textes auftaucht:

<pre><span style="font-family=MS Sans Serif,Arial; font-size=10pt"; >
<b><span style="color:#008000"; >' *************************************************************
' Modul: basMain Typ = Allgemeines Modul
' **************************************************************</span></b>

<span style="color:#000080"; >Option</span> <span style="color:#000080"; >Explicit</span>

<b><span style="color:#000080"; >Sub</span> InvoiceIni()</b>
<span style="color:#008000"; >'Hans W. Herber, 035498v.xls</span>
<span style="color:#008000"; >'Rechnungsnummer aus sequentieller Datei &uuml;bernehmen</span>
<span style="color:#000080"; >Dim</span> sFile <span style="color:#000080"; >As</span> String, sNo <span style="color:#000080"; >As</span> <span style="color:#000080"; >String</span>
<span style="color:#000080"; >Dim</span> iNo <span style="color:#000080"; >As</span> Integer, iFile <span style="color:#000080"; >As</span> <span style="color:#000080"; >Integer</span>
iFile = FreeFile
sFile = Application.Path & <span style="color:#800000"; >"\Invoice.ini"</span>
<span style="color:#000080"; >If</span> Dir(sFile) &lt;&gt; <span style="color:#800000"; >"Invoice.ini"</span> <span style="color:#000080"; >Then</span>
iNo = 1
<span style="color:#000080"; >Open</span> sFile <span style="color:#000080"; >For</span> Output <span style="color:#000080"; >As</span> iFile
<span style="color:#000080"; >Print</span> #iFile, iNo
<span style="color:#000080"; >Close</span>
<span style="color:#000080"; >Else</span>
<span style="color:#000080"; >Open</span> sFile <span style="color:#000080"; >For</span> <span style="color:#000080"; >Input</span> <span style="color:#000080"; >As</span> iFile
<span style="color:#000080"; >Do</span> <span style="color:#000080"; >Until</span> EOF(iFile)
<span style="color:#000080"; >Input</span> #1, sNo
<span style="color:#000080"; >Loop</span>
<span style="color:#000080"; >Close</span>
iNo = CInt(sNo) + 1
<span style="color:#000080"; >Open</span> sFile <span style="color:#000080"; >For</span> Output <span style="color:#000080"; >As</span> iFile
<span style="color:#000080"; >Print</span> #iFile, iNo
<span style="color:#000080"; >Close</span>
<span style="color:#000080"; >End</span> <span style="color:#000080"; >If</span>
Range(<span style="color:#800000"; >"A1"</span>).Value = iNo
<b><span style="color:#000080"; >End</span> <span style="color:#000080"; >Sub</span></b>

<b><span style="color:#000080"; >Sub</span> ResetNo()</b>
<span style="color:#000080"; >Dim</span> sFile <span style="color:#000080"; >As</span> <span style="color:#000080"; >String</span>
sFile = Application.Path & <span style="color:#800000"; >"\Invoice.ini"</span>
<span style="color:#000080"; >If</span> Dir(sFile) &lt;&gt; "" <span style="color:#000080"; >Then</span> Kill sFile
Range(<span style="color:#800000"; >"A1"</span>).Value = 0
<b><span style="color:#000080"; >End</span> <span style="color:#000080"; >Sub</span></b></span></pre>
<br><span style=" font-weight:bold;"> Code eingef&uuml;gt mit: </span> <a style ="color:#ffff00; background-color:#000080; font-weight:bold;" href="http://www.haserodt.de/cj_pro/cj_ex.htm" target="blank">Excel Code Jeanie</a>

Ciao,
Holger

myfake
18.07.2006, 17:42
Hallo Holger,

soviel Mühe, um meine Neugierde zu befriedigen :redface:

Ich werde mich in der nächsten Zeit einmal genauer damit auseinandersetzen.

Herzlichen Dank noch einmal für alles!

cu
myfake

Petschen
19.07.2006, 06:55
Hallo myfake,

Du hast recht, so funktioniert es wirklich nicht....
Ich lad mal eine Datei hoch in der es funktioniert. Diese bietet eine Symbolleiste an, mit der man Begriffe eingeben und löschen, sowie in großen Dokumenten nach diesen abgespeicherten Begriffen suchen kann. Und diese Begriffe werden eben in einer ini-Datei gespeichert.
Funktioniert - zumindest unter Word97 - ganz hervorragend.
Allerdings scheint das wirklich nur unter Word zu funktionieren. Schade aber auch.... - Hätt ich wohl besser vorher mal überprüfen sollen.......
Vielleicht kannst Du mit der Datei ja trotzdem was anfangen.

Gruß

Petra