Autor
|
Thema: Excel Import von Daten (680 mal gelesen)
|
trainman Mitglied CAD/PDM Supporter
Beiträge: 89 Registriert: 19.11.2004 CATIAV5 R16/SmarTeam R16/AutoCAD 2006/WinXPPRO
|
erstellt am: 15. Jan. 2007 10:40 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen Ich erhalte von unserem Lieferanten Excel Files der einzelnen Produkte. Pro offeriertes Produkt ein Excel File bzw. XML File. Der Deiteiname lautet immer gleich der Artikelnummer ( z.Bsp. Artikelnummer des Produktes: 555236 -> Filename: 555236.xml bzw. xls). Wir haben eine Excel liste worin wir die wichtigsten Daten für uns herauslesen. Derzeit öffne ich die uns gesendeten Files, und kopiere Zelle um Zelle in unsere Tabelle damit ich diese zentral verwalten kann. Wie kann ich im Excel durch ein Makro oder Verweise die Daten am einfachsten in unsere Tabelle Importieren? Gewünschter Ablauf: Tabelle ist geöffnet und über einen Importbefehl definieren von welchen Excel Files ich Einträge übernehmen will, das Tool sucht nächste freie Spalte und übernimmt die Werte. Habt Ihr eine Idee wie man so etwas zusammenführen kann?
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
pablo Mitglied Techniker
Beiträge: 453 Registriert: 23.01.2002
|
erstellt am: 15. Jan. 2007 10:55 <-- editieren / zitieren --> Unities abgeben: Nur für trainman
Zitat: Original erstellt von trainman:
Derzeit öffne ich die uns gesendeten Files, und kopiere Zelle um Zelle in unsere Tabelle damit ich diese zentral verwalten kann.
Mit Kopieren, Inhalte einfügen und Transponieren könntest du dir schon einiges an Arbeit ersparen. pablo
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Harmening Moderator Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 Das Innerste geäussert und aufs Äusserste verinnerlicht
|
erstellt am: 15. Jan. 2007 12:34 <-- editieren / zitieren --> Unities abgeben: Nur für trainman
|
Thomas Harmening Moderator Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 Das Innerste geäussert und aufs Äusserste verinnerlicht
|
erstellt am: 15. Jan. 2007 20:39 <-- editieren / zitieren --> Unities abgeben: Nur für trainman
und fertig könnte das so aussehen, mit Berücksichtigung, dass Zeile 6 nicht mitgehen soll Code: Sub transpose() Dim LetzteZeile As Integer Dim nr As IntegerDim vATrArr() As Variant Dim lAZeile As Long Dim iASpalte As Integer Dim iZielSpa As Integer Dim lZielZei As Long Dim x As Integer WBa = ActiveWorkbook.Name GetMappe = Application.GetOpenFilename("xls-Dateien (*.xls),*.xls", , "bitte die xls-Dateien für das Zusammenführen auswählen!", MultiSelect:=True) If TypeName(NameZiel) = "Boolean" Then Beep MsgBox "Sie müssen eine Datei auswählen!" Exit Sub End If For nr = LBound(GetMappe) To UBound(GetMappe) LetzteZeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row 'msgbox - nur als Hilfe MsgBox "Die letzte Zeile, die einen Wert beinhaltet ist: " & LetzteZeile, vbInformation, "Is nicht wahr! :-)" Workbooks.Open Filename:=GetMappe(nr) WBd = ActiveWorkbook.Name iZielSpa = 2 lZielZei = 9 x = 0 ReDim vATrArr(1, 5) For iASpalte = 2 To iZielSpa For lAZeile = 3 To lZielZei If lAZeile <> 6 Then vATrArr(0, x) = Cells(lAZeile, iASpalte) x = x + 1 End If Next lAZeile Next iASpalte Workbooks(WBa).Activate Range(Cells(LetzteZeile + 1, 1), Cells(LetzteZeile + 1, 6)) = vATrArr Workbooks(WBd).Close SaveChanges:=False Next nr End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
trainman Mitglied CAD/PDM Supporter
Beiträge: 89 Registriert: 19.11.2004 CATIAV5 R16/SmarTeam R16/AutoCAD 2006/WinXPPRO
|
erstellt am: 25. Jan. 2007 08:46 <-- editieren / zitieren --> Unities abgeben:
Hallo Thomas Harmening Ausgezeichnete Arbeit, funktioniert super! Ich hätte aber noch eine kleine Bitte: bis jetzt Importiert das Script alle Werte bis zu Zeile 9 was muss ich am Script verändern damit er bis Zeile 13 geht und noch 3 zusätzliche Werte übernimmt und einträgt? Gruss und Dank im voraus. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 25. Jan. 2007 09:18 <-- editieren / zitieren --> Unities abgeben: Nur für trainman
Moin, moin, bin zwar nicht Thomas, aber ich versuch's trotzdem mal ;-) hast Du mal die Zeilen Code: iZielSpa = 2 lZielZei = 9 '-> auf 13 x = 0ReDim vATrArr(1, 5) 'auf (1,8) z.B.
angepaßt? Was passiert dann?------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
trainman Mitglied CAD/PDM Supporter
Beiträge: 89 Registriert: 19.11.2004 CATIAV5 R16/SmarTeam R16/AutoCAD 2006/WinXPPRO
|
erstellt am: 25. Jan. 2007 10:00 <-- editieren / zitieren --> Unities abgeben:
Hallo runkelruebe Diese Einträge habe ich ebenfalls versucht umzuschreiben! Erhalte aber folgende Fehlermeldung: Laufzeitfehler '9': Index ausserhalb des gültigen Bereichs Wenn ich auf Debuggen klicke wird folgende Zeile markiert: vATrArr(0, x) = Cells(lAZeile, iASpalte) Hmm und wie weiter? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 25. Jan. 2007 10:16 <-- editieren / zitieren --> Unities abgeben: Nur für trainman
der Fehler kommt, weil die Schleife weiter läuft, als das array dimensioniert ist. Mach das mal größer (oder die Schleife kleiner ;-) ) und guck nochmal. Du kannst Dir im debugging auch mal per Quicktipp die Werte für die Variablen anzeigen lassen, indem Du kurz mit der Maus drauf verweilst. ------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
trainman Mitglied CAD/PDM Supporter
Beiträge: 89 Registriert: 19.11.2004 CATIAV5 R16/SmarTeam R16/AutoCAD 2006/WinXPPRO
|
erstellt am: 25. Jan. 2007 10:50 <-- editieren / zitieren --> Unities abgeben:
Hallo runkelruebe! Danke für den Tip, Ich habe es nun hingekriegt. Wo definiere ich eigentlich welche Zeilen er Ignorieren soll für den Datenimport? Jetzt werden die ersten 3 Werte richtig importiert und in den richtigen Spalten geschrieben, dann habe ich eine leere Spalte und dann geht es weiter! Sub transpose() Dim LetzteZeile As Integer Dim nr As Integer Dim vATrArr() As Variant Dim lAZeile As Long Dim iASpalte As Integer Dim iZielSpa As Integer Dim lZielZei As Long Dim x As Integer
WBa = ActiveWorkbook.Name GetMappe = Application.GetOpenFilename("xls-Dateien (*.xls),*.xls", , "bitte die xls-Dateien für das Zusammenführen auswählen!", MultiSelect:=True) If TypeName(NameZiel) = "Boolean" Then Beep MsgBox "Sie müssen eine Datei auswählen!" Exit Sub End If For nr = LBound(GetMappe) To UBound(GetMappe) LetzteZeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row Workbooks.Open Filename:=GetMappe(nr) WBd = ActiveWorkbook.Name iZielSpa = 2 lZielZei = 13 x = 0 ReDim vATrArr(1, 9) For iASpalte = 2 To iZielSpa For lAZeile = 3 To lZielZei If lAZeile <> 9 Then vATrArr(0, x) = Cells(lAZeile, iASpalte) x = x + 1 End If Next lAZeile Next iASpalte Workbooks(WBa).Activate Range(Cells(LetzteZeile + 1, 1), Cells(LetzteZeile + 1, 10)) = vATrArr Workbooks(WBd).Close SaveChanges:=False Next nr End Sub [Diese Nachricht wurde von trainman am 25. Jan. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 25. Jan. 2007 10:54 <-- editieren / zitieren --> Unities abgeben: Nur für trainman
Nur überflogen, weil nicht mein code ;-) : BTW wo isser, der Thomas?Code: If lAZeile <> 6 Then ' 0> 6. Zeile wird ignoriert
Code: For lAZeile = 3 To lZielZei ' => ab der 3. Zeile wird losgelegt
Tipp: geh in den VBA editor, und laß den code zeilenweise durchlaufen (mit F8) und schau Dir in aller Ruhe an, was Excel da so alles veranstaltet. Damit müßte sich dann schon einiges klären. ------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
trainman Mitglied CAD/PDM Supporter
Beiträge: 89 Registriert: 19.11.2004 CATIAV5 R16/SmarTeam R16/AutoCAD 2006/WinXPPRO
|
erstellt am: 25. Jan. 2007 11:03 <-- editieren / zitieren --> Unities abgeben:
|
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 25. Jan. 2007 11:16 <-- editieren / zitieren --> Unities abgeben: Nur für trainman
|
trainman Mitglied CAD/PDM Supporter
Beiträge: 89 Registriert: 19.11.2004 CATIAV5 R16/SmarTeam R16/AutoCAD 2006/WinXPPRO
|
erstellt am: 25. Jan. 2007 11:20 <-- editieren / zitieren --> Unities abgeben:
|
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 25. Jan. 2007 11:23 <-- editieren / zitieren --> Unities abgeben: Nur für trainman
|