Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1668to1672
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

Datenimport diverser Spalten aus anderer Datei

Datenimport diverser Spalten aus anderer Datei
18.01.2019 10:50:14
Gregy
Hallo Excel-Experten,
leider finde ich per google & Co keine passende Lösung, bzw. nur eine, welche nicht das macht was ich mir vorstelle.
Ich benötige ein Code, welcher bei Click auf eine Schaltfläche in meiner Kalkulationsbasis einen Dialog öffnet in welchem ich mir eine xlsx-Datei von meinem Rechner öffnen kann. Diese zu öffnende Datei ist nicht immer dieselbe Datei, allerdings immer gleich formatiert, da es sich um einen Export aus einem Tool handelt. Somit möchte ich nur diese immer gleich formatierte Datei anwählen und es werden mit vier Bereiche (wie unten im Beispiel zu sehen) aus dieser Tabelle in die Kalkulationstabelle importiert. Auch die Kalkulationstabelle ist immer gleich aufgebaut, sodass die paste-Funktion statisch aufgebaut sein kann.
Neben dem Kernproblem, dass ich aus dem folgenden Script welches ich fand
Option Explicit
Dim Stamm As String
Dim varFile As Variant
Dim varName As Variant
Dim Blatt As String

Public Sub gaeb_import()
On Error GoTo Err
Stamm = ActiveWorkbook.Name
varFile = Application.GetOpenFilename("Excel Files (*.xlsx), *.xlsx", , "XLSx", "Auswahl",   _
_
_
_
False)
If TypeName(varFile) Like "Boolean" Then
MsgBox "Keine Datei gewählt!", vbInformation
Exit Sub
Else
varName = Right$(varFile, Len(varFile) - InStrRev(varFile, "\"))
Workbooks.Open varFile
Workbooks(varName).Sheets("GAEB_Konverter_LV").Range("D2:F497").Copy
Workbooks(Stamm).Sheets("Kalkulation").Range("D5:F500").PasteSpecial xlPasteValues
Workbooks(varName).Sheets("GAEB_Konverter_LV").Range("G2:G497").Copy
Workbooks(Stamm).Sheets("Kalkulation").Range("AW5:AW500").PasteSpecial xlPasteValues
Workbooks(varName).Close
Application.CutCopyMode = False
End If
Exit Sub
Err:
Call MsgBox("Bitte überprüffen ob die Tabellen" _
& vbCrLf & "Nord und Süd vohanden sind 1" _
, vbExclamation, "Fehler")
End Sub

überhaupt nichts importiert bekomme, hat die Datei aus der importiert werden soll nicht immer die gleiche Anzahl an Zeilen. Es geht bei dieser Datei um eine Anfrage, die mal 30 Position beinhaltet und mal 354. Leider würde es nicht funktionieren einfach Pauschal eine ganze Spalte zu übernehmen da
a) ich in die Kalkulation nicht die Spalte 1:1 übernehmen kann (erst ab der 5. Zeile)
b) in der Importdatei unter den Positionen eine Summierung ist, welche ich nicht mit in die Kalkulation übernehmen kann...
Ich hoffe, dass ich einigermaßen verständlich erklären konnte, was ich benötige.
Ich bedanke mich schon einmal im Voraus!
Beste Grüße
Gregy

22
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datenimport diverser Spalten aus anderer Datei
18.01.2019 13:06:56
Torsten
Hi Gregy,
habs mal nachgebaut und es hat schon vorher funktioniert.
Hab dir den code mal umgebaut, dass er alles importiert aus D2 bis F vorletzte benutzte Zeile (weil in der letzten steht ja die Summe, die du nicht willst) und G2 bis G vorletzte benutzte Zeile.
Hier der Code:
Public Sub gaeb_import()
Dim lstRow As Long
On Error GoTo Err
Stamm = ActiveWorkbook.Name
varFile = Application.GetOpenFilename("Excel Files (*.xlsx), *.xlsx", , "XLSx", "Auswahl",  _
False)
If TypeName(varFile) Like "Boolean" Then
MsgBox "Keine Datei gewählt!", vbInformation
Exit Sub
Else
varName = Right$(varFile, Len(varFile) - InStrRev(varFile, "\"))
Workbooks.Open varFile
lstRow = Workbooks(varName).Sheets("GAEB_Konverter_LV").Cells(Rows.Count, 4).End(xlUp)
Workbooks(varName).Sheets("GAEB_Konverter_LV").Range("D2:F" & lstRow - 1).Copy
Workbooks(Stamm).Sheets("Kalkulation").Range("D5").PasteSpecial xlPasteValues
Workbooks(varName).Sheets("GAEB_Konverter_LV").Range("G2:G" & lstRow - 1).Copy
Workbooks(Stamm).Sheets("Kalkulation").Range("AW5").PasteSpecial xlPasteValues
Workbooks(varName).Close
Application.CutCopyMode = False
End If
Exit Sub
Err:
Call MsgBox("Bitte überprüffen ob die Tabellen" _
& vbCrLf & "Nord und Süd vohanden sind 1" _
, vbExclamation, "Fehler")
End Sub
Gruss Torsten
Anzeige
AW: Datenimport diverser Spalten aus anderer Datei
18.01.2019 14:12:51
Gregy
Hallo Torsten,
vielen Dank für Deine Unterstützung. Ich kann nach Klick auf die Schaltfläche eine Datei öffnen (der Dialog wird angezeigt und ich kann auch eine Datei auswählen). Allerdings springt der Code in die Zeile
Err:
Call MsgBox("Bitte überprüffen ob die Tabellen" _
& vbCrLf & "Nord und Süd vohanden sind 1" _
, vbExclamation, "Fehler")

Wenn ich den Code in Einzelschritten durchgehe komme ich bis
Workbooks(varName).Sheets("GAEB_Konverter_LV").Range("D2:F497").Copy
und von da aus halt direkt zur Zeile der Fehlerausgabe. Woran kann das liegen?
Vielen Dank
Gruß Gregy
Anzeige
AW: Datenimport diverser Spalten aus anderer Datei
19.01.2019 09:43:31
Werner
Hallo Gregy,
lass doch mal das On Error GoTo Err weg, dann wird dir auch die entsprechende Fehlernummer und Fehlerbeschreibung angezeigt.
Wäre ein erster Schritt.
Gruß Werner
AW: Datenimport diverser Spalten aus anderer Datei
21.01.2019 07:58:10
Gregy
Hallo Werner,
auch Dir vielen Dank für die Mühe! Sorry für mein verspätetes Antworten, allerdings war am WE mein Bau an der Reihe und ich war nicht hier online...
Es kommt ohne die Error-Zeile der Laufzeitfehler #13#:
Typen unvertäglich
Userbild
Gruß Gregy
Und in welcher Codezeile denn? o.w.T.
21.01.2019 08:56:27
Werner
AW: Und in welcher Codezeile denn? o.w.T.
21.01.2019 09:00:19
Gregy
Hallo Werner,
sorry, hier der Bildausschnitt
Userbild
Gruß Gregy
Anzeige
AW: Und in welcher Codezeile denn? o.w.T.
21.01.2019 09:05:57
Werner
Hallo,
...End(xlUp).Row
Gruß Werner
AW: Und in welcher Codezeile denn? o.w.T.
21.01.2019 10:36:08
Gregy
Hallo,
klasse, es geht!!!
Vielen, vielen Dank!!!
Gruß Gregy
Gerne u. Danke für die Rückmeldung. o.w.T.
21.01.2019 10:43:54
Werner
AW: Gerne u. Danke für die Rückmeldung. o.w.T.
21.01.2019 11:39:13
Gregy
Hallo Werner,
ich nochmal :-)
Natürlich möchte ich die Daten auch wieder exportieren, da der bisher erfolgreiche Import zu Kalkulationszwecke dient. Also dachte ich nun, mehr oder weniger das ganze einfach umdrehen vom Code und dann sollte es passen. Es muss nur nach zwei Kriterien für den Export selektiert werden.
Für Datensätze welche aus dem Import ein der jeweiligen Spalte entweder
E - Bedarfspos. o. GB oder
P - Pauschalposition
mit übergeben bekommen haben müssen die Spalte AV exportieren und alle anderen müssen die Spalte AU übergeben.
Also habe ich dies auch mit einer If-Schleifen so abgefragt und bekomme wieder den Fehler 13 Typen unverträglich.
Hier ist der Code
Option Explicit
Dim Stamm_exp As String
Dim varFile_exp As Variant
Dim varName_exp As Variant
Dim Blatt_exp As String
Public Sub gaeb_export()
Application.ScreenUpdating = False
Dim lstRow As Long
'    On Error GoTo Err
Stamm_exp = ActiveWorkbook.Name
varFile_exp = Application.GetOpenFilename("Excel Files (*.xlsx), *.xlsx", , "XLSx", " _
Auswahl", _
False)
If TypeName(varFile_exp) Like "Boolean" Then
MsgBox "Keine Datei gewählt!", vbInformation
Exit Sub
Else
varName_exp = Right$(varFile_exp, Len(varFile_exp) - InStrRev(varFile_exp, "\"))
Workbooks.Open varFile_exp
lstRow = Workbooks(varName_exp).Sheets("GAEB_Konverter_LV").Cells(Rows.Count, 4).End( _
xlUp).Row
If Workbooks(Stamm_exp).Sheets("Kalkulation").Range("D5:D" & lstRow - 1).Value = "E  _
- Bedarfspos. o. GB" Or _
Workbooks(Stamm_exp).Sheets("Kalkulation").Range("D5:D" & lstRow - 1).Value = "P -  _
Pauschalposition" Then
Workbooks(Stamm_exp).Sheets("Kalkulation").Range("AV5:AV" & lstRow - 1).Copy
Workbooks(varName_exp).Sheets("GAEB_Konverter_LV").Range("I2").PasteSpecial  _
xlPasteValues
Else
Workbooks(Stamm_exp).Sheets("Kalkulation").Range("AU5:AU" & lstRow - 1).Copy
Workbooks(varName_exp).Sheets("GAEB_Konverter_LV").Range("I2").PasteSpecial  _
xlPasteValues
End If
End If
Sheets("Kalkulation").Range("E5").Select
Exit Sub
Err:
Call MsgBox("Bitte überprüffen ob die Tabellen" _
& vbCrLf & "Nord und Süd vohanden sind 1" _
, vbExclamation, "Fehler")
End Sub
Hier nochmal der Screenshot des Fehlers
Userbild
Kannst Du erkennen woran das liegt?
Lieben Dank und Gruß Gregy
Anzeige
AW: Gerne u. Danke für die Rückmeldung. o.w.T.
21.01.2019 12:04:55
Werner
Hallo,
hast du dir denn mal den Wert deiner Variablen lstRow hat wenn der Fehler ausgelöst wird?
Zumindest hier hast du nicht richtig auf das Tabellenblatt referenziert.
lstRow = Workbooks(varName_exp).Sheets("GAEB_Konverter_LV").Cells(Rows.Count, 4).End( _
xlUp).Row

Da müsste das Workbook und das Worksheet auch noch vor dem Rows.Count mit angegeben werden.
Versuch mal so:
With Workbooks(varName_exp).Sheets("GAEB_Konverter_LV")
lstRow = .Cells(.Rows.Count, 4).End(xlUp).Row
End With
Gruß Werner
Anzeige
AW: Gerne u. Danke für die Rückmeldung. o.w.T.
21.01.2019 12:42:47
Gregy
Hmm, habe ich versucht. Nun kommt Laufzeitfehler 9
Userbild
Userbild
Ich habe das Gefühl, dass ich da was durcheinander bringe. In den betreffenden Zeilen wird ja geprüft, ob diese die letzte Zeile (mit Inhalt) in meiner Kalkulation ist. Allerdings sollte ja auch geprüft werden, ob die angegebenen Bedingungen passt ( derText wie oben beschrieben je Zeile). Kann es sein, dass ich diese beiden Sachverhalte gar nicht in einer Codezeile ermitteln kann?
Gruß
Anzeige
AW: Gerne u. Danke für die Rückmeldung. o.w.T.
21.01.2019 20:08:54
Werner
Hallo,
also du stellst die letzte belegte Zeile
With Workbooks(varName_exp).Sheets("GAEB_Konverter_LV")
lstRow = .Cells(.Rows.Count, 4).End(xlUp).Row
End With

hier in dieser Datei/Tabelle fest.
Verwenden tust du sie aber in einer anderen?
Die gleiche Antwort wie vorher: Welchen Wert hat diese Variable wenn der Fehler ausgelöst wird? Hat die Variable den Wert 1 dann knallts. Du ziehst davon ja noch 1 ab und eine Zeile 0 gibt es nicht.
Gruß Werner
AW: Gerne u. Danke für die Rückmeldung. o.w.T.
22.01.2019 07:52:56
Gregy
Hallo Werner,
ich verstehe (teilweise) was Du meinst.
Ich habe beim Umschreiben zum Export darüber nachgedacht ob diese Zeile angepasst werden muss. Es ist aber so, dass die Datei aus der ich ursprünglich die Daten in die Kalkulation hole selbst ein Programm-Export ist (eines GAEB-Konverters) und ich wollte im ersten Step die Daten in meine Kalkulationsbasis bekommen. Im zweiten Step möchte ich wie gesagt die Preise zurück in die GAEB-Exportdatei bekommen. Diese GAEB-Exportdatei darf unter keinen Umständen (bis auf die ein Spalte wo die Preise reinkommen) verändert werden. Da ich allerdings im Laufe meiner Kalkulation unten Positionen, Hinweise o.Ä. anfügen kann dürfen diese nicht in die GAEB-Exportdatei übertragen werden. Aus meiner Sicht sollte also auch beim Übertragen der Preise die letzte Zeile der GAEB-Exportdatei in Erfahrung gebracht werden. Deshalb ermittel ich das nun auch in der GAEB-Exportdatei und möchte dann kopieren. Leider mit dem Ergebnis Laufzeitfehler 13 | Typen unverträglich
Option Explicit
Dim Stamm_exp As String
Dim varFile_exp As Variant
Dim varName_exp As Variant
Dim Blatt_exp As String
Public Sub gaeb_export()
Application.ScreenUpdating = False
Dim lstRow As Long
'    On Error GoTo Err
Stamm_exp = ActiveWorkbook.Name
varFile_exp = Application.GetOpenFilename("Excel Files (*.xlsx), *.xlsx", , "XLSx", " _
Auswahl", _
False)
If TypeName(varFile_exp) Like "Boolean" Then
MsgBox "Keine Datei gewählt!", vbInformation
Exit Sub
Else
varName_exp = Right$(varFile_exp, Len(varFile_exp) - InStrRev(varFile_exp, "\"))
Workbooks.Open varFile_exp
With Workbooks(varName_exp).Sheets("GAEB_Konverter_LV")
lstRow = .Cells(.Rows.Count, 4).End(xlUp).Row
End With
If Workbooks(varName_exp).Sheets("GAEB_Konverter_LV").Range("C2:C" & lstRow - 1). _
Value = "E - Bedarfspos. o. GB" Or _
Workbooks(varName_exp).Sheets("GAEB_Konverter_LV").Range("C2:C" & lstRow - 1).Value  _
= "P - Pauschalposition" Then
Workbooks(Stamm_exp).Sheets("Kalkulation").Range("AV5:AV" & lstRow - 1).Copy
Workbooks(varName_exp).Sheets("GAEB_Konverter_LV").Range("I2").PasteSpecial  _
xlPasteValues
Else
Workbooks(Stamm_exp).Sheets("Kalkulation").Range("AU5:AU" & lstRow - 1).Copy
Workbooks(varName_exp).Sheets("GAEB_Konverter_LV").Range("I2").PasteSpecial  _
xlPasteValues
End If
End If
Sheets("Kalkulation").Range("E5").Select
Exit Sub
Err:
Call MsgBox("Bitte überprüffen ob die Tabellen" _
& vbCrLf & "Nord und Süd vohanden sind 1" _
, vbExclamation, "Fehler")
End Sub

Userbild
Dennoch kann ich Deine Frage nachvollziehen, welchen Wert die Variable hat. Kannst Du mir sagen wie ich dahinter kommen?
Anzeige
AW: Gerne u. Danke für die Rückmeldung. o.w.T.
22.01.2019 08:39:14
Gregy
Hallo Werner,
also mittlerweile kann ich im Code nachvollziehen, was Du mir sagen willst. Das Kernproblem besteht darin, dass ich in der Kalkulationstabelle die letzte freie "Reihe" nicht ermitteln kann, da ich bis zur Zeile 501 vorformatiert habe...
Allerdings befinden sich ein einer solchen GAEB sogenannte OZ (Ordnungszahlen) welche innerhalb einer Datei einmalig ist. Kann ich Zeile für Zeile diese OZ vergleichen und einfach bei wenn ist gleich zzgl. der anderen Bedingung aus der Spalte Art
(If Workbooks(varName_exp).Sheets("GAEB_Konverter_LV").Range("C2:C" & lstRow - 3).Value = "E - Bedarfspos. o. GB" Or _
Workbooks(varName_exp).Sheets("GAEB_Konverter_LV").Range("C2:C" & lstRow - 3).Value = "P - Pauschalposition" Then)

den jeweiligen Preis übertragen in der kalku die erste Spalte G leer ist?
Gruß Gregy
Anzeige
Datenvergleich aus zwei Tabellen
22.01.2019 09:34:34
Gregy
Hallo,
leider habe ich mich mit dem Haken setzen (Beitrag nicht beantwortet) etwas verzettelt...
Evtl. kann mir jemand bei meinem Problem (siehe oben) helfen.
Vielen Dank im Voraus | Gruß Gregy
AW: Datenvergleich aus zwei Tabellen
22.01.2019 12:58:52
Werner
Hallo,
mit deinen ganzen Angaben kann hier niemand viel anfangen. Lade doch mal eine Datei mit deiner "Kalkulationstabelle" und einer "GAEB" hier hoch und beschreib dort nochmal was du willst.
Gruß Werner
AW: Datenvergleich aus zwei Tabellen
22.01.2019 13:23:11
Gregy
Hallo Werner,
leider sind die Dateien zu groß... Ich stelle mit den Export der Preise wie folgt vor
  • Button Export soll einen Dialog öffnen um die Datei in welche exportiert werden soll auszuwählen

  • Bereits beim Import wurden aus der GAEB-Ausschreibungsdatei sogenannte Ordungszahlen in die Kalkulationsbasis übernommen welche einmalig sind. Es soll demnach (hervorgehend aus der GAEB-Ausschreibungsdatei) die Ordnungszahl geprüft und die jeweilige Zeile in der Kalkulation erfasst werden

  • Nach Prüfung ob der Text in der GAEB-Ausschreibungsdatei der entsprechenden Zelle C dem Text "E - Bedarfspos. o. GB" oder "P - Pauschalposition" entspricht sollen aus der Kalkulation der Wert aus AV in die GAEB-Ausschreibungsdatei Zelle I übertragen werden, alles was nicht einem der beiden Texten entspricht soll aus der Kalkulation AU exportiert werden in die GAEB-Ausschreibungsdatei Zelle I

  • Kann man damit etwas anfangen?
    Gruß Gregy
    Anzeige
    Nein..
    22.01.2019 13:42:55
    Werner
    Hallo,
    ..ich zumindest kann damit nichts anfangen. Du siehst deine Daten, ich leider nicht.
    Wer oder was hindert dich denn daran die Dateien zu kürzen? Ich brauche keine riesen Daten aber eine Datei mit ein paar Spieldaten aus der deine Problemstellung sichtbar wird, sollte ich schon haben.
    Gruß Werner
    AW: Nein..
    22.01.2019 14:04:46
    Gregy
    Hallo,
    also hier ist die Kalkulationstabelle in welcher wir den Datenstamm (Ausschreibungsdaten) importieren: https://www.herber.de/bbs/user/127003.xlsx
    und das hier ist die GAEB-Ausschreibung aus welcher wir den Datenstamm holen und in welchen jetzt die Preise nach dem Prinzip wie zuvor beschrieben rein sollen: https://www.herber.de/bbs/user/127004.xlsx
    Wie ich schon schrieb soll ein vergleich der Ordnungszahl (OZ) der beiden Tabellen stattfinden. Bei Übereinstimmung dieser OZs sollen im Falle, dass in der jeweiligen Zeile in der Spalte C (GAEB-Ausschreibung) entweder "E - Bedarfspos. o. GB" oder "P - Pauschalposition" steht der Wert von AV aus der Kalkulation in die jeweilige Zeile in Spalte I (GAEB-Ausschreibung) übertragen werden ansonsten -wenn keines dieser Bedingungen passt- der Wert aus AU.
    Dieser Export soll bis zu letzten beschriebenen Zeile der GAEB-Ausschreibung durchgeführt werden.
    Vielen Dank im Voraus
    Gruß Gregy
    Und wo...
    22.01.2019 15:35:03
    Werner
    Hallo,
    ...sind deine Makros, die du aktuell in Benutzung hast? Oder glaubst du ich pinsel die aus einem der Beiträge ab? Dort hast du sie nämlich als Bild und nicht als kopierbaren Code. Zudem weiß ich nicht wie deine Makros aktuell aussehen.
    Gruß Werner
    AW: Und wo...
    22.01.2019 16:40:50
    Gregy
    Hallo,
    ich bitte um Entschuldigung! bei der Durchsicht der Datei hatte ich noch das original auf und hatte im VBA-Editor die beiden Module gesehen. Sorry dafür
    Hier die Kalkulation mit den entsprechenden Makros https://www.herber.de/bbs/user/127009.xlsm
    Gruß Gregy
    ps ich schaute nochmal in den Beiträgen nach. Ich hatte die Codes sowohl als Bild (je im Debug-Mode) als auch als reine Codezeilen zum kopieren.

    319 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige