Collapse column

Autor Thema: Office 2010: Dateien importieren (Importierreihenfolge?)  (Gelesen 1754 mal)

Offline BsNLucky

  • Newbie
  • *
  • Beiträge: 2
    • Profil anzeigen
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Mittelmäßig
  • Version [Office] : Office 2010
Office 2010: Dateien importieren (Importierreihenfolge?)
« am: Mai 17, 2016, 10:30:44 Vormittag »
Hallo Forum,

ich simuliere z.Z. einige Probleme und es entstehen dadurch hunderte von .csv - Dateien, die ich aber gerne in Origin in wenigen Graphen plotten würde.
Daher wollte ich mir ein Makro schreiben, welches alle csv - Dateien aus einem Ordner gleichzeitig öffnet, die Dateien zurecht stutzt und mir alles schön kopierfertig in Excel präsentiert, damit ich nur noch copy paste für Origin machen muss.
Jetzt habe ich auch hinbekommen, dass bei Makrostart ein PopUp kommt, welches mich den Ordner auswählen lässt, die Dateien automatisch öffnet und alle Schritte meiner Wahl durchführt. Allerdings war ich verwirrt, warum bei manchen Spalten recht konstante Werte standen, obwohl eigentlich diese aus jeden Fall variieren müssten. Dann ist mir aufgefallen, dass die Reihenfolge der Importierten Dateien nicht die alphabetische von  A -> Z war, sondern eher zufällig.
WEnn ich die Files alle umbenenne von 01-60, dann sehe ich, dass er die Daten genau falsch herumimportiert, d.h. die 60. Datei steht an erster Stelle und vice versa (ICh bin mir ziemlich sicher, dass er schon mit der ersten Datei anfängt, aber dann die anderen Spalten ebenfalls vorne einfügt und dadurch das spiegelverkehrte entsteht?)

Nur der Importteil vom Makro:

Sub Datenkopieren()

Dim strText As String, strFilter As String

strText = "Bitte eine Auswertung auswählen"
strFilter = "Flo-Dateien (*.csv), *.csv"""
strAuswahl = Application.GetOpenFilename(strFilter, 1, strText)
strPfad = Pfad_ermitteln(strAuswahl)

Set FS = CreateObject("Scripting.FileSystemObject")
Set F = FS.GetFolder(strPfad)
Set FC = F.Files
If ActiveSheet Is Nothing Then Workbooks.Add
For Each File In FC
    Zeile = Cells(65000, 1).End(xlUp).Column + 1
    strEinfügen = Cells(Zeile, 1).Address
    strAuswahl = File.Path
   
      With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;" & strAuswahl _
        , Destination:=Range(strEinfügen))
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 1252
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileTabDelimiter = True
        .TextFileColumnDataTypes = Array(1, 1)
        .TextFileDecimalSeparator = ","
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
  Range(strEinfügen).QueryTable.Delete


Function Pfad_ermitteln(ByVal strAuswahl As String) As String
 
 For i = Len(strAuswahl) To 1 Step -1
    If Mid(strAuswahl, i, 1) = "\" Then
        Pfad_ermitteln = Left(strAuswahl, i - 1)
        Exit Function
    End If
Next
 End Function


Wo kann ich da die Importreihenfolge einstellen, so dass das erste File auch wirklich in der ersten Spalte ist?

Zusatzfrage:
Meine Files sind eigentlich eher in dieser Art benannt:
SpaceCharge_XRichtung_-1V_0nm
SpaceCharge_XRichtung_-1V_650nm
SpaceCharge_XRichtung_-1V_940nm
SpaceCharge_XRichtung_-5V_940nm
SpaceCharge_YRichtung_-3V_905nm

(d.h. bei Richtung gibt es die Variablen X und Y, bei der Spannung geht es von -1V bis -11V in 2V Schritten und die Wellenlänge gibt es in 0nm,650nm,905nm,940nm und 980nm).

Wie kann ich Excel sagen, dass ich folgende Reihenfolge beim Importieren hätte (weil bisher erscheint mir das sehr zufällig):
XRichtung,-1V,Wellenlänge aufsteigend
XRichtung,-3V,Wellenlänge aufsteigend
Dann also Spannung aufsteigend und anschließend das ganze mit Y.
Also so wie die FIles eigentlich alphabetisch auch im Explorer sortiert sind.


Vielen dank im Voraus!!!

Keine Lösung gefunden? Du kannst Dich gerne an unser erfahrenes Experten-Team wenden und Dein Anliegen in Auftrag geben.
>>> Schnell und einfach ein unverbindliches Angebot anfordern. Per E-Mail an anfrage@excel-inside.de oder per Online-Formular
<<<

!!! Wichtige Information
!!! Dieses Forum steht aus technischen Gründen ab dem 11. September 2019 nur noch im Lesemodus zur Verfügung.
Das NEUE Office-Fragen-Forum kannst du aber unter der gewohnten Domain https://office-fragen.de wie gewohnt nutzen.

- Wir freuen uns auf deinen Besuch im neuen Forum.

Offline maninweb

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 1.063
    • Profil anzeigen
    • Excel Formula Translator
  • Office-KnowHow: Experte
  • VBA-KnowHow- : Sehr gut
  • Version [Office] : Office 2016
Antw:Office 2010: Dateien importieren (Importierreihenfolge?)
« Antwort #1 am: Mai 18, 2016, 07:42:33 Vormittag »
Hallo,

falls Du Excel ab 2010 verwendest, könntest Du PowerQuery zum Import verwenden. PQ ist für Excel 2010/2013 als Add-In von Microsoft
verfügbar und ab Excel 2016 in Excel integriert.

Power Query kann Ordner importieren; gut ist wenn alle CSV-Dateien dann denselben Aufbau haben. Das Sortieren der Dateien liesse sich
beim ersten Importschritt ggf. anhand einer PQ-Formel erledigen. Ausserdem kann die Abfrage aktualisiert werden, falls z.B. mal neue
Dateien hinzukommen.

Falls Du VBA verwenden möchtest, würde ich die Dateien per Direktzugriff physikalisch einlesen (also kein Scripting, kein Query). Zum
Sortieren müsstest Du die Dateinamen alle einlesen, anschließend splitten und sortieren. Und dann erst die Dateien abarbeiten. Ist
schon ein bißchen mehr Aufwand.

Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) from 01/2011 - 06/2019
https://de.excel-translator.de :: Online Excel-Formel-Übersetzer :: Alle Übersetzungen der Excel Funktionen & Fehlerwerte

Offline BsNLucky

  • Newbie
  • *
  • Beiträge: 2
    • Profil anzeigen
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Mittelmäßig
  • Version [Office] : Office 2010
Antw:Office 2010: Dateien importieren (Importierreihenfolge?)
« Antwort #2 am: Mai 23, 2016, 14:52:22 Nachmittag »
Hallo,

danke schon mal für den Tipp.

Könntest du mir ein bisschen Unterstützung in Richtung VBA geben? Ich bin da vollkommen überfordert, was ich mit deinen Anweisungen genau zu tun habe :(

Ich würde gern den PQ Weg gehen, wenn das einfacher ist. Aber an so einem Forschungsinstitut ist das mit Programmen installieren so ne Sache....Ich habs probiert, aber brauch für die Installation ADminrechte und die IT lässt sich bei Software fragen gerne ein paar Wochen Zeit bevor Sie sich überhaupt bewegen. Hab die letzten paar Tage genervt und es probiert, aber den Erfolg sehe ich nun, es tut sich gar nichts.
Deswegen brauch ich wohl die VBA Option :(

Offline maninweb

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 1.063
    • Profil anzeigen
    • Excel Formula Translator
  • Office-KnowHow: Experte
  • VBA-KnowHow- : Sehr gut
  • Version [Office] : Office 2016
Antw:Office 2010: Dateien importieren (Importierreihenfolge?)
« Antwort #3 am: Mai 24, 2016, 17:33:47 Nachmittag »
Hallo,

ich kann mal schauen, was ich tun kann. Kann aber wiederum etwas dauern, da ich zurzeit zeimlich eingespannt bin. Gut wäre es,
wenn Du 3-4 Beispieldateien hier hochladen könntest, ggf. anonymisiert und gekürzt. Vielleicht mag' ja auch jemand anderes
Dir schneller Unterstützung leisten.

Generell gibt's in VBA z.B. den Befehl Input zum Lesen von Dateien. In der VBA-Hilfe mal nach "Schreiben von Daten in Dateien"
suchen. Mit Dir() liest Du einen Ordner ein. Google mal nach "VBA Dir Dateinamen aus Ordner einlesen" oder ähnlich. Das Ganze
z.B. in einem Array ablegen und sortieren (Googlen z.B. nach VBA Bubblesort für Arrays, ggf. mehdimensionale Arrays). Ggf.
müsstest Du aus dem eingelesenen Array ein weiteres zweidimensionales Array erzeugen, dass in Spalte 1 nur Teile der Datei-
namen enthält und in der 2. Spalte die Dateinamen. Und nach Spalte 1 sortieren. Du erhälst die Reihenfolge der Dateinamen,
liest diese zeilenweise ein (Line Input), separierst (Split nach Trennzeichen) die Zeilen und fügst die Werte in ein großes Array
ein. Schließlich das Array in einem Rutsch in die Tabelle schreiben.

Schade, dass das mit PQ bei Euch nicht geht, denn es wäre damit wirklich einfacher.

Gruß
« Letzte Änderung: Mai 24, 2016, 17:37:04 Nachmittag von maninweb »
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) from 01/2011 - 06/2019
https://de.excel-translator.de :: Online Excel-Formel-Übersetzer :: Alle Übersetzungen der Excel Funktionen & Fehlerwerte

Wenn du dich noch intensiver mit Excel beschäftigen möchtest, dann empfiehlt sich ein Online-Kurs,
in dem du sehr viel über Excel erfährst und das gelernte umgehend in der Praxis anwenden kannst.