Ich bin ein Beginner in VBA in Excel, daher bin ich leider relativ schnell an die Grenzen meines Wissen gekommen.
Ein bisschen Hintergrundwissen:
Ich benutze einen Laser um Geschwindigkeitsfelder in einem Rohr zumessen. Ich benutze Excel um mir die Positionen ausrechnen zu lassen, wo genau der Laser hinfahren muss.
Es gibt 3 Achsen (X Y and Z). Also 3 Spalten in Ecxel dann.
Das ganze Ding ist limitiert auf 100 Messpositionen... Glaube auch nicht das, dass jemand machen wird :D
Die Software vom Laser hat die Option über "Import Mesh" eine .xls Datei zu importieren, allerdings dürfen nur die ersten 3 Spalten benutzt werden... keine Ahnung warum will die Software einfach so :)
Also muss in der neu Erstellten Datei die Spalte A die X Koordinate sein, B = Y und C = Z.
Hierbei ist es nicht wichtig die spalten umzubennen die Software checkt das auch so.
Die exportierten Datein (in der Exceldatei wo es exportiert werden soll) befinden sich in Spalte 9 - 11 angefangen bei Zeile 2.
z.B. dieses Format (3x3)
1 2 3
4 5 6
7 8 9
Ich habe es so gemacht, dass als erstes die Länge des Array eingelesen wird(da es nicht immer 3X3 ist sondern auch mal 40x3 oder so. und anschließend werden die Daten in das Array eingelesen. Das Fkt gut... sieht im Quellcode nicht hübsch aus aber fkt!
Dann erstelle ich ein neues Dokument mit dem namen Export.xls.
öffne es
und exportiere das Array da rein.
Soweit so gut.
Mein Problem ist, dass der Output in der neuen Datei keine 3x3 Matrix ist sonder er alles unter einandner schreibt... ungefähr so:
1
2
3
4
5
6
7
8
9
Leider weiß ich nicht was ich meiner Shceife hinzufügen kann um das Problem zulösen:/
Ich habe schon in andere Foren geschaut aber nicht wirklich was dazu gefunden.
Da ich ein Anfänger bin in VBA würde ich mich freuen wenn der Code möglichst einfach gehalten wird, dabei ist es egal ob er dadurch länger ist als notwendig.
Achso und ich habe das über ein Button getriggert wenn ich darauf klicke entsteht die neue Export.xls datei.
Hier ist der Code:
Sub InformationenExportieren()
'Variablen definieren
Dim Zieldatei As String 'Speicherort der Text Datei
Dim p As Integer
Dim i As Integer, j As Integer 'Schleifenvariable
Dim size
Dim A()
'einzählen welche Array größe
For p = 2 To 100
If Cells(p, 9).Value = "" Then
Exit For
Else
size = size + 1
End If
Next
'einlesen des Array
ReDim A(size - 1, 2)
For i = 0 To size - 1
For j = 0 To 2
A(i, j) = Cells(i + 2, j + 9).Value
Next j
Next i
'Fehlermarke einfügen
On Error GoTo FehlerMarke
'Tabellenblattaktivieren
ThisWorkbook.Worksheets("waagerechtes Rohr").Activate
'ZielDatei erstellen
Zieldatei = ThisWorkbook.Path & "\Export.xls"
'ZielDatei öffnen
Open Zieldatei For Output As #1
'Information in Zieldatei einfügen
For j = 0 To 2
For i = 0 To size - 1
Print #1, A(i, j) 'HIER IST DER FEHLER :(
Next i
Next j
'Zieldatei schließen
Close #1
Exit Sub
FehlerMarke:
MsgBox Err.Description
End Sub