915 Aufrufe
Gefragt in Tabellenkalkulation von robbi58 Mitglied (978 Punkte)
Bearbeitet von robbi58

Ich habe im Forum einen Beitrag durchgelesen und bin dabei auf eine interessante Frage zum Thema zusammenführen mehrere Excel-Formulare gestoßen.

Auf dem Schulserver werden die Excel-Arbeitsblätter abgespeichert und ich möchte nun die eingegeben Daten der SchülerInnen auslesen:

'und Inhalt des ersten Blatts in das erste Blatt der aktuellen Arbeitsmappe kopieren

             Workbooks(DateiName).Sheets(1).UsedRange.Copy ThisWorkbook.Worksheets(1).Range("A" & ThisWorkbook.Worksheets(1).Range("A" & Rows.Count).End(xlUp).Row + 1)

(die Formel stammt übrigens vom Forumsmitglied M.O.; ich habe nur einen Teil wiedergegeben).

Das funktioniert wunderbar, allerdings wird die ganze Seite ausgelesen und in die neue Arbeitsmappe eingetragen. Ich möchte aber nur bestimmte Zellenwerte (z. B. A2, B4, E8,...; wo eben die Ergebnisse stehen) auslesen und zeilenweise in die neue Arbeitsmappe übertragen. Wahrscheinlich muss man nur eine Kleinigkeit ändern, aber da bin ich mit meinen Kenntnissen schon überfordert.

Danke Robert

Vielleicht habe ich um zu viele Ecken gedacht: ich ordne die Ergebnisse den Zellen z. B. In Zeile 25 jeder Arbeitsmappe zu. Dann müsste nur diese Zeile von allen abgegebenen Arbeitsmappen eingelesen und zugeordnet werden.

15 Antworten

0 Punkte
Beantwortet von robbi58 Mitglied (978 Punkte)
Bearbeitet von robbi58

Hallo M.O.

Die Formel funktioniert. Allerdings bekomme ich einen Debugger:

Bei jedem Blatt (ich muss es siebenmal wegklicken und habe insgesamt 7 Blätter zur Probe abgespeichert) drücke ich auf nein. 

Angezeigt wird folgende Meldung:

Das Resultat allerdings passt (die erste Zeile bleibt aber nicht frei):

Danke für deine Bemühungen. Robert

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)

Hallo Robert,

schau mal, ob es so besser:

Private Sub CommandButton1_Click()

Dim DateiName As String

Dim strPfad As String

Dim EinfZeile As Long

'Benachrichtigungen ausschalten
Application.DisplayAlerts = False

strPfad = "C:\Users\rmair\Documents\Probe\"

'Zähler für Einfügezeile auf 1 festlegen, Einfügen erst ab Zeile 2
EinfZeile = 1

With Application

        .ScreenUpdating = False

        .EnableEvents = False

End With

DateiName = Dir(strPfad & "*.xl*")

    Do While DateiName <> ""

        If ThisWorkbook.Name <> DateiName Then

         If Left(DateiName, 3) = "ueb" Then

            EinfZeile = EinfZeile + 1    'Zähler für Einfügezeile um 1 erhöhen

            Workbooks.Open Filename:=strPfad & DateiName

            Workbooks(DateiName).Sheets(1).Rows(30).Copy
            'nur Werte einfügen
            ThisWorkbook.Worksheets(1).Rows(EinfZeile).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
            
            Application.CutCopyMode = False
            
            Workbooks(DateiName).Close SaveChanges:=False  'geöffnete wieder schließen, ohne Speicherung

  End If

        End If

        DateiName = Dir

    Loop

With Application

        .ScreenUpdating = True

        .EnableEvents = True

End With

'Benachrichtigungen einschalten
Application.DisplayAlerts = True

End Sub

Gruß

M.O.

0 Punkte
Beantwortet von robbi58 Mitglied (978 Punkte)
Bearbeitet von robbi58
Jetzt funktioniert alles wie am Schnürchen. Die Daten werden ausgelesen und wie gewünscht ab Zeile 2. Super.

Ich werde das morgen mal in der Klasse ausprobieren.

Mir ist es schon etwas peinlich, aber eine allerletzte Frage hätte ich noch: ich beabsichtige den Test (oder wie man das auch immer nennen will) noch heute online (auf One-Note) den SchülerInnen zur Verfügung zu stellen. Der Grund: die Synchronisierung dauert mitunter etwas länger (die Dauer ist auch bei den Schülergeräten sehr unterschiedlich). Das Problem dabei: ich muss das Öffnen der Datei mit einem Kennwort sichern, weil theoretisch könnte ja ein ganz eifriger mit dem Bearbeiten  früher beginnen. Allerdings werde ich beim Auslesen bei jeder Datei um die Eingabe des Passwortes (aktuell: abc) gebeten. Kann ich dies durch Änderung des Makros umgehen?

Leider ist mir keine bessere Lösung zum Bereitstellen des Tests eingefallen. Außer ich verstecke sie irgendwo unauffällig.

Robert
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)

Hallo Robert,

zum Öffnen der Datei mit Passwort ergänze den Befehl zum Öffnen wie folgt:

Workbooks.Open Filename:=strPfad & DateiName, Password:="Test"

Das Passwort "Test" musst du natürlich durch dein richtiges Passwort ersetzen.

Gruß

M.O.

0 Punkte
Beantwortet von robbi58 Mitglied (978 Punkte)
Einen großen Dank an M.O.

Jetzt ist auch dieses Problem gelöst und ich kann meine Schützlinge mit "Tests" eindecken. Na ja, ganz so ist es auch nicht. Aber für mich fein. Ich habe heute schon den ersten Versuch zu Beginn der Stunde gestartet. Damit ist es mir möglich, sofort eine Auswertung zu bekommen und auch rasch zu reagieren. Jene mit vielen richtigen Lösungen bekommen vertiefende Aufgaben, jene mit wenig richtigen Lösungen kriegen noch einen Crashkurs von mir.

Robert
...