Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Dateien verschieben mit VBA-Code

1,185 views
Skip to first unread message

Sina Da Ponte

unread,
Aug 16, 2010, 3:15:24 AM8/16/10
to
Hallo zusammen,

ich möchte gerne -- zur weiteren Bearbeitung in Access 2003/2010 (Win Xp
Sp3 bzw. auch in Win7) -- *eine bestimmte Anzahl* von Dateien in einem
Ordner in einen anderen Ordner verschieben.

Der Quell-Ordner kann u.U. mehrer Hunderttausend Dateien enthalten,
weshalb die Weiterverarbeitung (v.a. das Auslesen der Dateiinhalte) sehr
lang dauert. Deshalb die Verschiebeaktion ...

Das Verschieben einzelner Dateien bewerkstellige ich normalerweise mit
bspw. solchem Code:

Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
fso.MoveFile "D:\Test\DateiY", "D:\DatenBearbeiten"

Ich finde allerdings leider überhaupt nichts zu einer Prozedur, die
meinethalben die ersten 10.000 Dateien aus Ordner 'Test' nach 'Dateien
Bearbeiten' verschiebt (wobei das Auswahlkriterium wie etwa
'alphabetische Sortierung'/'Aufsteigend' etc. vollkommen schnuppe ist).

Kann mir jemand einen Tip geben?

Freundliche Grüße

Sina

Karl Donaubauer

unread,
Aug 16, 2010, 11:28:31 AM8/16/10
to

Ich habe noch nie so viele Dateien verschoben, aber teste halt mal,
ob sowas schnell genug läuft:

'*********
Dim strSourceDir As String, strTargetDir As String, strFile As String
Dim i As Long

strSourceDir = "C:\DeinAlterOrdner\"
strTargetDir = "X:\DeinNeuerOrdner\"

strFile = Dir(strSourceDir)

For i = 1 To 10000
Name strSourceDir & strFile As strTargetDir & strFile
strFile = Dir
Next
'*********

Beim Dir-Befehl sind die Dateien alphabetisch sortiert.
In der Reihenfolge werden sie dann also verschoben.
Eine Fehlerbehandlung gehört natürlich noch dazu.

--
Servus
Karl
****************
http://www.donkarl.com Access-FAQ
http://www.donkarl.com/?aek 13. Access-Entwickler-Konferenz
25./26.09.2010 in Nürnberg, 16./17.10.2010 in Hannover


Sina Da Ponte

unread,
Aug 17, 2010, 4:42:21 AM8/17/10
to
Hallo Karl,

Am 16.08.2010 17:28, schrieb Karl Donaubauer:
> Sina Da Ponte wrote:

>> ich möchte gerne -- zur weiteren Bearbeitung in Access 2003/2010 (Win
>> Xp Sp3 bzw. auch in Win7) -- *eine bestimmte Anzahl* von Dateien in
>> einem Ordner in einen anderen Ordner verschieben.

[...]

>> Kann mir jemand einen Tip geben?
>
> Ich habe noch nie so viele Dateien verschoben,

Es handelt sich um tlw. sehr kleine Text- u.ä. -dateien eines
elektronischen Zettelkastens (für's wiss. Arbeiten); deshalb die großen
Mengen ...

> aber teste halt mal,
> ob sowas schnell genug läuft:
>
> '*********
> Dim strSourceDir As String, strTargetDir As String, strFile As String
> Dim i As Long
>
> strSourceDir = "C:\DeinAlterOrdner\"
> strTargetDir = "X:\DeinNeuerOrdner\"
>
> strFile = Dir(strSourceDir)
>
> For i = 1 To 10000

> Name strSourceDir& strFile As strTargetDir& strFile


> strFile = Dir
> Next
> '*********

Ich danke dir herzlich! Zwar hatte ich das Problem inzwischen schon
selbst gelöst, aber mein Code ist viel aufwändiger und spult den
Transfer auch lang nicht so *schnell* ab wie deiner! Deshalb nochmals --
auch umwillen des Umstandes, mit dem Dir-Befehl in diesem Zusammenhang
was neues gelernt zu haben -- vielen Dank!

[...]

Ich erlaube mir, hier gleich noch eine Frage zu stellen. Vielleicht
kannst du mir da auch helfen (oder jemand anders):

Ich habe gestern M$ Office 2010 Prof installiert (Parallellauf mit M$
Office 2003 Prof) und alles läuft eigentlich auch ganz rund, nur ein
Problem habe ich, für das ich eine möglichst simple Lösung suche (ich
vermute, daß es nur eine Access-Grundeinstellung ist, die ich aber noch
nicht gefunden habe).
Und zwar geht es um folgendes: Beim Aufruf von Formularen, deren
RecordSource mit Verweisen auf andere Formulare in Form von Parametern
ausgestattet ist -- also etwa der Form: 'Formulare!Intro!ID_Feld' --,
erscheint plötzlich das bekannte Parameter-Eingabefenster und verlangt
die Eingabe des Parameters, obwohl das Bezugsformular (mit richtig
besetztem ID_Feld) geöffnet ist ...

Mir schwante gleich, daß es an der dt. Syntax -- also der Art
*Formulare!* statt *Forms!* -- liegt; und nachdem ich probeweise an
einem AbfrageParameter statt 'Formulare' den Term 'Forms' verwendet
habe, klappte auch alles ganz prima.

Da meine entsprechenden DBs mit Massen solcher ParameterAbfragen
arbeiten, erscheint mir eine händische Umarbeitung als pure
Sisyphos-arbeit, zumal mir nicht klar ist, was dann in Access 2003
passiert, da dort der SQL-Code leider immer in Deutsch umgewandelt wird,
auch wenn ich ihn -- wie üblich -- englisch formuliere. Will sagen, es
könnte sein, daß eine Umformulierung gar nichts nützt, weil bei
Verwendung der DBs unter Access 2003 sowieso wieder alles deutsch
dasteht ... :-(

Gibts dafür 'ne Lösung? Ist da irgendwo in Access 2010 ein Schalterchen,
das ich noch nicht umgelegt habe?

Freundliche Grüße

Sina

Karl Donaubauer

unread,
Aug 17, 2010, 5:15:53 AM8/17/10
to
Sina Da Ponte wrote:
> [...]
>
> Ich erlaube mir, hier gleich noch eine Frage zu stellen. Vielleicht
> kannst du mir da auch helfen (oder jemand anders):

Neue Fragen solltest du in einem neuen Thread mit passendem
Betreff stellen. Dann werden mehr Leute drauf aufmerksam,
hast du mehr Antwortchancen und sind die Beiträge leichter
zu finden.

> Ich habe gestern M$ Office 2010 Prof installiert (Parallellauf mit
> M$ Office 2003 Prof) und alles läuft eigentlich auch ganz rund, nur
> ein Problem habe ich, für das ich eine möglichst simple Lösung
> suche (ich vermute, daß es nur eine Access-Grundeinstellung ist,
> die ich aber noch nicht gefunden habe).
> Und zwar geht es um folgendes: Beim Aufruf von Formularen, deren
> RecordSource mit Verweisen auf andere Formulare in Form von
> Parametern ausgestattet ist -- also etwa der Form:
> 'Formulare!Intro!ID_Feld' --, erscheint plötzlich das bekannte
> Parameter-Eingabefenster und verlangt die Eingabe des Parameters,
> obwohl das Bezugsformular (mit richtig besetztem ID_Feld) geöffnet
> ist ...
> Mir schwante gleich, daß es an der dt. Syntax -- also der Art
> *Formulare!* statt *Forms!* -- liegt; und nachdem ich probeweise an
> einem AbfrageParameter statt 'Formulare' den Term 'Forms' verwendet
> habe, klappte auch alles ganz prima.
>
> Da meine entsprechenden DBs mit Massen solcher ParameterAbfragen
> arbeiten, erscheint mir eine händische Umarbeitung als pure
> Sisyphos-arbeit, zumal mir nicht klar ist, was dann in Access 2003
> passiert, da dort der SQL-Code leider immer in Deutsch umgewandelt
> wird, auch wenn ich ihn -- wie üblich -- englisch formuliere. Will
> sagen, es könnte sein, daß eine Umformulierung gar nichts nützt,
> weil bei Verwendung der DBs unter Access 2003 sowieso wieder alles
> deutsch dasteht ... :-(

Naa, das automatische Eindeutschen von "Forms!" macht Access
nach meiner Erfahrung zwar an anderen Orten, aber nicht im
Abfrageeditor.

> Gibts dafür 'ne Lösung? Ist da irgendwo in Access 2010 ein
> Schalterchen, das ich noch nicht umgelegt habe?

Ich habe gerade kein A10 hier, solche kleinen Scherze gibt's aber
schon mal mit neuen Versionen. Ich würde mit dem Tool
Find&Replace (s. www.donkarl.com?FAQ1.24) alle Vorkommen
von "Formulare!" durch "Forms!" ersetzen.

Für die gespeicherten Abfragen könnte man sich schnell selbst
etwas basteln, das im SQL-Text ersetzt, aber mit dem Tool erwischt
man auch die Vorkommen in Daten- und Datensatzherkünften,
Makros und VBA-Code.

--
Servus
Karl
****************
http://www.donkarl.com Access-FAQ
http://www.donkarl.com/?aek 13. Access-Entwickler-Konferenz

Nürnberg: 25./26.9. + 2./3.10.2010, Hannover: 16./17.10.2010

Gunter Avenius

unread,
Aug 17, 2010, 6:53:14 AM8/17/10
to
Hallo Karl,

Karl Donaubauer schrieb folgendes:
...


> Naa, das automatische Eindeutschen von "Forms!" macht Access
> nach meiner Erfahrung zwar an anderen Orten, aber nicht im
> Abfrageeditor.
>
>> Gibts dafür 'ne Lösung? Ist da irgendwo in Access 2010 ein
>> Schalterchen, das ich noch nicht umgelegt habe?
>
> Ich habe gerade kein A10 hier, solche kleinen Scherze gibt's aber
> schon mal mit neuen Versionen.

Gerade getestet:
A2010 macht solche Scherze _nicht_ im Abfrageeditor.

Gruß
Gunter
--
__________________________________________________________
Access FAQ: http://www.donkarl.com

http://www.avenius.de - http://www.AccessRibbon.de
http://www.ribboncreator.de - http://www.ribboncreator2010.de

Karl Donaubauer

unread,
Aug 17, 2010, 8:41:17 AM8/17/10
to
Karl Donaubauer wrote:
> Sina Da Ponte wrote:
>> [...]
>>
>> Ich habe gestern M$ Office 2010 Prof installiert (Parallellauf mit
>> M$ Office 2003 Prof) und alles läuft eigentlich auch ganz rund, nur
>> ein Problem habe ich, für das ich eine möglichst simple Lösung
>> suche (ich vermute, daß es nur eine Access-Grundeinstellung ist,
>> die ich aber noch nicht gefunden habe).
>> Und zwar geht es um folgendes: Beim Aufruf von Formularen, deren
>> RecordSource mit Verweisen auf andere Formulare in Form von
>> Parametern ausgestattet ist -- also etwa der Form:
>> 'Formulare!Intro!ID_Feld' --, erscheint plötzlich das bekannte
>> Parameter-Eingabefenster und verlangt die Eingabe des Parameters,
>> obwohl das Bezugsformular (mit richtig besetztem ID_Feld) geöffnet
>> ist ...
>> Mir schwante gleich, daß es an der dt. Syntax -- also der Art
>> *Formulare!* statt *Forms!* -- liegt; und nachdem ich probeweise an
>> einem AbfrageParameter statt 'Formulare' den Term 'Forms' verwendet
>> habe, klappte auch alles ganz prima.
>> ...

Mir geht es wie Gunter:
Ich hab's jetzt auch mit meinem deutschen A10 getestet und weder
gibt es ein Problem mit einem "Formulare!"-Parameter noch wird
"Forms" im Abfrageeditor umgewandelt.

Welche Sprache hat denn dein A10?
Bist du ganz sicher, dass ein bloßes Ändern in "Forms" Abhilfe
bringt und es nicht irgendwie an den Umständen hängt, Formular
beim ersten Test nicht geöffnet o.ä. ?

Sina Da Ponte

unread,
Aug 17, 2010, 11:52:59 AM8/17/10
to
Hallo Karl, Hallo Gunter,

Das war vielleicht ein Mißverständnis: Denn was Access in der
2010er-Version so alles macht (und vielleicht auch nicht macht), weiß
ich noch gar nicht -- ich hab' sie ja gestern erst installiert.

Mein Punkt war, daß der 'Formular!'-Verweis von 2003er DB-Versionen in
der 2010er Accessversion scheinbar nicht korrekt arbeitet (der Schein
trog allerdings ein bißchen, siehe Nachstehendes ;-)).

Inzwischen bin ich allerdings ein bißchen schlauer: Es verhält sich
nämlich offenbar so, daß zumindest in Access 2003 dann ein
'Formular!'-Bezug im SQL-Code nicht automatisch in 'Forms!' umgewandelt
wird, wenn der 'LIKE'-Operator vorgesetzt ist; so stellt sich mir die
Sache jedenfalls dar, nachdem ich mir das mal etwas genauer angesehen
habe ...

Ich benötige halt in manchen Abfragen die Parameter-Form 'Like "*" &
Forms!XYZ & "*"' o.ä. Wird dabei im Abfragedesigner die dt. Form
geschrieben, wandelt Access dabei den Term 'Formulare!' offensichtlich
*nicht* automatisch in 'Forms!' um, wie es sehr wohl geschieht, wenn
kein Like-Operator vorgeschaltet ist. Ich glaube, daß dies der Haken
ist. Jedenfalls scheint es so ...

> Welche Sprache hat denn dein A10?

Deutsch.

> Bist du ganz sicher, dass ein bloßes Ändern in "Forms" Abhilfe
> bringt

Ja, ich hab's getestet. -- Bleibt merkwürdig ... das ...

> und es nicht irgendwie an den Umständen hängt, Formular
> beim ersten Test nicht geöffnet o.ä.?

Nein, definitiv nicht. Ich habe das von dir empfohlene Tool verwendet,
um zu suchen und zu ersetzen, was die meisten Bezüge auf 'Forms!'
umstellte -- aber nicht alle. Und die, die das Tool nicht erwischte,
warum auch immer, habe ich jetzt händisch korrigiert (jedenfalls ein
paar, die ich auf die Schnelle finden konnte).

Ich meine: Es ist ja kein großer Beinbruch, der Schaden hält sich in
Grenzen; ich dachte aber, ich sei mit dem Problem vielleicht nicht
allein und jemand wüßte, an welchem Rädchen der Grundeinstellungen
vielleicht gedreht werden müßte.

Ansonsten: Respekt! Meine unter Access2003 entwickelten -- auch
komplexeren -- DBs laufen erstaunlich gut, und bisher, soweit ich sehe,
fehlerfrei; was ich, ehrlich gesagt, nach der Katastrophe von Office2007
(hab' ich seinerzeit nach einer reichlichen Woche qualvollem "Versuchen"
und unendlichen Nervereien wieder von den Rechnern geputzt) so nicht
erwartet hätte.

... wenn da bloß nich dieses furchtbare Design und die m.E. sagenhaft
unübersichtliche, geradezu katastrophale Programmführung wären. -- Gibt
es eigentlich Leute, die das wirklich gut finden, oder stehe ich da mit
meiner Ansicht vielleicht sogar allein auf weiter AccessUser-Flur?

Freundliche Grüße

Sina

Gunter Avenius

unread,
Aug 18, 2010, 2:18:51 AM8/18/10
to
Hallo Sina Da Ponte,

Sina Da Ponte schrieb folgendes:
...


> ... wenn da bloß nich dieses furchtbare Design und die m.E. sagenhaft
> unübersichtliche, geradezu katastrophale Programmführung wären. -- Gibt
> es eigentlich Leute, die das wirklich gut finden, oder stehe ich da mit
> meiner Ansicht vielleicht sogar allein auf weiter AccessUser-Flur?

Man gewöhnt sich daran ;-)

0 new messages