Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
948to952
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
948to952
948to952
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Ansatz oder Lösung? gesucht

Ansatz oder Lösung? gesucht
06.02.2008 18:18:49
Jean
Hallo,
werktäglich wird eine Excel-Mappe in D:\Prod gespeichert.
Die Mappennamen beginnen immer mit TB, gefolgt vom Datum, also
zB. TB080202 oder TB080203 usw.).
Nun sollen die Inhalte der einzelnen Mappen aus dem Tabellenblatt 1
aus A3, B3 und C3 in eine weitere Mappe mit Namen TOTAL untereinander übertragen werden, damit die Daten zusammengefasst werden können.
Die Übertragung der Werte erfolgt unregelmäßig.
Problem:
Die Tabellennamen sind nicht lückenlos (z.B. wegen Sa, So)
Die Übertragung der Daten erfolgt nicht werktäglich, sondern unregelmäßig.
Wird TOTAL geöffnet und zB in eine Zelle 2 eingegeben, so sollten die Daten des Monates Februar aus den diversen Mappen in Total übernommen werden bist heute()-1.
Wie könnte man dies anpacken?
Gruß
Jean

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

Betreff
Datum
Anwender
Anzeige
AW: Ansatz oder Lösung? gesucht
06.02.2008 18:59:00
Josef
Hallo Jean,
als Ansatz. (ungetestet)
' **********************************************************************
' Modul: Modul2 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub TOTAL()
Dim intMonth As Integer
Dim strPath As String, strFile As String, strF As String
Dim tmp(1 To 31, 1 To 3), l As Long
Dim objWB As Workbook


Do
    If intMonth > 0 Then MsgBox "Eingabe ungültig!", vbExclamation, "Hinweis"
    
    intMonth = Application.InputBox("Gewünschtes Monat: (1-12)", "Monat", CStr(Month(Date)), Type:=1)
    
    If intMonth = 0 Then Exit Sub
    
Loop While intMonth < 1 Or intMonth > 12

On Error GoTo ErrExit
GMS

strPath = "D:\Prod"

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

With Sheets("Tabelle1") 'Tabellenname (Ausgabetabelle) anpassen!
    
    .Range("A2:C" & Rows.Count).ClearContents
    
    strFile = Dir(strPath & ".xls*")
    
    Do While strFile <> ""
        
        strF = Replace(strFile, strPath, "")
        
        If strF Like "TB##" & Format(intMonth, "00") & "##.*" Then
            l = l + 1
            Set objWB = Workbooks.Open(strFile)
            tmp(l, 1) = objWB.Sheets(1).Range("A3") 'oder tmp(l, 1) = objWB.Sheets("Tabellenname").Range("A3")
            tmp(l, 2) = objWB.Sheets(1).Range("B3")
            tmp(l, 3) = objWB.Sheets(1).Range("C3")
            objWB.Close False
            Set objWB = Nothing
        End If
        
        strFile = Dir
    Loop
    
    .Range("A2:C" & l + 1) = tmp
    
End With

ErrExit:
GMS True

If Err.Number > 0 Then
    MsgBox Err.Number & vbLf & Err.Description, vbExclamation, "Fehler"
End If
Set objWB = 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: Ansatz oder Lösung? gesucht
06.02.2008 19:30:29
Jean
Hallo Sepp,
vielen Dank für Dein Programm. Die Prozedur GSM sagt mir im Moment noch nichts und ich denke, dass in diesem Teil die Ursache zu suchen ist, weshalb es noch nicht funktioniert.
Beim Test wurde kein Datum übertragen,
Vermutlich liegt es auch mit an dieser Zeile:
strFile = Dir(strPath & ".xls*")
Do While strFile ""
Diese Zeile ist mir nicht ganz klar. Diese sollte ja zB einen Namen bilden wie TB200802.01.xls, dh. an den String TB, den ich nicht erkenne, müsste ja noch das Datum angehängt werden.
Die Schleife wird jedenfalls nicht durchlaufen.
Hast Du einen Rat?
Besten Dank im Voraus.
Gruß
Jean

Anzeige
AW: Ansatz oder Lösung? gesucht
06.02.2008 19:32:32
Josef
Hallo Jean,
GMS schaltet nur Excel für die Zeit des Makros "Still".
Der Fehler liegt hier

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


das muss


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


lauten.


Gruß Sepp



AW: Ansatz oder Lösung? gesucht
06.02.2008 20:03:17
Jean
Hallo Sepp
nachdem hinter TB 2 weitere ## in der folgenden Zeile
If strF Like "TB####" & Format(intMonth, "00") & "##.*" Then
eingesetzt wurden, überträgt das Programm nun die Daten in die Tabelle TOTAL.
Ich danke Dir ganz herzlich für die Erstellung dieses Programms. Es wird einiges erleichtern.
Leider habe ich den Sinn des SUB GMS nicht verstanden, da bleibt also eine Verständnislücke. Einziger Hinweis ist die Sanduhr, die im Einzelschrittmodus zu erkennen ist. Solltest Du Zeit und Lust haben, dann wären ein paar Sätze dazu sehr willkommen.
Tausend Dank für Deine Hilfe.
Gruß
Jean

Anzeige
AW: Ansatz oder Lösung? gesucht
06.02.2008 20:27:00
Josef
Hallo Jean,
freut mich. Die zwei ## konnte ich nicht wissen, weil du die Dateinamen so dargestellt hattest.
Zu GMS:
Das ist eine Funktion die folgendes erledigt (je nach Modus = True/False)

  • Bildschirmaktualisierung - an/aus

  • Ereignisüberwachung - an/aus

  • Bildschirmmeldungen - an/aus

  • Cancelbutton - ja/nein

  • Berechnung - vorheriger Zustand/manuell

  • Cursor - Default/Sanduhr

  • Zwischenablage leeren



Gruß Sepp



Anzeige
AW: Ansatz oder Lösung? gesucht
06.02.2008 20:44:00
Jean
Hallo Sepp,
auch für die Erläuterung der Funktionen besten Dank.
Nun ist das Programm verstanden, was mir immer sehr wichtig ist.
Ich wünsche Dir einen angenehmen Abend.
Gruß
Jean

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige