Anzeige
Archiv - Navigation
1100to1104
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Programmstruktur

Programmstruktur
Burk
Hallo,
eine Funktion
Private Function GetValue(path, file, sheet, ref)
Dim arg As String
If Right(path, 1)  "\" Then path = path & "\"
If Dir(path & file) = "" Then
GetValue = "File Not Found"
Exit Function
End If
arg = "'" & path & "[" & file & "]" & sheet & "'!" & _
Range(ref).Range("A1").Address(, , xlR1C1)
GetValue = ExecuteExcel4Macro(arg)
End Function
wird aus einer Subprozedur n-mal aufgerufen (n=Anzahl der Dateien)
z.B.
sub teste()
dim ...
wert1 = GetValue("...)
mach was
End Sub
wie kann ich die Struktur aufbauen, ohne daß ich n-mal den Prozedurrumpf schreiben muß?
Bin für alle Hinweise dankbar
Schöne Grüße
Georg
AW: Programmstruktur
17.09.2009 08:27:17
xr8k2
Hallo Georg,
ich versteh das nicht ...
ohne daß ich n-mal den Prozedurrumpf schreiben muß
Was meinst du denn mit Prozedurrumpf, deine Subprozedur oder deine Function oder den Function-Aufruf?
Gruß,
xr8k2
AW: Programmstruktur
17.09.2009 08:38:53
Burk
Hallo xr8k2
ich muß doch normalerweise in der Prozedur n-mal die Funktion aufrufen, d.h. n-mal
wert1 = GetValue("...)
mach was
schreiben
Wenn ich dann einen langen Pfad zu schreiben habe, wird das ganz schön sperrig
Gruß
Georg
AW: Programmstruktur
17.09.2009 09:06:31
xr8k2
Hallo Georg,
na das kommt nun darauf woher du die Argumente für deine Function ziehst. Evtl. kannst du die Aufrufe in eine Schleife packen.
Gruß,
xr8k2
Anzeige
AW: Programmstruktur
17.09.2009 09:20:00
JogyB
Hi.
Entschuldige, das soll jetzt wirklich keine Anmache sein, aber bitte sag uns mal, was Du eigentlich wirklich in VBA kannst. Das "gut" nehme ich Dir beim besten Willen nicht mehr ab. Wenn wir aber nicht wissen wo wir mit den Erklärungen anfangen müssen, dann wird vor allem die Hilfestellung "ganz schön sperrig".
Gruss, Jogy
AW: Programmstruktur
17.09.2009 09:42:06
Burk
Hallo Jogy,
was du mir abnimmst ist mir wirklich egal, ich weiß ja auch nicht was du kannst, bisher wares es nur Sprüche
Das Problem ist folgendes,
Dateiname und Pfad sind im Windows-Explorer aufgelistet.
Wie bekomme ich sie am einfachsten in eine Matrix
Wahrscheinlich wird eine for each -Schleife die beste Möglichkeit sein, die Werte wieder auszulesen
Bin für alle Hinweise dankbar
Gruß
Georg
Anzeige
AW: Programmstruktur
17.09.2009 09:54:01
xr8k2
Hallo Georg,
dann schau dir mal das FileSystemObject an und sieh mal, ob du damit was machen kannst.
Gruß,
xr8k2
AW: Programmstruktur
17.09.2009 10:41:48
Burk
Hallo xr8k2,
danke für den Hinweis
Gruß
Georg
AW: Programmstruktur
17.09.2009 09:54:05
JogyB
Hi.
Wenn Du Dein Problem mal richtig beschreiben würdest, dann könnten wir auch helfen. Nach welchen Kriterien werden die Dateien denn ausgesucht? liegen alle in einem Verzeichnis? Haben alle einen bestimmten Namen?
Um das irgendwie automatisiert in einen Array zu kriegen, brauchst Du irgendwelche Kriterien, nach denen die gewählt werden können. Wenn es die nicht gibt, dann wird Dir nichts anderes übrig bleiben, als sie manuell einzugeben bzw. über GetOpenFileName zu holen. Aber irgendwas scheint es ja zu geben, sonst könntest Du die im Explorer ja auch nicht auflisten.
Gruss, Jogy
Anzeige
AW: Programmstruktur
17.09.2009 09:59:40
Burk
Hallo Jogy,
es sind alle Dateien in einem bestimmten Verzeichnis
Gruß
Georg
AW: Programmstruktur
17.09.2009 10:16:14
JogyB
Hi.
Probier es mal so
Sub teste()
Dim myFile As String
Dim weRt
Const mypaTh = "C:\Temp\" ' Hier Dein Pfad
myFile = Dir(mypaTh & "*.xls")
If myFile = "" Then Exit Sub
Do
If IsEmpty(weRt) Then
ReDim weRt(1 To 1) As String
Else
ReDim Preserve weRt(1 To UBound(weRt) + 1)
End If
weRt(UBound(weRt)) = getvalue(mypath, myfile,...)
myFile = Dir
Loop Until myFile = ""
End Sub
Gruss, Jogy
AW: Programmstruktur
17.09.2009 10:24:15
Burk
Danke Jogy,
ich werd es mal probieren
Gruß
Georg
Anzeige
Aufgabenstellung ist unklar
17.09.2009 10:19:28
Erich
Hi Georg,
ok, nehmen wir an, im Verzeichnis (c:\tmp) stehen 17 Excelmappen.
Dann willst du wohl 17 Werte aus diesen Mappen auslesen.
Was willst du mit diesen 17 Werten tun? Wo sollen sie stehen, in welchen Variablen?
Was, wenn eine 18. Datei dazu kommt? Soll dann eine 18. Variable gefüllt werden?
Oder brauchst du vielleicht überhaupt nur eine Variable für den jeweils ausgelesenen Wert?
(Vielleicht wird aus den Wereten ja nur eine Summe gebildet...)
Noch ein halb ernst gemeinter Scherz:
Wenn der Pfad eine lange Zeichenkette ist, musst du ihn für 17 Aufrufe nicht 17 mal hinschreiben.
Du könntest ihn z. B. in eine Variable schreiben und dann die Variable anstelle des Textes verwenden.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Aufgabenstellung ist unklar
17.09.2009 10:39:31
Burk
Hallo Erich,
ich möchte in den 17 Mappen prüfen ob an einer bestimmten Position 100% steht, wenn ja, wird dann der Bereich ausgelesen und weiter ausgewertet.
Es gibt weit mehr als 17 Werte.
In jeder Mappe starte ich an der gleichen Position und durchsuche dann den definierten Spaltenbereich
Dazu brauch ich nur eine Variable, die immer wieder neu beschrieben und ausgelesen wird.
Es soll vorläufig bei den 17 Dateien bleiben
Gruß
Georg
Aufgabenstellung weiterhin unklar
17.09.2009 11:14:54
Erich
Hi Georg,
es fällt (nicht nur mir) nicht leicht, dich zu unterstützen.
In deiner Ausgangsfrage spielte eine zentrale Rolle, wie du die Fkt GetValue aufrufen könntest.
Geht es noch um diese Frage?
"ich möchte in den 17 Mappen prüfen ob an einer bestimmten Position 100% steht"
Ja, das könnte man - evtl. in einer Schleife - mit GetValue tun.
"wenn ja, wird dann der Bereich (welcher Bereich?) ausgelesen und weiter ausgewertet (wie?)"
"In jeder Mappe starte ich an der gleichen Position und durchsuche dann den definierten Spaltenbereich"
Was ist der definierte Spaltenbereich?
Soll dieses Durchsuchen auch mit GetValue passieren?
Spricht etwas dagegen, die 17 Mappen nacheinander zu öffnen, auszuwerten und wieder zu schließen?
Stattdessen willst du mit ExecuteExcel4Macro arbeiten...
Nach wie vor wird überhaupt nicht klar, was du erreichen möchtest und wo dabei das Problem liegt
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Aufgabenstellung weiterhin unklar
17.09.2009 12:19:00
Burk
Hallo Erich,
es wird eine Zelle auf 100% geprüft, wenn ja wird der Bereich der gessamten Zeile, in der die 100% steht ausgelesen und in eine andere Tabelle kopiert, wo es um neue Kriterien geht.
Der Spaltenbereich kann die ganze Spalte sein. Hier wird einfach mit offset(1,0) gearbeitet
Alle Mappen zu öffnen, auszuwertn und wieder zu schließen ist viel zu zeitaufwendig und kritisch
Das Problem war eben, eine Programmstruktur zu finden, die ein schnelles und übersichtliches Arbeiten ermöglicht
Ziel war es, alle Zeilen in den Mappen auszulesen, wo 100% erreicht wird
Gruß
Georg
Anzeige
AW: Programmstruktur
17.09.2009 08:33:55
JogyB
Hi.
Mit "VBA gut" sollte man eigentlich den Umgang mit Arrays und Schleifen im Griff haben. Oder verstehe ich bei Deinem Problem jetzt irgendwas falsch?
Gruss, Jogy

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige