| |
| Wie Sie mit 3D-Druck glattere Oberflächen erhalten, eine Pressemitteilung
|
Autor
|
Thema: Dateien kopieren VBA (14984 mal gelesen)
|
wernerohnew Mitglied Konstrukteur
Beiträge: 24 Registriert: 22.02.2006 Maxdata P4 3,2GHz 3Gb Ram, ATI FireGL T2 Inv. 2008 SP2, WIN XP SP2
|
erstellt am: 31. Mrz. 2009 20:13 <-- editieren / zitieren --> Unities abgeben:
Hallo Forum, Ich möchte mittels eines Makros Dateien aus verschiedenen Vezeichnissen in ein spezielles Verzeichnis kopieren. Eine Auflistung der Dateien mitsamt der zugehörigen Pfade liegt in einer Excel Datei vor. Funktionieren müsste dies meiner Meinung nach mit dem Befehl filecopy. Leider weiß ich jedoch nicht den Befehl anzuwenden. Ein Listeneintrag sieht beispielsweise folgendermaßen aus c\versuch\beispiel\text1.doc. Diese und die anderen in der Liste befindlichen Dateien sollen nun in ein Vezeichnis z.B.: c:\sammlungkopiert werden. Zu beachten ist, dass sich die Dateien in verschiedenen Verzeichnissen befinden. Danke für eure Hilfe Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nepumuk Mitglied Entwicklungsleiter
Beiträge: 351 Registriert: 16.10.2004
|
erstellt am: 31. Mrz. 2009 23:11 <-- editieren / zitieren --> Unities abgeben: Nur für wernerohnew
Hallo Erner, da deine Angaben ein bisschen dürftig sind, musst du es dir selbst anpassen. Code: Option ExplicitPrivate Declare Function MakeSureDirectoryPathExists Lib "imagehlp.dll" ( _ ByVal DirPath As String) As Long Private Declare Function CopyFile Lib "kernel32.dll" Alias "CopyFileA" ( _ ByVal lpExistingFileName As String, _ ByVal lpNewFileName As String, _ ByVal bFailIfExists As Long) As Long Private Declare Function SearchTreeForFile Lib "imagehlp.dll" ( _ ByVal RootPath As String, _ ByVal InputPathName As String, _ ByVal InputPathBuffer As String) As Long Private Const MAX_PATH = 260 Private Const RETURN_ERROR = 0 Public Sub Copy_Files() Const DESTINATION_FOLDER = "C:\Sammlung\" Dim lngRow As Long, lngReturn As Long Dim strTemp As String, strFile As String Dim strPath As String, strFilename As String On Error GoTo err_exit lngReturn = MakeSureDirectoryPathExists(DESTINATION_FOLDER) If lngReturn = RETURN_ERROR Then Err.Raise Number:=vbObjectError + 1004, _ Description:="Kann Zielordner nicht erstellen." With Tabelle1 For lngRow = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row If Not IsEmpty(.Cells(lngRow, 1).Value) Then strFile = .Cells(lngRow, 1).Value strTemp = String$(MAX_PATH, vbNullChar) strPath = Mid$(strFile, 1, InStrRev(strFile, "\")) strFilename = Mid$(strFile, InStrRev(strFile, "\") + 1) lngReturn = SearchTreeForFile(strPath, strFilename, strTemp) If lngReturn = RETURN_ERROR Then .Cells(lngRow, 2).Value = "File not found!" Else '0~overwrite existing file / 1~error occures if file already exists lngReturn = CopyFile(strFile, DESTINATION_FOLDER & strFilename, 1) If lngReturn = RETURN_ERROR Then .Cells(lngRow, 2).Value = "Copy fail!" End If End If Next End With Exit Sub err_exit: MsgBox "Fehler: " & CStr(Err.Number) & vbLf & vbLf & _ Err.Description, vbCritical, "Fehlermeldung" End Sub
------------------ Gruß Nepumuk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wernerohnew Mitglied Konstrukteur
Beiträge: 24 Registriert: 22.02.2006 Maxdata P4 3,2GHz 3Gb Ram, ATI FireGL T2 Inv. 2008 SP2, WIN XP SP2
|
erstellt am: 01. Apr. 2009 08:50 <-- editieren / zitieren --> Unities abgeben:
Hallo Nepumuk, danke für Deine schnelle Antwort. Das Makro welches Du mir geschickt hast, werde ich heute abend testen. Ich habe eine Dateiliste angehängt. Hier ist ersichtlich, dass die Dateien in verschiedenen Verzeichnissen liegen. diese möchte ich gerne in ein separates Verzeichnis kopieren. Gruß wernerohnew Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Paulchen Mitglied Bauing./SW-Entwickler
Beiträge: 1227 Registriert: 19.08.2004 Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice
|
erstellt am: 01. Apr. 2009 09:21 <-- editieren / zitieren --> Unities abgeben: Nur für wernerohnew
Hallo wernerohnew, warum VBA und warum per Makro und warum aus Excel? Willst Du diesen Kopiervorgang einmalig vornehmen - oder benötigst Du das in Zukunft häufiger? Können die Verzeichnisse (Quellen) wechseln oder sind sie immer (!) gleich? Ist das Ziel immer (!) gleich? Hier mal ein paar Gedanken: Excel lässt sich z. B. in eine simple .txt-Datei exportieren. Ob Komma- oder Tab- oder wie-auch-immer-getrennt je nach gusto. Eine Batch-Datei kann so etwas elegant und schnell weiterverarbeiten. Code: XCOPY C:\Dokume~1\USER\Desktop\*.* U:\Desktop\*.* /E /Q /H /R /Y /D
kopiert sämtliche Dateien ohne zu fragen vom Desktop auf das Sicherungslaufwerk U:\. Da hilft dann die Hilfe zu XCOPY in DOS.Generell schreit die Aufgabenstellung förmlich nach einem Skript zur Stapelverarbeitung. Für komplexere Dateioperationen nimm statt dem Windows-Explorer z. B. den TotalCommander. ------------------ DIN1055.de | Lastannahmen für Anwender NEU: Foren zu DIN 1055 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
hotstaks2005 Mitglied Elektriker
Beiträge: 142 Registriert: 03.07.2008 EPLAN 5.7 Office 2003
|
erstellt am: 01. Apr. 2009 14:14 <-- editieren / zitieren --> Unities abgeben: Nur für wernerohnew
Hi Excelgemeinde; heute morgen hab ich mir überlegt wie ich aus meinen Artikeldaten (aus Eplan) automatisiert PDF-Files (in Artikeldaten als String: x:\Daten\xy.pdf) hinterlegt herausbekomme. Dies Artikeldaten gebe ich direkt mit den Eplan-Tools (Eplan5-Board) aus zur Weiterverarbeitung. Dann suchte ich eine Möglichkeit die PDF-Files auto. auszugeben und finde in diesm Thread gleich die Antwort dafür -SUPER!!!! Dieses VBA macht genau das was ich möchte und gesucht habe. Danke Forum MfG Wolfgang >>>An Paulchen - kennen uns ja bereits Bei dieser VBA nur noch Daten importieren VBA ausführen und die gewünschten PDF-Files landen im Kundenordner mit Fehlermeldung wenn eine Datei nicht vorhanden. Schneller kanns doch gar nicht mehr gehen! Grüße Wolfgang ------------------ Immer wieder neu lernen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wernerohnew Mitglied Konstrukteur
Beiträge: 24 Registriert: 22.02.2006 Maxdata P4 3,2GHz 3Gb Ram, ATI FireGL T2 Inv. 2008 SP2, WIN XP SP2
|
erstellt am: 01. Apr. 2009 19:32 <-- editieren / zitieren --> Unities abgeben:
Hallo Nepumuk, ich benötige diese Prozedur öfters, also erscheint es mir sinnvoll dies als Makro auszuführen. Ebenso ändern sich die Pfade und die Dateitypen. Dein Makro habe ich zuerst mal Zuhause ausprobiert. Es funktioniert prima!! Danke Kann es sein das JPG-Dateien nicht funktionieren? Es kommt nämlich die Meldung [i][File not found!!/i] Noch eine Frage: Können bei dem Makro in Serverumgebung Probleme auftreten? Nochmals Danke für Deine Mühe Gruß Achim Erner Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wernerohnew Mitglied Konstrukteur
Beiträge: 24 Registriert: 22.02.2006 Maxdata P4 3,2GHz 3Gb Ram, ATI FireGL T2 Inv. 2008 SP2, WIN XP SP2
|
erstellt am: 01. Apr. 2009 20:29 <-- editieren / zitieren --> Unities abgeben:
|
Nepumuk Mitglied Entwicklungsleiter
Beiträge: 351 Registriert: 16.10.2004
|
erstellt am: 01. Apr. 2009 20:45 <-- editieren / zitieren --> Unities abgeben: Nur für wernerohnew
Hallo Achim, ob das mit UNC-Pfaden funktioniert kann ich nicht sagen, ich hab hier kein Netz. Zur Not habe ich eine Funktion, welche UNC-Pfade in Lokale Pfade umwandeln kann. Diese Funktion ist bei unseren Kunden im Einsatz und bisher gab's noch keine Probleme. ------------------ Gruß Nepumuk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wernerohnew Mitglied Konstrukteur
Beiträge: 24 Registriert: 22.02.2006 Maxdata P4 3,2GHz 3Gb Ram, ATI FireGL T2 Inv. 2008 SP2, WIN XP SP2
|
erstellt am: 02. Apr. 2009 07:52 <-- editieren / zitieren --> Unities abgeben:
|
JumpMe Mitglied Pensionist
Beiträge: 14 Registriert: 16.02.2012
|
erstellt am: 16. Feb. 2012 15:04 <-- editieren / zitieren --> Unities abgeben: Nur für wernerohnew
|
JumpMe Mitglied Pensionist
Beiträge: 14 Registriert: 16.02.2012
|
erstellt am: 16. Feb. 2012 15:17 <-- editieren / zitieren --> Unities abgeben: Nur für wernerohnew
Hallo Forum, ich bin Neu hier und habe mal das makro probiert, leider ohne erfolg. Weil ich keine Ahnung hab wo etwas anfängt (in welcher Zelle und wie dann weitergeht) Wäre nett wenn mir jemand Helfen könnte. Danke Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Paulchen Mitglied Bauing./SW-Entwickler
Beiträge: 1227 Registriert: 19.08.2004 Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice
|
erstellt am: 17. Feb. 2012 09:16 <-- editieren / zitieren --> Unities abgeben: Nur für wernerohnew
Hi JumpMe, willkommen auf CAD.de! Sei doch so nett und berichte a) ein bisschen was über Deine Vorkenntnisse: Weißt Du, was VBA ist? Kennst Du die IDE? Kannst Du mit dem Begriff "Modul" was anfangen? b) was Du bisher versucht hast, um's zum Laufen zu bekommen. Entschuldige die Fragerei, ich will mir (und anderen) ersparen, unnötigerweise bei Adam und Eva anzufangen. ------------------ DIN1055.de | Lastannahmen für Anwender Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
JumpMe Mitglied Pensionist
Beiträge: 14 Registriert: 16.02.2012
|
erstellt am: 23. Feb. 2012 11:12 <-- editieren / zitieren --> Unities abgeben: Nur für wernerohnew
Sorry liebes Forum, dass ich mich erst jetzt melde. meine Vorkenntnisse sind eher bescheiden. Ich will soweit ich kann die Fragen beantworten: a) IN VBA kenne ich garnicht richtig aus und mit IDE kann ich recht wenig anfangen? Mit dem Begriff "Modul" oder modulare Abschnitte kenn ich von meiner "Clipper-Zeit" b) aus meiner Tabelle kann ich mittels Hyperlink die jeweilige Datei aufrufen (in der Regel sind dies Bilder, Filme oder auch PDF-Dateien) Ich habe eine Tabelle in der Sport-Videos hinterlegt sind mit dem Namen des Films und der Ergebnisliste (meist PDF). Nun möchte ich ebenfalls per Hyperlink die entsprechende Datei in neues Verzeichnis kopieren um diese Filme weitergeben zu können und nicht gleich alle Filme in diesem Verzeichnis. Wäre schön wenn, es klappen könnte dass mir einer weiterhilft. Liebe Grüße JumpMe Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
JumpMe Mitglied Pensionist
Beiträge: 14 Registriert: 16.02.2012
|
erstellt am: 20. Mrz. 2012 10:31 <-- editieren / zitieren --> Unities abgeben: Nur für wernerohnew
|
Thomas Harmening Moderator Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 Das Innerste geäussert und aufs Äusserste verinnerlicht
|
erstellt am: 20. Mrz. 2012 12:38 <-- editieren / zitieren --> Unities abgeben: Nur für wernerohnew
|
JumpMe Mitglied Pensionist
Beiträge: 14 Registriert: 16.02.2012
|
erstellt am: 20. Mrz. 2012 18:45 <-- editieren / zitieren --> Unities abgeben: Nur für wernerohnew
also ich habe in der Ersten ZEILE den Dateipfad angelegt (da ich an unterschiedlichen Rechnern arbeite und mit einer externen Festplatte in der 2. Zeile befinden sich meine Überschriften zu den Spalten ab der 3. Zeile befinden sich meine "Datensätze" Spalte 1 ob ich die Datei weitergebe oder nicht Spalte 2 ob die Datei markiert werden soll oder nicht Spalte 3 Art der Aufnahme und die erste Grobe weiter Unterteilung des Dateipfades (z.B. TRA, TUM, SYN oder DMT Spalte 4 das Unterverzeichnis der Dateigruppe in einer (z.B. Laufwerk.\Filme\TRA\Seitwärtssalti\) Spalte 5 der Name der Datei die Kopiert werden soll. (z.B. Film_2010_02_12__001.mpg) Wenn ich also in der Spalte 2 ein "x" oder "Ja" stehen habe, möchte ich die Datei in einem seperaten Neuen Verzeichnis ggf. sogar anderes Laufwerk kopieren, ist der Eintrag in der Spalte "" (leer), dann eben nicht. DIe Tabelle hat ca. 8000. Namen (Filme) gespeichert, wobei in jeder Zeile nur ein Film steht. Die ich so durchlaufen möchte, bis zum Tabellenende. Ich hoffe ich habe mich nicht zu kompliziert ausgedrückt. Jetzt schon mal danke für's reinlesen. Jumper
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Harmening Moderator Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 Das Innerste geäussert und aufs Äusserste verinnerlicht
|
erstellt am: 20. Mrz. 2012 20:14 <-- editieren / zitieren --> Unities abgeben: Nur für wernerohnew
Zitat: Ich hoffe ich habe mich nicht zu kompliziert ausgedrückt. Jetzt schon mal danke für's reinlesen.[/B]
nene passt schon. Senario nachgebaut, Nepumuks Code angepasst mit [ALT] & [F11] kommt man zum Quellcode (etwas ausdokumentiert) Beispielmappe Hochgeladen. Erklärbär hat heute Feierabend Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
JumpMe Mitglied Pensionist
Beiträge: 14 Registriert: 16.02.2012
|
erstellt am: 21. Mrz. 2012 14:13 <-- editieren / zitieren --> Unities abgeben: Nur für wernerohnew
Hallo lieber Erklärbär Thomas, habe versucht das Makro zum Laufen zu bekommen. Habe jetzt zwar schon einiges verstanden. Leider legt er bei mir weder das Zielverzeichnis an "DESTINATION_FOLDER = Cells(1, 28).Value" noch kopiert er meine Dateien "strFile" ist bei mir "" ebenso wie der Pfad beim Debuggen habe ich bei "strFile = .Cells(1, 2).Value & .Cells(lngRow, 7).Value & .Cells(lngRow, 8).Value & ".mpg" nur ein den Wert File not found!".mpg" also ich hänge wieder daran weil ich gewisse Programmierkenntnisse einfach nicht beherrsche! Wäre nett wenn ich nochmals so tolle Hilfe bekäme. Jumper Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Harmening Moderator Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 Das Innerste geäussert und aufs Äusserste verinnerlicht
|
erstellt am: 21. Mrz. 2012 20:06 <-- editieren / zitieren --> Unities abgeben: Nur für wernerohnew
Öhm, ne, Gesten war kein Erklärbär Anwesend, nur der Nachbaubär... und der ist so gut wie Blind aber es gibt auch noch den Wahrsagerbär: Zitat: Leider legt er bei mir weder das Zielverzeichnis an "DESTINATION_FOLDER = Cells(1, 28).Value" noch kopiert er meine Dateien "strFile" ist bei mir ""
- in welcher Zelle liegt E:\_Video\EINZELUEBUNGEN_FUER_DTB\ ? Mir schaut Zeile 1 eh so aus als wären mehrere Zellen zu einem Bereich zusammengefasst worden. Zitat: beim Debuggen habe ich bei "strFile = .Cells(1, 2).Value & .Cells(lngRow, 7).Value & "\" & .Cells(lngRow, 8).Value & ".mpg" nur ein den Wert File not found!".mpg"
<ErleuchtungsBär tappt in den Raum und somit ist voriger Antwortsatz wohl ungültig> hmmm, hast du den Code auch in deine Excelvideofile reinkopiert? Es schaut nur auf die Excelmappe in der es sich auch befindet. Ausserdem fehlt sicher noch ein "\" & . Also kopiere mal den Code in deine Mappe ;-) oder und deshalb auch gestern mein Wink mit dem Dateinamen, mache eine Kopie deiner Excelmappe, lösche alles bis auf 10 Zeilen raus, speichern und Zippen, hier hochladen, dann hat Fragende und Antwortgebende fast dieselbe Grundlage vorliegen - und es macht manchmal das Leben leichter und nun suche ich den Feierabendbär
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
JumpMe Mitglied Pensionist
Beiträge: 14 Registriert: 16.02.2012
|
erstellt am: 02. Apr. 2012 19:59 <-- editieren / zitieren --> Unities abgeben: Nur für wernerohnew
Ich versuche gerade verzweifelt meine gezipte datei hierrein zu bekommen und es will nicht klappen. War jetzt die ganze Zeit "on Tour" und komme jetzt mal wieder heim. Habe aber immer noch das Gleiche Problem wie bisher. Die ganze Compostersache ist ja angenehm wenn man versteht warum aber wenn nicht sind es Höllenqualen! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
JumpMe Mitglied Pensionist
Beiträge: 14 Registriert: 16.02.2012
|
erstellt am: 03. Apr. 2012 10:44 <-- editieren / zitieren --> Unities abgeben: Nur für wernerohnew
ich bräuchte HIIIIIIIIIIIIIIIIIIIIILFE :confused: :confused: :hubbi: Neuer Versuch meine Zip-Datei hochzuladen. ich habe nachwie vor das Problem, dass ich ich die in der Spalte 1 markierte Zeilen in ein eigenes Verzeichnis kopieren möchte. Jedoch dass das Makro Keine Dateien kopiert. Welche Zeile ist den verantwortlich für was? Ich möchte mich schon mal bei allen bedanken, die sich mit MEINEM problem befasst haben. (Halte ich nicht für Selbstverständlich).:) :) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Paulchen Mitglied Bauing./SW-Entwickler
Beiträge: 1227 Registriert: 19.08.2004 Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice
|
erstellt am: 03. Apr. 2012 13:38 <-- editieren / zitieren --> Unities abgeben: Nur für wernerohnew
|
JumpMe Mitglied Pensionist
Beiträge: 14 Registriert: 16.02.2012
|
erstellt am: 03. Apr. 2012 15:21 <-- editieren / zitieren --> Unities abgeben: Nur für wernerohnew
|
Thomas Harmening Moderator Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 Das Innerste geäussert und aufs Äusserste verinnerlicht
|
erstellt am: 03. Apr. 2012 17:19 <-- editieren / zitieren --> Unities abgeben: Nur für wernerohnew
Zitat: Original erstellt von JumpMe:Das ist richtig, Entschuldigt bitte aber ich hoffe dadurch nicht am schluss der Kette gelangt zu sein
hmmm, doch, drum ist hier erst mal Schluss, das wird mir jetzt zu konfus ;-) und bevor in 2 verschiedenen Beiträgen geantwortet wird: Dieser Beitrag ist hiermit geschlossen - Hier geht es weiter <Klick> Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |