Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
932to936
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
932to936
932to936
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Dateien auslesen per VBA

Dateien auslesen per VBA
05.12.2007 21:22:00
Peter

Hallo Leute!
Vielleicht könnt´ ihr mir ja weiterhelfen.
Ich habe in einem Verzeichnis ("C:\Ordner-1") lauter xls-Files abgespeichert, welche alle den gleichen Aufbau haben (d.h. es gab ein Standard-Berichtsformular, welches je Teammitglied unter einem anderem Dateinamen in diesem Verzeichnis abgespeichert wurde (z.B.: datei-a.xls, datei-b.xls, datei-c.xls, usw.).
Nachdem das ziemlich viele Teammitglieder (und damit auch xls-Dateien) sind, möchte ich jetzt per VBA folgendes machen:
Ich möchte:
1) Das Verzeichnis "C:\Ordner-1" durchsuchen
2) Je gefundener xls-Datei einige Zellen (immer die gleichen, z.B.: A1, B2, C3) auslesen
3) Je gefundener Datei die ausgelesenen Zellinhalte in eine andere xls-Datei (ein anderes vorgegebens Berichtsformular (datei-xyz.xls), welches unter "C:\Ordner-0" liegt) einspielen, wobei die Zellen in dieser Zieldatei nicht die gleichen wie in der Quelldatei sind (z.B. "A1=>A11, B2=>B22, C3=>B33")
4) Die nun beschriebene Arbeitsmappe "datei_xyz.xls" jeweils unter dem selben Namen wie die gerade ausgelese Quelldatei in eine neues Verzeichnis (z.B. "C:\Ordner-2") abspeichern, dabei aber die Datei "datei_xyz.xls" nach dem Abspeichern unter dem neuen Dateinamen nicht beschrieben lassen.
Ich bastle nun schon so lange daran herum, dass mittlerweile totales Chaos in meinem Code herrscht.
Vielleicht geht das ja alles total einfach und jemand von Euch hat eine Idee und möchte mir auch weiterhelfen.
Dankeschön vorab!
P.

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateien auslesen per VBA
05.12.2007 21:24:00
Hajo_Zi
Hallo Peter,
suche mal im Forum nach Application.FileSearch

AW: Dateien auslesen per VBA
05.12.2007 21:35:21
Peter
Hallo. Naja, das Durchsuchen des Ordners an sich ist ja kein Problem.
Ich schaff´s nur nicht die inhalte einzeln auszulesen, einzeln in die Vorlage reinzuschreiben und diese dann auch mit dem anderen namen abzuspeichern.

AW: Dateien auslesen per VBA
05.12.2007 21:37:41
Hajo_Zi
Hallo Peter,
es müssen alle Dateien geöffnet werden. Aus geschlossenen Dateien was auslesen, ist ein wenig aufwendig.
Gruß Hajo

Anzeige
AW: Dateien auslesen per VBA
05.12.2007 21:45:58
Peter
naja, dass ist schon ok so. ich weiß nur nicht ganz, wie ich die einzelnen arbeitsmappe anspreche,also den wechsel von quelldatei zu vorlage und dann abspéichern unter neuem namen.

AW: Dateien auslesen per VBA
05.12.2007 22:31:00
Josef
Hallo Peter,
ungetestet.
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Private Declare Function MakeSureDirectoryPathExists Lib "imagehlp.dll" _
    (ByVal lpPath As String) As Long


Sub auslesen()
Dim objWB As Workbook, objTMP As Workbook
Dim strPath As String, strTmp As String, strNew As String
Dim StrFile As String

On Error GoTo ErrExit
GMS

'# ANPASSEN #
strPath = "C:\Ordner-1\" 'Verzeichnis mit den Dateien
strNew = "C:\Ordner-2\" 'Neuer Speicherort"
strTmp = "C:\Ordner-0\xyz.xls" 'Pfad zur Vorlage
'############

If Right(strPath, 1) <> "\" Then strPath = strPath & "\"
If Right(strNew, 1) <> "\" Then strNew = strNew & "\"

MakeSureDirectoryPathExists strPath
MakeSureDirectoryPathExists strNew

StrFile = Dir(strPath & "*.xls")

Set objTMP = Workbooks.Open(strTmp)

Do While StrFile <> ""
    
    Set objWB = Workbooks.Open(strPath & StrFile)
    
    objTMP.Sheets(1).Range("A11") = objWB.Sheets(1).Range("A1")
    objTMP.Sheets(1).Range("B22") = objWB.Sheets(1).Range("B2")
    objTMP.Sheets(1).Range("C33") = objWB.Sheets(1).Range("C3")
    
    objTMP.SaveCopyAs strNew & StrFile
    
    objWB.Close False
    
    StrFile = Dir
Loop

objTMP.Close False

ErrExit:
If Err.Number > 0 Then MsgBox Err.Number & vbLf & Err.Description
GMS True

Set objWB = Nothing
Set objTMP = Nothing
End Sub


Sub GMS(Optional ByVal Modus As Boolean = False)
Static lngCalc As Long

With Application
    .ScreenUpdating = Modus
    .EnableEvents = Modus
    .DisplayAlerts = Modus
    .EnableCancelKey = IIf(Modus, 1, 0)
    If Modus Then
        .Calculation = IIf(lngCalc <> 0, lngCalc, xlCalculationAutomatic)
    Else
        lngCalc = .Calculation
        .Calculation = xlCalculationManual
    End If
    .Cursor = IIf(Modus, -4143, 2)
    .CutCopyMode = False
End With

End Sub

Gruß Sepp

Anzeige
AW: Dateien auslesen per VBA
06.12.2007 11:10:00
Peter
Hallo Sepp!
Tadellos - genau so sollte das vom Grundprinzip funtionieren.
Die Feinheiten schaff´ ich hoffentlich selber!
Dankeschön!!!
Lg,
Peter

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige