Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA Makro zum kopieren von Daten aus mehreren Dateien in einem Ordner
#1
Guten Morgen,

ich habe mit folgender Aufgabe zu kämpfen:

mein Makro soll bei allen in einem bestimmten Ordner befindlichen Exceldateien zwei Spalten herauskopieren und in meine Zusammenfassungsdatei einfügen. Ich denke ich bin auf dem richtigen Weg, jedoch wird ab der Zeile (Workbooks.Open Filename:=Dateiname), in der eine solche Datei geöffnet werden soll, der Laufzeitfehler 1004 aufgezeigt.
Bin für jede Hilfe dankbar.

Code:
Sub Auslesen()

   Dim Dateiname As String

   Set Ziel = ThisWorkbook.Worksheets("Statusmatrix Functions")

   Application.ScreenUpdating = False
   
       Dateiname = Dir$("Pfad...\*.xls")
       Spalte = 5
       
       Application.ScreenUpdating = False
               
           Do
               
               If Spalte = 1000 Then Stop
               
               Workbooks.Open Filename:=Dateiname
                     
               Workbooks(Dateiname).Range("E:F").Value = Workbooks(Ziel).Range(Spalte, Spalte + 1)
                                             
               Workbooks(Dateiname).Close
               
               Spalte = Spalte + 2
               
               Application.ScreenUpdating = True
           
           Loop Until Dateiname = ""
           
           

End Sub

   
Antworten Top
#2
Code:
Sub M_snb()
 sn=split(createobject("wscript.shell").exce("cmd /c dir G:\OF\*.xls /b/s").stdout.readall,vbcrlf)
 
  for j=0 to ubound(sn)-1
   with getobject(sn(j))
      .sheets(1).usedrange.columns(5).resize(,2).copy thisworkbook.sheets(1).cells(1,columns.count).end(xltoleft).offset(,1)
      .close 0
    end with
   next
end sub
   
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
[-] Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:
  • btopdan
Antworten Top
#3
(28.02.2018, 10:43)snb schrieb:
Code:
Sub M_snb()
 sn=split(createobject("wscript.shell").exce("cmd /c dir G:\OF\*.xls /b/s").stdout.readall,vbcrlf)
 
 for j=0 to ubound(sn)-1
   with getobject(sn(j))
     .sheets(1).usedrange.columns(5).resize(,2).copy thisworkbook.sheets(1).cells(1,columns.count).end(xltoleft).offset(,1)
     .close 0
   end with
  next
end sub
   
Vielen Dank schonmal. Kannst du mir den Code eventuell ein wenig erklären? So fit bin ich noch nicht und sehe nicht exakt an welche stelle der pfad gehört
Antworten Top
#4
Habe den Code mal versucht laufen zu lassen, das Ergebnis:
[
Bild bitte so als Datei hochladen: Klick mich!
]
Antworten Top
#5
Moin

ein kleiner tippfehler:
Zitat:sn=split(createobject("wscript.shell").exce("cmd /c dir G:\OF\*.xls /b/s").stdout.readall,vbcrlf)
 muss heißen
sn=split(createobject("wscript.shell").exec("cmd /c dir G:\OF\*.xls /b/s").stdout.readall,vbcrlf)

dann läufts
Der Pfad  kommt an die grüne Stelle
[-] Folgende(r) 1 Nutzer sagt Danke an Wastl für diesen Beitrag:
  • btopdan
Antworten Top
#6
Moin!
Der Shell-Befehl lautet .exec und nicht .exce
Wo steht der Pfad?
Du musst doch nur nach den Backslashes \ suchen.
Ob der Code funktioniert, habe ich nicht getestet.
Allgemein sind Codes von snb knackig kurz, für einen Laien aber nicht nachvollziehbar.
Wenn ihn jemand erklären wollte, würde es eine längere Geschichte.
Falls Du Zeit und großes Interesse hast, kannst Du mal nach [url=
Dateiupload bitte im Forum! So geht es: Klick mich!
script host tutorial[/url] suchen.

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  • btopdan
Antworten Top
#7
Ich danke allen vielmals, der Code läuft!
Antworten Top
#8
Jetzt habe ich aber noch eine Frage, ist aber kein Muss:

Wenn jetzt eine Datei in den Quellordner dazu kommt, muss ich logischerweise das Makro noch einmal laufen lassen, jedoch kopiert es dann auch alles, was er bis zu dieser Datei bereits hatte. Kann ich das schnell beheben oder geht das in diesem Code nicht mehr?
Antworten Top
#9
Dann kannst du diese Dateien löschen ?


Code:
Sub M_snb()
 sn=split(createobject("wscript.shell").exec("cmd /c dir G:\OF\*.xls /b/s").stdout.readall,vbcrlf)
 
 for j=0 to ubound(sn)-1
   with getobject(sn(j))
     .sheets(1).usedrange.columns(5).resize(,2).copy thisworkbook.sheets(1).cells(1,columns.count).end(xltoleft).offset(,1)
     .close 0
   end with
  next

   kill "G:\OF\*.xls"
end sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste