Jump to content

Kurs Programmierung mit Visual Basic / Excel VBA


Recommended Posts

Hallo,

habe mich mal was schlaugemacht. Bin aber nicht wirklich fündig geworden.

In den Hilfen habe ich keine genauen Bsp gefunden.

Folgendes was ich gefunden habe:



Open Datei For Modus As Dateinummer - öffnet eine Datei
Close #Dateinummer   - schließt Datei #Dateinummer
FreeFile    - liefert nächste freie Dateinummer
Int (Zahl)    - liefert ganzzahligen Anteil einer Zahl

Zu Freefile:

In diesem Beispiel wird die FreeFile-Funktion verwendet,
um die nächste verfügbare Dateinummer zurückzugeben.
In der Schleife werden fünf Dateien zur Ausgabe geöffnet und mit Beispieldaten beschrieben.

Dim Index1, Dateinummer
For Index1 = 1 To 5        ' Schleife 5 mal durchlaufen.
  Dateinummer = FreeFile       ' neue Datei-Nr. bestimmen.
  Open "TEST" & Index1 For Output As #Dateinummer ' Dateiname erstellen.
  Write #Dateinummer, "Beispieldaten."     ' Text ausgeben.
  Close #Dateinummer       ' Datei schließen.
Next Index1

Hierzu ein paar Fragen

Was sagt mir der Begriff Dateinummer?

In der Hilfe von VB6(MSDN) sind ungefähr 100 verschiedene Open Befehle.

Wie sieht hier die Formatierung aus?

Hat Integer noch weitere Bedeutungen oder ist liefert Integer einfach nur den Ganzzahlanteil einer Zahl zurück?

@matthias:

Wie siehts bei dir aus?

Schon verwunderlich wieviele hier die Dateien ruterladen, aber sich selbst nicht beteiligen.

Ok D.C. ist wohl "heimlicher" Mitleser.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo dazligth,

Was sagt mir der Begriff Dateinummer?

Wenn die Datei eine Mailbox wäre, wäre die Dateinummer deren Adresse. Beim Öffnen einer Datei (open) bekommt jede Datei eine Nummer. Damit das Programm immer weiss, aus welcher Datei gelesen bzw. in welche geschrieben werden muss, gibt man beim Schreib- oder Lesebefehl die Nummer (=Adresse) an.

In der Hilfe von VB6(MSDN) sind ungefähr 100 verschiedene Open Befehle.

Wie sieht hier die Formatierung aus?

Genau wie du es geschrieben hast :rolleyes:

Open Datei For Modus As Dateinummer

Unter Datei ist dabei der Dateiname gemeint, der kann entweder direkt angegeben werden ("c:\Eigene Dateien\test.txt") oder in einer Variable gespeichert sein. Der Name der Variable wird dann im Open-Befehl angegeben.

Als Modus können folgende Werte benutzt werden:

Input - öffnet die Datei zum Lesen. Schreiben nicht möglich.

Output - öffnet die Datei zum Schreiben. Vorsicht, evtl. bestehende Datei wird übeschrieben!

Append - öffnen die Datei zum Hinzufügen. Falls die Datei nicht vorhanden ist, wird sie angelegt.

(Es gibt noch andere, aber die sind hier nicht wichtig)

Die Dateinummer ermittelt man mit der Funktion FreeFile().

Beispiel:

txtDatei = "c:\Eigene Dateien\test.txt"
F = FreeFile()
Open txtDatei for input as F

Hat Integer noch weitere Bedeutungen oder ist liefert Integer einfach nur den Ganzzahlanteil einer Zahl zurück?

Bitte nicht verwechseln:

Integer ist ein Datentyp. Eine Variable vom Typ Integer kann Zahlen von -32767 bis 32767 aufnehmen. Der Versuch, einen kleineren/größeren Wert zuzuweisen führt zu einem Fehler (overflow = Überlauf)

Int ist eine Funktion, die den Ganzzahlanteil einer Zahl liefert. Int(2.1) = 2

Ich hoffe, alles verständlich erklärt zu haben und dass Chin mir nicht böse ist. :drink:

Link zu diesem Kommentar
Auf anderen Seiten teilen

@Ranger Super

Vielen Dank für deine Ausführungen!

Alle meine Fragen sind nun komplett beantwortet. :-)

Warum sollte Chin böse sein...?

Er ist sicher über jegliche Beteiligung an diesem Thema erfreut.

Sei es nun wenns wie von mir Fragen sind oder aber Antworten und Hilfestellungen.

Immerhin entlastet das Chin.

@Chin: Warum nennen dich alle "chin" und dein Nic ist "chi lu jung".

Besteht da ein Zusammenhang?

bearbeitet von dazligth
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Ranger,

ich bin dir nicht böse - im Gegenteil, ich finde deine Ausführungen sehr gut. Wenn du willst, würde ich mich freuen, wenn du für erste Aufgabe die die Lösung in deinem hervorragenden Erklärungsstil zusammenfassen könntest (

mein Erklärungsversuch). Ich stelle diese dann mit meiner Aufgabenstellung in den gepinnten VB-Kurs Thread ein.

Hallo dazlight,

mein Alias ist "Chin Lu Jung", habe aber beim Anmelden im Paroli-Forum das "n" von "Chin" vergessen. Deshalb kommt es zu diesen Differenzen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Chin,

kann ich gerne versuchen. Ich bin nur nicht ganz sicher, du meinst wahrscheinlich die 2. Aufgabe (öffnen/schliessen der Datei), die 1. ist ja von dir bereits erklärt worden. :rolleyes:

Also unser Stand nach der 1. Aufgabe war:

Sub PermEinlesen(Dateiname As String)

    'Permanenzzahlen einlesen und in Liste speichern

End Sub

Jetzt wollen wir die Datei öffnen. Wie ich oben bereits geschrieben habe, brauchen wir dazu

- den Dateinamen, den wir ja als Parameter in der Variable Dateiname bekommen

- die Dateinummer, die uns die Funktion FreeFile() liefert und die wir ebenfalls ein einer Variable speichern müssen

- und eine Angabe zum Modus, in dem wir die Datei öffnen wollen. Da wir ja aus einer bestehenden Datei lesen wollen, lautet das Schlüsselwort for input.

Kümmern wir uns also zuerst um die Dateinummer. Zunächst brauchen wir eine Variable dazu. In Visual Basic müssen Variablen nicht zwangsläufig vor der Benutzung definiert werden, es gehört aber zu einem guten Programmierstil und hilft oft, Fehler im Programm zu vermeiden. Ausserdem kennt der Editor so die gewünschte Schreibweise des Variablennamen und korrigiert später bei Bedarf automatisch die Groß-/Kleinschreibung.

Die Definition einer Variable beginnt immer mit dem Schlüsselwort Dim, gefolgt vom Namen der Variable. Danach kommt das Schlüsselwort As und anschliessend der Datentyp. Da wir eine Variable vom Typ Integer benötigen, sieht unsere Anweisung folgendermassen aus:

Dim Dateinummer As Integer

Damit haben wir schon mal die Variable, sie hat aber noch keinen Wert. Den holen wir uns von der Funktion FreeFile()

Dateinummer = FreeFile()

Wir haben nun alle Komponenten zum Öffnen der Datei zusammen und können diesen Schritt vollziehen:

Open Dateiname For Input As Dateinummer

Es folgt der (noch zu schreibende) Code zum Einlesen der Daten und anschliessend wird die Datei geschlossen.

Close Dateinummer

Achtet darauf, dass der Dateiname nur beim Öffner der Datei benutzt wird, danach arbeitet man ausschliesslich mit der Dateinummer!

Und so sieht unsere Prozedur am Ende aus:

Sub PermEinlesen(Dateiname As String)
    'Permanenzzahlen einlesen und in Liste speichern

    'Variablen definieren
    Dim Dateinummer As Integer

    'Freie Dateinummer ermitteln
    Dateinummer = FreeFile()

    'Datei öffnen
    Open Dateiname For Input As Dateinummer

    'Code zum Einlesen der Daten

    'Datei wieder schliessen
    Close Dateinummer
 
End Sub

Es wäre vielleicht besser, wenn wir die ganze Aufgabe etwas vergrössern würden. Denn davon, was nachher mit den eingelesenen Daten passieren soll, hängt evtl. ab, für welche Variante der Datenaufbewahrung wir uns entscheiden.

Link zu diesem Kommentar
Auf anderen Seiten teilen

So wie gehts weiter?

Jetzt müssen wir doch den Inhalt der Datei einlesen.

Wir müssen ja irgenwie zusehen, dass man nur die Zahlen vorallem auch die richtigen Zahlen rausholt.

Und alle anderen Zeichen rausfiltert.

Wollen wir Handwechsel beachten?

Ich denke für starre Systeme ist es egal ob man HW beachtet oder nicht.

Ist wohl eher für WW und physk. Lösungen interessant und die kann man nicht programmieren. oder?

mathias? was meinst du?

bearbeitet von dazligth
Link zu diesem Kommentar
Auf anderen Seiten teilen

Gut, zunächst sollte man festlegen, was die Datei so alles enthält.

In einer normalen Permanenz-Datei wären an sich nur die nackten Zahlen drin, und zwar eine pro Zeile. Davon sollten wir mal ausgehen.

In den Monatsdateien vom GPC z.B. sind die einzelnen Tage von einander getrennt. Diesen Fall könnte man dann später zur Vertiefung der Kenntnisse nutzen.

Für den Anfang würde ich vom folgenden Aufbau ausgehen:


5
7
16
21
35
2
13
....

Was sagt Chin dazu?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Ranger,

danke für dein Engagement. Aber ich hatte mir eine gewisse Form des Kurses vorgestellt. Wie du an den beiden vorangegangen Aufgabenstellung siehst, wollte ich eine klare Struktur einhalten.

Deshalb stehen nun zwei Alternativen zur Auswahl:

1) Du führst den Kurs nach deinen Vorstellungen weiter.

2) Ich führe den Kurs nach meinen Vorstellungen weiter.

Ich denke, ansonsten gibt es zu sehr Verwirrung um den Inhalt und die Aufgabenstellung.

Ich möchte also dich, dazlight, matthias und evtl. vorhandene "stille" Teilnehmer bitten, ihre Vorstellungen zu posten.

Wir müssen auf jeden Fall eine klare Struktur reinbringen, ansonsten endet das hier im Chaos.

Danke

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Chin,

sorry, ich wollte das Steuer keinesfalls an mich reissen. :drink:

Ich finde es nur sehr verwirrend, ein Programm zu entwickeln, ohne genauere Angaben darüber zu haben, was es letztendlich machen soll. Bin das als Softwareentwickler einfach nicht gewohnt. :rolleyes:

Bitte führe den Kurs weiter, ich versuche mich nun zurückzuhalten.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Chin hat vollkommen recht. Ich erfreue mich immer über feste Struckturen und eine gewisse Ordnung.

@Ranger: Bitte nicht falsch verstehen, absolut nicht gegen dich. Finde es toll das du dich beteiligst! :rolleyes:

Da Chin den Kurs angefangen hat finde ich er soll ihn auch weiterführen und Ranger soll am Ball bleiben und unterstützen.

@Ranger: Du hast die letzten Hilfestellungen sehr gut und verständlich erklärt und rübergebracht. Vorallem für "Einsteiger"!

Wie sieht der Rest das?

Ich vermisse Matthias, hat er aufgegeben ... ?

Habe ne email an ihn geschrieben, mal sehen ob was zurück kommt.

bearbeitet von dazligth
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Ranger,

danke für dein Verständnis. Bedenke bitte, dass es sich hier nicht um professionelle Softwareentwickler handelt. In einem Einsteigerkurs muß man Step by Step vorgehen. Zuviel Informationen am Anfang verwirren nur. Man hat dies am Anfang gesehen, als es um die Erstellung der Prozedurdefinition ging. Da hat manch einer sich schon Gedanken ums Einlesen gemacht. Deshalb ist es besser, immer eine kleine, abgegrenzte Aufgabe zu stellen. Die Summe aller Aufgaben ergibt am Schluss ein Gesamtbild und die Teilnehmer lernen so über einzelne Befehle den Gesamtzusammenhang. Es ist nicht mein erster Kurs, den ich durchführe.

Ich möchte dich bitten, bei konkreten Fragen der Teilnehmer auch NUR diese Fragen gezielt zu beantworten. Manchmal ist hier weniger mehr. Also nicht zu viel Informationen, sondern mehr Hinweise. Die Teilnehmer sollen sich einen Teil auch selber erarbeiten.

Danke

Matthias war in den letzten Tagen nicht mehr im Forum. Er hat anscheinend im Moment keine Zeit. Deshalb würde ich vorschlagen, wir fahren fort. Ich stelle im Laufe des Tages die nächste Aufgabe ein.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Lösung für Aufgabe 1.2 "Datei öffnen/schliessen"

Hallo Kursteilnehmer,

ich habe im gepinnten Thread "Grundkurs Programmierung Visual Basic" die bisherigen Aufgaben und Lösungen zu fortlaufenden Kursunterlagen zusammengefasst. Dort kann auch der aktuelle Code heruntergeladen werden.

Bitte in Zukunft immer dort die Lösungen nachlesen und den aktuellen Code herunterladen.

Danke

Link zu diesem Kommentar
Auf anderen Seiten teilen

1. Lektion - Permanenzdatei einlesen

3. Aufgabe - Fehlerbehandlung

Mit dem Öffnen einer Datei kann auch ein Fehler auftreten. Wenn die Datei nicht vorhanden ist bzw. der Dateiname falsch geschrieben wurde, dann wird ein Fehler erzeugt. Visual Basic bietet die Möglichkeit, eine Fehlerbehandlungsroutine einzurichten, welche den Fehler "auffängt" und einen vorher definierten Code ausführt.

Aufgabe

Für das Öffnen der Datei soll nun eine Fehlerbehandlungsroutine geschrieben werden. Diese soll lediglich den Fehler abfangen und dann über die Funkton "MsgBox" einen kurzen Hinweis an den Anwender ausgeben. Danach ist die Prozedur zu verlassen, da ja beim fehlerhaften Öffnen der Permanenzdatei keine weitere Aktionen mit dieser Datei mehr möglich sind.

Stichwörter

(Unter diesen Stichwörtern kann in der Online-Hilfe gesucht werden)

On Error

Err Objekt

Err.Number

Exit Sub

MsgBox

If Then

Hinweise

Im Sinne einer modernen Programmierung ist der Einsatz von "GoTo" zu vermeiden. "On Error" bietet zwei Möglichkeit - einmal mit "GoTo" und einmal ohne. Es ist die Version ohne "GoTo" zu verwenden.

Zum Testen der Prozedur wird im Modul eine Testprozedur angelegt. Diese sieht folgendermaßen aus

Sub Main()

   'Aufruf der Prozedur PermEinlesen
   'Als Argument wird der Dateinname der Permanenz übergeben
   Call PermEinlesen("c:\Eigene Dateien\Hamburg.txt")
   
End Sub

Diese Testprozedur kann in Excel als Makro aufgerufen werden. Im Visual Basic Editor über das Menü "Ausführen -> Sub/UserForm ausführen" die Prozedur aufrufen.

In der Visual Basic Entwicklungsumgebung den Menüpunkt "Ausführen -> Start" anwählen. Es wird dann die Prozedur mit den Namen "Main()" aufgerufen.

Wenn nun die Permanenzdatei nicht unter dem angegeben Pfad steht, erscheint ohne Fehlerbehandlungsroutine eine Fehlermeldung von Visual Basic und die Ausführung wird an der betreffenden Stelle gestoppt. Diese Verhaltensweise wird durch eine Fehlerbehandlungsroutine nach den Vorstellungen des Entwicklers verändert.

Code

Als Grundlage für den Kurs wird der bisherige Code in der Excel-Datei "VB Kurs.xls" fortgeschrieben. Für die Anwender der VB-Entwicklungsumgebung steht in der Zip-Datei das Modul "Modul1.bas" zur Verfügung. Dieses kann in die VB-Entwicklungsumgebung importiert werden.

VB_Kurs.zip

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi Chin, ich wollte nur grad mitteilen das ich am Ball bleibe.

Haben am Wochenende "Gründungsversammlung" von unserer Maigesellschaft. Wie schon geschrieben bin ich im Vorstand. Ich muss die Kassenabrechnung machen und diese mit den Kassenprüfern prüfen.

Das ist einige Arbeit und ich komm im Moment nicht dazu mich weiter einzuarbeiten.

Matthias sollte auch langsam wieder dazustoßen.

Also ich bleib dran. Keine Angst!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo dazlight, matthias und Ranger,

leider kann ich im Moment den VB-Kurs nicht mehr weiterführen. Wie ich bereits im "Urlaubs-Thread" ausgeführt habe, nehmen mich meine neuen Aufgaben voll in Anspruch. Ich würde mich freuen, wenn ihr mit Ranger zusammen den Kurs weiterführen könntet. Ranger hat auf jeden Fall die fachliche Kompetenz, den Kurs fortzuführen.

Viel Spaß weiterhin

bis bald

Chin :bigg:

Link zu diesem Kommentar
Auf anderen Seiten teilen

also her mit den Lösungen!

Vielleicht klappt der Einstieg nicht auf diese Weise. Es gibt einige Roulette-Tüftler, die mit Excel herum probieren und einfachere Systeme selbst testen können. Über Visual Basic macht man sich dann keine Gedanken, da sich mit einfachen Formeln und logischen Operatoren schon so einiges auf die Beine stellen lässt.

Für einen leichteren VB-Einstieg sehe ich folgende Möglichkeit:

Für den Anfang werden bestimmte Vorgänge (z.B. Permanenzen einlesen) von Hand durchgeführt und nebenbei als Makro aufgezeichnet. Dann wird der aufgezeichnete Code analysiert, eventuell gekürzt und weiter bearbeitet.

Nach ersten Erfolgserlebnissen wirkt VB dann nicht mehr so abschreckend und man kann Schritt für Schritt optimalere Lösungswege erlernen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 weeks later...

Beispiel

Monats-Permanenz aus einem Verzeichnis (C:\Forum\ ) tageweise einlesen und 31 Tage nebeneinander in Excel darstellen. Die Permanenzen sind noch unbereinigt (Handwechselstriche, Tagesende-Markierung, Statistiken) mit in der jeweiligen Spalte, aber es geht zunächst nur um den ersten Schritt.

Beispielpermanenz: Hamburg, Monat Januar 2004, Tisch 1

Regalisierung durch Makroaufzeichnung und Nachbearbeitung

Sub perm_hh()
   ChDir "C:\Forum"
   Workbooks.OpenText Filename:="C:\Forum\20040101.1"
   Columns("A:A").Select
   Selection.Copy
   Windows("hh-perm.xls").Activate
   Range("A1").Select
   ActiveSheet.Paste
   Windows("20040101.1").Activate
   ActiveWindow.WindowState = xlNormal
   Application.CutCopyMode = False
   ActiveWindow.Close
   
   
   Workbooks.OpenText Filename:="C:\Forum\20040102.1"
   Columns("A:A").Select
   Selection.Copy
   Windows("hh-perm.xls").Activate
   Range("B1").Select
   ActiveSheet.Paste
   Windows("20040102.1").Activate
   Application.CutCopyMode = False
   ActiveWindow.Close
   
   
   Workbooks.OpenText Filename:="C:\Forum\20040103.1"
   Columns("A:A").Select
   Selection.Copy
   Windows("hh-perm.xls").Activate
   Range("C1").Select
   ActiveSheet.Paste
   Windows("20040103.1").Activate
   Application.CutCopyMode = False
   ActiveWindow.Close

   Workbooks.OpenText Filename:="C:\Forum\20040104.1"
   Columns("A:A").Select
   Selection.Copy
   Windows("hh-perm.xls").Activate
   Range("D1").Select
   ActiveSheet.Paste
   Windows("20040104.1").Activate
   Application.CutCopyMode = False
   ActiveWindow.Close

   Workbooks.OpenText Filename:="C:\Forum\20040105.1"
   Columns("A:A").Select
   Selection.Copy
   Windows("hh-perm.xls").Activate
   Range("E1").Select
   ActiveSheet.Paste
   Windows("20040105.1").Activate
   Application.CutCopyMode = False
   ActiveWindow.Close

   Workbooks.OpenText Filename:="C:\Forum\20040106.1"
   Columns("A:A").Select
   Selection.Copy
   Windows("hh-perm.xls").Activate
   Range("F1").Select
   ActiveSheet.Paste
   Windows("20040106.1").Activate
   Application.CutCopyMode = False
   ActiveWindow.Close

   Workbooks.OpenText Filename:="C:\Forum\20040107.1"
   Columns("A:A").Select
   Selection.Copy
   Windows("hh-perm.xls").Activate
   Range("G1").Select
   ActiveSheet.Paste
   Windows("20040107.1").Activate
   Application.CutCopyMode = False
   ActiveWindow.Close

   Workbooks.OpenText Filename:="C:\Forum\20040108.1"
   Columns("A:A").Select
   Selection.Copy
   Windows("hh-perm.xls").Activate
   Range("H1").Select
   ActiveSheet.Paste
   Windows("20040108.1").Activate
   Application.CutCopyMode = False
   ActiveWindow.Close

   Workbooks.OpenText Filename:="C:\Forum\20040109.1"
   Columns("A:A").Select
   Selection.Copy
   Windows("hh-perm.xls").Activate
   Range("I1").Select
   ActiveSheet.Paste
   Windows("20040109.1").Activate
   Application.CutCopyMode = False
   ActiveWindow.Close

   Workbooks.OpenText Filename:="C:\Forum\20040110.1"
   Columns("A:A").Select
   Selection.Copy
   Windows("hh-perm.xls").Activate
   Range("J1").Select
   ActiveSheet.Paste
   Windows("20040110.1").Activate
   Application.CutCopyMode = False
   ActiveWindow.Close

   Workbooks.OpenText Filename:="C:\Forum\20040111.1"
   Columns("A:A").Select
   Selection.Copy
   Windows("hh-perm.xls").Activate
   Range("K1").Select
   ActiveSheet.Paste
   Windows("20040111.1").Activate
   Application.CutCopyMode = False
   ActiveWindow.Close

   Workbooks.OpenText Filename:="C:\Forum\20040112.1"
   Columns("A:A").Select
   Selection.Copy
   Windows("hh-perm.xls").Activate
   Range("L1").Select
   ActiveSheet.Paste
   Windows("20040112.1").Activate
   Application.CutCopyMode = False
   ActiveWindow.Close

   Workbooks.OpenText Filename:="C:\Forum\20040113.1"
   Columns("A:A").Select
   Selection.Copy
   Windows("hh-perm.xls").Activate
   Range("M1").Select
   ActiveSheet.Paste
   Windows("20040113.1").Activate
   Application.CutCopyMode = False
   ActiveWindow.Close

   Workbooks.OpenText Filename:="C:\Forum\20040114.1"
   Columns("A:A").Select
   Selection.Copy
   Windows("hh-perm.xls").Activate
   Range("N1").Select
   ActiveSheet.Paste
   Windows("20040114.1").Activate
   Application.CutCopyMode = False
   ActiveWindow.Close

   Workbooks.OpenText Filename:="C:\Forum\20040115.1"
   Columns("A:A").Select
   Selection.Copy
   Windows("hh-perm.xls").Activate
   Range("O1").Select
   ActiveSheet.Paste
   Windows("20040115.1").Activate
   Application.CutCopyMode = False
   ActiveWindow.Close

   Workbooks.OpenText Filename:="C:\Forum\20040116.1"
   Columns("A:A").Select
   Selection.Copy
   Windows("hh-perm.xls").Activate
   Range("P1").Select
   ActiveSheet.Paste
   Windows("20040116.1").Activate
   Application.CutCopyMode = False
   ActiveWindow.Close

   Workbooks.OpenText Filename:="C:\Forum\20040117.1"
   Columns("A:A").Select
   Selection.Copy
   Windows("hh-perm.xls").Activate
   Range("Q1").Select
   ActiveSheet.Paste
   Windows("20040117.1").Activate
   Application.CutCopyMode = False
   ActiveWindow.Close

   Workbooks.OpenText Filename:="C:\Forum\20040118.1"
   Columns("A:A").Select
   Selection.Copy
   Windows("hh-perm.xls").Activate
   Range("R1").Select
   ActiveSheet.Paste
   Windows("20040118.1").Activate
   Application.CutCopyMode = False
   ActiveWindow.Close

   Workbooks.OpenText Filename:="C:\Forum\20040119.1"
   Columns("A:A").Select
   Selection.Copy
   Windows("hh-perm.xls").Activate
   Range("S1").Select
   ActiveSheet.Paste
   Windows("20040119.1").Activate
   Application.CutCopyMode = False
   ActiveWindow.Close

   Workbooks.OpenText Filename:="C:\Forum\20040120.1"
   Columns("A:A").Select
   Selection.Copy
   Windows("hh-perm.xls").Activate
   Range("T1").Select
   ActiveSheet.Paste
   Windows("20040120.1").Activate
   Application.CutCopyMode = False
   ActiveWindow.Close

   Workbooks.OpenText Filename:="C:\Forum\20040121.1"
   Columns("A:A").Select
   Selection.Copy
   Windows("hh-perm.xls").Activate
   Range("U1").Select
   ActiveSheet.Paste
   Windows("20040121.1").Activate
   Application.CutCopyMode = False
   ActiveWindow.Close

   Workbooks.OpenText Filename:="C:\Forum\20040122.1"
   Columns("A:A").Select
   Selection.Copy
   Windows("hh-perm.xls").Activate
   Range("V1").Select
   ActiveSheet.Paste
   Windows("20040122.1").Activate
   Application.CutCopyMode = False
   ActiveWindow.Close

   Workbooks.OpenText Filename:="C:\Forum\20040123.1"
   Columns("A:A").Select
   Selection.Copy
   Windows("hh-perm.xls").Activate
   Range("W1").Select
   ActiveSheet.Paste
   Windows("20040123.1").Activate
   Application.CutCopyMode = False
   ActiveWindow.Close

   Workbooks.OpenText Filename:="C:\Forum\20040124.1"
   Columns("A:A").Select
   Selection.Copy
   Windows("hh-perm.xls").Activate
   Range("X1").Select
   ActiveSheet.Paste
   Windows("20040124.1").Activate
   Application.CutCopyMode = False
   ActiveWindow.Close

   Workbooks.OpenText Filename:="C:\Forum\20040125.1"
   Columns("A:A").Select
   Selection.Copy
   Windows("hh-perm.xls").Activate
   Range("Y1").Select
   ActiveSheet.Paste
   Windows("20040125.1").Activate
   Application.CutCopyMode = False
   ActiveWindow.Close

   Workbooks.OpenText Filename:="C:\Forum\20040126.1"
   Columns("A:A").Select
   Selection.Copy
   Windows("hh-perm.xls").Activate
   Range("Z1").Select
   ActiveSheet.Paste
   Windows("20040126.1").Activate
   Application.CutCopyMode = False
   ActiveWindow.Close

   Workbooks.OpenText Filename:="C:\Forum\20040127.1"
   Columns("A:A").Select
   Selection.Copy
   Windows("hh-perm.xls").Activate
   Range("AA1").Select
   ActiveSheet.Paste
   Windows("20040127.1").Activate
   Application.CutCopyMode = False
   ActiveWindow.Close

   Workbooks.OpenText Filename:="C:\Forum\20040128.1"
   Columns("A:A").Select
   Selection.Copy
   Windows("hh-perm.xls").Activate
   Range("AB1").Select
   ActiveSheet.Paste
   Windows("20040128.1").Activate
   Application.CutCopyMode = False
   ActiveWindow.Close

   Workbooks.OpenText Filename:="C:\Forum\20040129.1"
   Columns("A:A").Select
   Selection.Copy
   Windows("hh-perm.xls").Activate
   Range("AC1").Select
   ActiveSheet.Paste
   Windows("20040129.1").Activate
   Application.CutCopyMode = False
   ActiveWindow.Close

   Workbooks.OpenText Filename:="C:\Forum\20040130.1"
   Columns("A:A").Select
   Selection.Copy
   Windows("hh-perm.xls").Activate
   Range("AD1").Select
   ActiveSheet.Paste
   Windows("20040130.1").Activate
   Application.CutCopyMode = False
   ActiveWindow.Close

   Workbooks.OpenText Filename:="C:\Forum\20040131.1"
   Columns("A:A").Select
   Selection.Copy
   Windows("hh-perm.xls").Activate
   Range("AE1").Select
   ActiveSheet.Paste
   Windows("20040131.1").Activate
   Application.CutCopyMode = False
   ActiveWindow.Close


End Sub

Link zu diesem Kommentar
Auf anderen Seiten teilen

Permanenz einlesen: Dafür könnt ihr dieses Tool verwenden. Das Tool lädt die Hamburger Permanenzen direkt vom Server. Entfernt alle Handwechsel, zeigt welche Permanenztage nicht vorhanden sind, schreibt die vorhandenen Permanenztage nach Monaten geordnet in eine Excelarbeitsmappe.

http://www.roulette-forum.de/index.php?showtopic=1704&st=30

Posting vom May 16 2004, 01:03

Das hilft euch aber nicht so richtig weiter. Ihr wolltet ja programmieren lernen.

Mein Code ist nicht geschützt.

Was hilft es aber, wenn man ihn weder deuten und damit nicht anpassen kann?

Man könnte aber folgendes machen:

Wir nehmen das Hamburgtool und erstellen diesen Code gemeinsam neu.

Wer diesen Code versteht wird dann auch programmieren können.

Das "programmieren" ist nicht so schwer. ;)

Danach schnappt ihr euch das zweite Tool von Chi und lest die Wiesbadener Permanenzen ein.

Wenn es für euch auch anders aussieht, eigentlich kann ich gar nicht programmieren. Alles nur geklaut.

Wenn es viel ist kenne ich nur etwa 30 Befehle. Mehr ist es nicht.

Die Makrobefehle können allerdings sehr flexibel verwendet werden.

Wenn es gewünscht wird, fangen wir damit am Sonntag an.

Beste Grüße

Wenke

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 weeks later...

Wie ist deine Meinung dazu?

Du kannst jetzt schreiben und dich später registrieren. Bereits registrierter Teilnehmer? Dann melde dich jetzt an, um einen Kommentar zu schreiben.
Hinweis: Dein Beitrag wird nicht sofort sichtbar sein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Neu erstellen...