Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1100to1104
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
Inhaltsverzeichnis

Daten aus anderer Arbeitsmappe auslesen und import

Daten aus anderer Arbeitsmappe auslesen und import
Sonja
Hallo liebes Forum-Team und Forum-Leser/Schreiber!
Ich bin in Diplomarbeits-Endphase und habe (leider!) kaum mehr Zeit, lange im I-net und in Foren herumzusurfen (was ich- glaubt mir- sicher tun müsste da meine vba-Kenntnisse eher zum Heulen sind), deshalb die verzweifelte direkte Anfrage!!!!!!
Ausgangssituation:
In einem Tabellenblatt wird aufgrund Auswahl verschiedener Drop-Downmenus eine Art Buchstaben-Zahlen-Kürzel in einer Zelle generiert. (Bsp. l1a3d2p2c2: Buchstaben fix und an fixer Stelle, Zahlen variieren).
Dieses Kürzel kann sich in 5 vorhandenen verschiedenen anderen externen Tabellenblättern mit definierten Namen und anderem Laufwerk wiederfinden. (Namen: "Matrix_Design1", "Matrix_Design2", usw... bis "Matrix_Design5")
Aufgrund der Zahl (1 bis 5), die bei dem "d" im Kürzel rechts steht kann ich das externe Tabellenblatt, in dem ich nachsehen muss, spezifizieren: Bsp: Kürzel "l1a3d2p2c2" findet sich in Tabelle "Matrix_Design2", wegen dem 2er neben dem "d")
Ich brauche nun ein Makro das folgendes kann:
- (Ausgehend von meinem Tabellenblatt in dem ich arbeite): Start durch Button
- Öffnen des "richtigen" Tabellenblattes, aufgrund der Zahl neben dem "d" (es sind in den "Matrix-Tabellenblättern" jeweils Spalten bis DC einschliesslich und Zeilen bis 169 belegt, also würde es Zeit sparen, sofort das richtige zu durchsuchen)
- Finden der Zelle, in dem das Kürzel enthalten ist
- 1:1 Übernahme der Daten (Zahlen und Buchstaben) der Spalte der Zielzelle und der Spalte vor der Zielzelle, beginnend in der nächsten Zeile der Zelle bis zur nächsten leeren Zeile.
(Bsp: Kürzel steht in Zelle B2, alle Zellen von A1-G25 sind gefüllt. Es soll also der Bereich von A3-B25 kopiert werden)
- Einblenden eines ausgeblendeten Tabellenblattes (in der Mappe, von der aus ich starte) und Einfügen der Daten des kopierten Bereiches, ausgehend von Zelle A2 (erste Zeile soll Überschriftszeile werden).
- Schliessen des durchsuchten externen Tabellenblattes
Das ist "kurz gesagt" mein Problem und meine Frage in die digitale Runde!
Ich würde mich sehr freuen, wenn dies jemand bewerkstelligen kann und mir damit eine Risen Hilfe ist!!!!!
Wie gesagt, ich bin normalerweise ein Mensch, der sich selbst auf den Hosenboden sitzt, aber diese Sache ist nur eine Kleinigkeit daneben, die ich noch brauche...
Deshalb: Vielen vielen Dank im Voraus, wenn es konstruktive Hilfe gibt, bzw. einen Hinweis auf einen Forumseintrag oder Link, in dem ich nachschauen kann!
Schöne Grüsse,
Sonja

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
da kommt mal wieder ...
08.09.2009 22:06:05
Uduuh
... der größte Bhf der Welt
Grand Central Station
Gruß aus’m Pott
Udo

AW: Rückfragen 1 +2 + 3
08.09.2009 23:15:59
Gerd
Hallo Sonja!
l1a3d2p2c2
Steht die gesuchte Ziffer immer an 6. Stelle der Zeichenfolge?
Verwechselst Du bei "Matrix_Design?" Tabellenblatt-Name u. Dateiname ?
bzw. wie heißen die 5 Dateien u. das maßgebliche Tabellenblatt darin?
Sind diese Dateien alle im selben Ordner?
Gruß Gerd
AW: Rückfragen 1 +2 + 3
09.09.2009 11:20:50
Sonja
Hallo Gerd!
Zu Deinen Fragen:
Die Ziffer wird wahrscheinlich immer an 6. Stelle stehen, ja. Ich denke, ich werds so einrichten.
Sicherer ist es aber, denke ich, wenn das Makro die Zahl neben dem "d" hernimmt, egal, wo sie steht.
Du hast recht: habe den Tabellenblatt Namen mit dem Dateinamen verwechselt. Tabellenblätter in den Dateien sind nicht benannt. Ich werde sie so benennen:
Datei "Matrix_Design_1" mit Tabellenblatt "design1"
Datei "Matrix_Design_2" mit Tabellenblatt "design2"
Datei "Matrix_Design_3" mit Tabellenblatt "design3"
Datei "Matrix_Design_4" mit Tabellenblatt "design4"
Datei "Matrix_Design_5" mit Tabellenblatt "design5"
Die "Matrix_De....."- Dateien werden alle im selben Ordner stehen. Name noch unbekannt.
Ob das File, von dem aus das Makro gestartet wird, auch in dem Ordner liegt, oder eine Ebene höher oder in einem anderen Laufwerk zu finden sein wird, weiss ich leider noch nicht.
Ich hoffe, ich konnte die Fragen klären!
Schöne Grüsse,
Sonja
Anzeige
AW: da kommt mal wieder ...
08.09.2009 23:29:53
Mustafa
Hallo Udo (Uduuh),
nachdem ich den Text mittlerweile 3 (oder warens 4, 5 mal, ich hab ja die Zeit dafür) mal durchgelesen hab, glaub ich verstanden zu haben was Sonja braucht.
Da sie scheinbar wenig Zeit hat klink ich mich als "Diplomat" mal mit rein.
Aaaalso :
1. Suche die Zahl rechts von dem Buchstaben d (im Beispiel die 2)
2. Suche bzw öffne die Mappe Matrix_Design2
3. Finde den String aus der öffnenden Mappe (im Beispiel l1a3d2p2c2) im Beispiel gefunden in B2
4. Kopiere den Bereich in Abhängigkeit der gefundenen Zelle. also Von A3 bis B letzter Eintrag in Spalte
5. Blende Tabellenblatt X (keine Ahnung welches) ein und füge Daten ab Zelle A2 ein
6. Schliesse Matrix_Design2
Hoffe ich hab den Text richtig verstanden und interpretiert und die Grand Central Station etwas übersichtlicher gemacht ;-)
Würde gern selber ein Projekt basteln, aber meine VBA Kenntnisse sind nicht ausreichend dafür.
Werde den Thread weiterverfolgen um auch in diesem Gebiet noch was dazuzulernen.
Gruß aus der Domstadt Köln.
Anzeige
Ja, Mustafa, ich denke du hast das wohl richtig...
09.09.2009 01:05:59
Luc:-?
...so erklärt wie ich das nach 1.Lesen verstanden zu haben glaube... ;-)
Aber trotz langen Textes, hat Sonja, wie du ja auch festgestellt hast, Lücken gelassen. Also wirst du wohl noch etwas mit dem Lernprozess warten müssen... ;-)
Übrigens interessiert mich das Thema allerhöchstens wg der Codierungsidee; sonst wäre es ja ein eher triviales Suchen-Kopieren-Speichern-Problem, für das es im Archiv genügend Bspp gibt...
Ohne "Übersetzungslisten" für den Code wird's wohl nicht gehen!
Gruß Luc :-?
AW: da kommt mal wieder ...
09.09.2009 11:24:02
Sonja
Hallo Mustafa!
Kompliment, Du hast es in kurzen Worten genau erfasst!
Grüsse!
Anzeige
AW: da kommt mal wieder ...
09.09.2009 18:45:54
fcs
Hallo Sonja und andere Interessierte,
Studensponsoring die 2. (nach Yves)
Hier mein Lösungsvorschlag. Datei funktioniert natürlich nur, wenn die Quelldateien Matrix_Design1 bis 5 existieren.
https://www.herber.de/bbs/user/64304.xls
Gruß
Franz
Sub DatenSuchen()
'Sucht in den Matrix_Design-Dateien nach einem Suchbegriff und
'kopiert Daten in das Zielblatt
Dim Suchbegriff As String
Dim wbAktiv As Workbook, wksAktiv As Worksheet
Dim wksZiel As Worksheet
Dim wbQuelle As Workbook, wksQuelle As Worksheet, strWb As String, strWks As String
Dim ZelleGefunden As Range, Bereichdaten As Range
Dim varVerzeichnisQuelle
Dim ZelleSuchbegriff As Range
On Error GoTo Fehler
Set wbAktiv = ActiveWorkbook
Set wksAktiv = ActiveSheet
'Tabelle in die die Daten kopiert werden sollen
Set wksZiel = wbAktiv.Worksheets("ZielTabName")
Set ZelleSuchbegriff = Selection ' oder auch feste Zelladresse:  wksAktiv.Range("C8")
Suchbegriff = ZelleSuchbegriff.Value
'Quell-Dateinamen und Blattnamen ermitteln
If InStr(1, Suchbegriff, "d") > 0 Then
strWb = "Matrix_Design" & Mid(Suchbegriff, InStr(1, Suchbegriff, "d") + 1, 1)
strWks = "design" & Mid(Suchbegriff, InStr(1, Suchbegriff, "d") + 1, 1)
Else
MsgBox "Buchstabe ""d"" nicht im Suchbegriff """ & Suchbegriff & """ enthalten."
GoTo Ende
End If
'Verzeichnis mit den 5 Quelldateien wählen - als festen Wert vorgeben
'varVerzeichnisQuelle = "C:\Lokale daten\Test"
With Application.FileDialog(msoFileDialogFolderPicker)
.AllowMultiSelect = False
.Title = "Bitte Ordner mit den 5 Datendateien wählen und OK"
If .Show  False Then
varVerzeichnisQuelle = .SelectedItems(1)
Else
GoTo Ende
End If
End With
Application.ScreenUpdating = False
'Prüfen, ob Datei im gewählten verzeichnis
With Application
strWb = Dir(varVerzeichnisQuelle & .PathSeparator & strWb & ".xl*")
If strWb  "" Then
'Quelldatei öffnen
Set wbQuelle = .Workbooks.Open(Filename:=varVerzeichnisQuelle _
& .PathSeparator & strWb, ReadOnly:=True)
'Quelltabellenblatt setzen
Set wksQuelle = wbQuelle.Worksheets(strWks)
Else
MsgBox "Quelldatei """ & strWb & ".xl*"" im Verzeichnis """ & _
varVerzeichnisQuelle & """ nicht gefunden!"
GoTo Ende
End If
End With
'Suchbegriff suchen
Set ZelleGefunden = wksQuelle.Cells.Find(What:=Suchbegriff, LookIn:=xlValues, _
lookat:=xlWhole)
If ZelleGefunden Is Nothing Then
MsgBox "Suchbegriff""" & Suchbegriff & """ in Datei """ & _
wbQuelle.Name & """, Blatt """ & wksQuelle.Name & """ nicht gefunden!"
GoTo Ende
Else
With wksQuelle
'Von Fundstelle Bereich 1 Spalte nach links, 1 Zeile nach unten bis _
zur nächsten Leerzeile unterhalb der Fundstelle merken
Set Bereichdaten = .Range(ZelleGefunden.Offset(1, -1), ZelleGefunden.End(xlDown))
End With
'gefundene Daten in die Zieltabelle kopieren.
With wksZiel
.Visible = xlSheetVisible 'Zieltabelle einblenden
'Altdaten im Blatt löschen
.Range(.Cells(2, 1), .Cells(2, 2).End(xlDown)).ClearContents
'Daten Kopieren
Bereichdaten.Copy Destination:=.Cells(2, 1)
End With
'Quelle wieder schliessen
wbQuelle.Close savechanges:=False
Set wbQuelle = Nothing
End If
Ende:
Fehler:
Application.ScreenUpdating = True
With Err
If .Number  0 Then
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
End If
End With
'Objektvariablen zurücksetzen
Set wbAktiv = Nothing: Set wksAktiv = Nothing
If Not wbQuelle Is Nothing Then wbQuelle.Close savechanges:=False
Set wbQuelle = Nothing
Set wksZiel = Nothing
Set wbQuelle = Nothing: Set wksQuelle = Nothing
Set ZelleGefunden = Nothing: Set Bereichdaten = Nothing
End Sub

Anzeige
AW: da kommt mal wieder ...
10.09.2009 00:44:22
sonja
Hallo Franz!
Erst mal ein ganz herzliches Dankeschön, dass Du Dir (und auch andere Antwortende) die Mühe gemacht hast/haben!
Ich werde das testen und dann Bescheid geben!
Schönen Abend noch!
Sonja

365 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige