2
« 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!!!