AW: Text Datei erstellen !
11.04.2017 08:55:58
fcs
Hallo Pramkies,
Hier das angepasste Makro.
LG
Franz
Sub TextDateiErstellen()
Dim sProgrammName As String
Dim sTitel As String
Dim iSchritte As Integer
Dim iAnzAnst As Integer
Dim tmpAnst As Integer
Dim stxtName As String
Dim IndexAdr As Range
Dim Tag
Dim Index As Variant
Dim Schritt As Variant
Dim tmpIndex As Long
Dim AnzIndexAnst As Integer
Dim ZeiTag As Long, Zeile As Long
Dim SpaTag As Long, SpaName As Long
Dim arrIndex(), bolIndex As Boolean, Next_Index As Variant
Dim arrData
Dim wks As Worksheet
Set wks = ActiveSheet 'Tabellenblatt mit den Daten
With wks
sProgrammName = .Cells(1, 2)
sTitel = .Cells(1, 2) ' FC Titel
iAnzAnst = .Cells(5, 1) ' Anzahl Ansteurungen Elemente
stxtName = .Cells(4, 2) & sProgrammName & "_IO" & ".txt"
'alle Daten zu Ventilen in Daten-Array einlesen
ZeiTag = 7 '1. Zeile mit sName
SpaName = 3 'Spalte mit Ventil-Tag-Nr. in Index-Liste
Zeile = .Cells(.Rows.Count, SpaName).End(xlUp).Row 'letzte Zeile mit sName
arrData = .Range(.Cells(ZeiTag, SpaName), .Cells(Zeile, SpaName + 3))
End With
'Textfile anlegen/öffnen
'Open "E:\test.txt" For Output As #1
Open stxtName For Output As #1
ZeiTag = 7 '1. Zeile mit Tag-Nr.
SpaTag = 1 'Spalte mit Tag-Nummern
'Tag-Nummern der angesteuerten Ventile abarbeiten
Set IndexAdr = wks.Columns(SpaName) ' Spalte mit VentilName(Tag)
For tmpAnst = 2 To iAnzAnst ' Anzahl Ansteuerungen
Tag = wks.Cells(ZeiTag, SpaTag) ' Ventil-Tag-Nr.
Print #1, "---> = Ansteuerungen: " & Tag _
& " (" & wks.Cells(ZeiTag, SpaTag).Offset(0, 1) & ")"
'Anzahl Indexe zu Tag-Nr ermitteln
AnzIndexAnst = Application.WorksheetFunction.CountIf(IndexAdr, Tag)
'Prüfen, ob Ansteuerungen zur Tag-Nr gibt
'MsgBox AnzIndexAnst
If AnzIndexAnst > 0 Then
'Daten-Array für Indexe zu Tag-Nr. dimensionieren
ReDim arrIndex(1 To AnzIndexAnst, 1 To 3)
'Indexe und Schritte zu Tag in Daten-Array einlesen
tmpIndex = 0
For Zeile = LBound(arrData, 1) To UBound(arrData, 1)
If arrData(Zeile, 1) = Tag Then
tmpIndex = tmpIndex + 1
arrIndex(tmpIndex, 1) = arrData(Zeile, 3) 'Schritt
arrIndex(tmpIndex, 2) = arrData(Zeile, 4) 'Index
arrIndex(tmpIndex, 3) = False 'Merker
End If
Next
'1. Indexwert einlesen
Next_Index = arrIndex(1, 2)
'Indexe und Schrittnummern zu Tag-Nr. in Textdatei schreiben
Do
Index = Next_Index
Print #1, "U " & Index
Print #1, "U " & "("
bolIndex = False
Next_Index = ""
For tmpIndex = LBound(arrIndex, 1) To UBound(arrIndex, 1)
If arrIndex(tmpIndex, 3) = False And Index = arrIndex(tmpIndex, 2) Then
Schritt = arrIndex(tmpIndex, 1) ' Schritt
Print #1, "O S" & Schritt
arrIndex(tmpIndex, 3) = True 'als verarbeitet markieren
ElseIf arrIndex(tmpIndex, 3) = False Then
If bolIndex = False Then
'nächsten Indexwert merken
Next_Index = arrIndex(tmpIndex, 2)
End If
bolIndex = True
End If
Next tmpIndex
Print #1, ")"
Loop Until Next_Index = ""
End If
ZeiTag = ZeiTag + 1 ' nächste Zeile
Next tmpAnst
Print #1, "END_FUNCTION"
Close #1
MsgBox ("Quelle wurde generiert: " & stxtName)
End Sub