Thema Datum  Von Nutzer Rating
Antwort
Rot Makro soll aus anderer Excel-Datei Daten einfügen
26.09.2016 20:39:02 Space
NotSolved

Ansicht des Beitrags:
Von:
Space
Datum:
26.09.2016 20:39:02
Views:
1083
Rating: Antwort:
  Ja
Thema:
Makro soll aus anderer Excel-Datei Daten einfügen

Hallo zusammen,

wir haben auf Arbeit ein Problem mit einem Makro und ich wurde gebeten, mich darum zu kümmern. Allerdings sind meine VBA-Fähigkeiten eher begrenzt...

Nun zum Problem: Wir haben eine Excel-Datei, in die aus anderen Dateien Werte pro Mitarbeiter zusammengetragen werden. Dies ist zum Beispiel die Anzahl von Ausschussteilen. Diese Ausschussteile werden verschiedenen Mitarbeitern (MA) zugeordnet und in einer separaten Datei erstellt. Die Datei mit dem Makro enthält wiederum auch die Namen der Mitarbeiter (in Spalte B, in Spalte A steht vor den Namen der MA ein X). In Spalte C steht dann hinter dem Namen der MA die Gesamtsumme für das Jahr und in allen weiteren Spalten ab Spalte D stehen dann die einzelnen Kalenderwochen, in die dann wöchentlich die Anzahl an Ausschussteilen pro MA rein soll. Also das ist sozusagen die "Empfänger-Datei".

In der "Sender-Datei" stehen die Namen der MA in Spalte B und es soll der Wert aus Spalte C übertragen werden. Die Reihenfolge der MA ändert sich hierbei wöchentlich, da in Spalte C absteigend nach den größten Werten sortiert wird. In der Empfänger Datei ist die Reihenfolge der MA allerdings chronologisch gleich.

 

Ich hoffe, dass war jetzt zunächst einmal verständlich. Falls nicht, lasst es mich bitte wissen! Unten habe ich den Code eingefügt. Der erste Teil beinhaltet das öffnen einer Input-Box. Diese stellt die geöffneten Excel-Dateien dar und fragt, aus welcher Datei die Werte importiert werden soll und in welche Zeile sie in der Empfänger-Datei eingefügt werden soll. Maximal soll man 4 Dateien gleichzeitig geöffnet haben. Das funktioniert auch soweit. Wenn man dann allerdings damit fortfährt, erscheint die Fehlermeldung: Laufzeitfehler 13 Typen unverträglich. 

 

Den ersten Part zu dieser Inputbox verstehe ich soweit auch. Ab "Application.ScreenUpdating = False" komme ich allerdings nicht mehr wirklich voran. 

Ich hoffe, dass mir jemand helfen kann. Ich bin auch für jegliche Erklärung bezüglich des grundlegenden Aufbaus dieses Makros sehr dankbar :-)

 

Public MAohne As String

Sub neue_KW_Ausschuss()



Dim tool As String

Ausschuss = ActiveSheet.Name
ziele = ActiveWorkbook.Name

spalte = InputBox("In welcher Spalte sollen die Meldungen eingetragen werden?", "Dateneingabe", ActiveCell.Column)
If spalte = "" Then Exit Sub
spalte = CInt(spalte)

Anzahl = Workbooks.Count
Select Case Anzahl
    Case 1: MsgBox ("Es wurden keine weitere Excelliste gefunden")
            Exit Sub
    Case 2: Daten = InputBox("Nr 1: " & Left(Workbooks(1).Name, 36) & vbCrLf & "Nr 2: " & Left(Workbooks(2).Name, 36), "Angabe Excelmappen mit Ausschussdaten?", "1")
    Case 3: Daten = InputBox("Nr 1: " & Left(Workbooks(1).Name, 36) & vbCrLf & "Nr 2: " & Left(Workbooks(2).Name, 36) & vbCrLf & "Nr 3: " & Left(Workbooks(3).Name, 36), "Angabe Excelmappen mit Ausschussdaten?", "1")
    Case 4: Daten = InputBox("Nr 1: " & Left(Workbooks(1).Name, 36) & vbCrLf & "Nr 2: " & Left(Workbooks(2).Name, 36) & vbCrLf & "Nr 3: " & Left(Workbooks(3).Name, 36) & vbCrLf & "Nr 4: " & Left(Workbooks(4).Name, 36), "Angabe Excelmappen mit Ausschussdaten", "1")
    Case Else
            MsgBox ("Es sind zu viele Exceldateien offen. Bitte reduzieren Sie die Anzahl auf maximal 4." & vbCrLf & "Vielen Dank.")
            Exit Sub
End Select

Application.ScreenUpdating = False

If Daten = "" Then Exit Sub
Daten = Workbooks(CInt(Daten)).Name

Workbooks(ziele).Activate
Anzahl = 0
For zeile = 3 To Worksheets(Ausschuss).Cells(100, "B").End(xlUp).Row Step 1
    If Worksheets(Ausschuss).Cells(zeile, "A").Value = "x" Then '(1)
        MA = Worksheets(Ausschuss).Cells(zeile, "B").Value
        
        Workbooks(Daten).Activate
            For lineD = 3 To Worksheets(3).Cells(100, "B").End(xlUp).Row Step 1
                If Worksheets(3).Cells(lineD, "B").Value = MA Then
                    Anzahl = Worksheets(3).Cells(lineD, "C").Value
                    Exit For
                End If
        
            Next lineD
            If lineD = Worksheets(3).Cells(100, "B").End(xlUp).Row Then Anzahl = "nicht gefunden"
            
        Workbooks(ziele).Activate
        Worksheets(Ausschuss).Cells(zeile, spalte).Value = Anzahl
            
    Anzahl = ""
    End If '(1)
    
Next zeile

End Sub

 

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:

 
 

  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Makro soll aus anderer Excel-Datei Daten einfügen
26.09.2016 20:39:02 Space
NotSolved