Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
Ankündigung
Einklappen
Keine Ankündigung bisher.
Vorstellung: Excel-Tool zur Erstellung von GA (Mittelgruppen-System)
Das ist ziemlich provokant. Und unhöflich. Es gibt - gerade bei professionellen SI durchaus Zwänge, die das Arbeiten mit älteren Versionen vorschreiben bzw. unumgänglich machen.
Wenn ich dir auf die Füße getreten bin ... sorry.
Meine Aussage bezog sich auf neue oder nicht migrierbare Projekte. Und wer da noch ETS 4 einsetzt, hat es wirklich nicht besser verdient
Ich verstehe seinen Einwand jedenfalls. Die ETS Inside macht es heute bereits so, daß die GA-Struktur bedeutungslos ist und alles über Räume und Funktionen strukturiert wird.
Jepp und immer wieder wird von bestimmten Personen gepredigt, dass die Nummern so wichtig sind. Wenn die so wichtig wären, würde die Inside auch anders arbeiten.
Man kann das funktionsorientierte Prinzip problemlos auch manuell abbilden. Die GA sind dann halt nicht fortlaufend. Aber fortlaufende GAs sind vielen ganz wichtig.
Wenn man eine Struktur in der Bezeichnung der GA hat, ist die Nummer Schall und Rauch
Ich mag dieses System auch nicht so besonders. Man muss zu schnell davon abweichen (oder mehrere Hauptgruppen benutzen), weil die Mitttelgruppen zu knapp werden.
Jetzt aber mal wieder was, was nicht OT ist:
Ich würde die beiden Zeilen
Code:
strDateiname = InputBox("Wie soll die CSV-Datei heißen (inkl. Pfad)?", "CSV-Export", strMappenpfad)
If strDateiname = "" Then Exit Sub
gegen diese ersetzen:
Code:
strDateiname = Application.GetSaveAsFilename(strMappenpfad, "CSV-Datei (*.csv), *.csv", , "CSV-Export")
If strDateiname = "Falsch" Then Exit Sub
Bringt den normalen Datei-Dialog mit allen Möglichkeiten.
Edit:
Die Auslegung auf 31 Hauptgruppen ist zwar sinnvoll, jedoch ist das Nutzen dieser nicht unbedingt empfehlenswert. Es gibt einfach noch zu viele Geräte, die damit nicht zurecht kommen.
Zuletzt geändert von DirtyHarry; 25.05.2019, 14:10.
Gruß Andreas
-----------------------------------------------------------
Immer wieder benötigt: KNX-Grundlagen PDF Englisch, PDF Deutsch oder Deutsche Version im KNX-Support.
liebe chaoten, ich steh total auf das mittelgruppen-system und wende es überall an wo es passt, insbesondere immer bei licht, jalousien, ggf auch elektrische fenster, türen, tore, etc... und wo es nicht passt, kommt dann das blocksystem. wenn man das versteht und clever anlegt spart das erstens immens zeit (hab mein eigenes excel-tool) und ist zweitens extrem übersichtlich, letztlich auch beim trouble-shooting...
chaos ist reserviert für den schreibtisch, büro, labor und die beziehung... aber nicht für die ga's
ps: die inside geht mir übrigens am a.... vorbei. wer will meine lizenz?
Persönlich setze ich schon lange kein GA-Generator-Tool mehr ein - bin schneller u. flexibler ohne, vor allem bei Fremdprojekten.
sehe das ähnlich, mein excel-tool ist kein ga-generator im klassischen sinn sondern dient mir dazu,eine einheitliche syntax für alle ga's einzuhalten und das ganze dann via csv (oder bei kleineren ergänzungen via copy & paste) in die ets zu kopieren.
durch diese einheitliche syntax versteht man viel besser was auf dem bus läuft und such- und filterfunktionen sind natürlich auch möglich.
gemäss forenregeln soll man bitte und danke sagen! also: bitte und danke!
Im Bild sieht man GA ins 0/0 und 0/1 ohne System in den Nummer. System ist im Namen. Die Suche funktioniert nur über die die markierte GAs.
Das ist doof.
Ein 100% System in den Nummern wird es nie geben. Aber Über Namen und die Beschreibung kann man alles abfackeln.
Nummern sind mit der Suche und dem Sortieren praktisch überflüssig.
Stimmt - wäre die ETS eine 1000 Euro Software und würde sich z.B. mit dem Zusatz "pro" für professional rühmen, sollte derlei eine Grundfunktion sein (neben anderen Dingen). Aber bei einer Billigversion für Privatleute kann man sowas schon mal in Kauf nehmen.
Hallo zusammen,
danke für die rege Beteiligung :-) Nachdem ich mein Tool jetzt auf einem Stand habe, mit dem ich zufrieden bin, hab ich gemerkt dass das Mittelgruppensystem wohl doch nicht das Richtige ist für die Komponenten die ich habe Insbesondere die PM - B-J premium - haben ja unzählige GA, und die MDT Glastaster wohl auch. Ich werde also wohl doch eher das Blocksystem nutzen. Ich möchte euch trotzdem kurz mein Update zeigen, vielleicht möchte es ja jemand nutzen.
Es gibt 2 wesentliche Änderungen:
Es gibt jetzt einen Bereich, in dem GA manuell definiert werden können. Z.B. Zentraladressen oder die vielen GA einer Wetterstation
Man kann jetzt für jede UG nicht nur eine HG auswählen, sondern mittels "/" auch nur eine MG davon. Ich hab gemerkt, dass es nicht arg sinnvoll ist dem Fußboden außer der Temperatur auch noch GA für Wetter und Kontaktstatus zuzuweisen, nur weil die auch in der HG Sensoren sind. Folgende Einträge in Spalte K wären also beispielsweise möglich:
1
1;2
13/2
13/2;13/3;15
Viel Spaß damit
Gruß Jochen
Code:
Option Explicit
Private Sub Erstelle_GA_Click()
Dim Beschreibung_HG As String
Dim Beschreibung_MG As String
Dim Beschreibung_UG As String
Dim Beschreibung_gesamt As String
Dim HG_angefragt_str As String
Dim Gr_angefragt_einzeln_str As Variant
Dim HG_angefragt_einzeln_str As Variant
Dim MG_angefragt_einzeln_str As Variant
Dim HG_angefragt_einzeln_int As Integer
Dim MG_angefragt_einzeln_int As Integer
Dim HG_int As Integer
Dim MG_int As Integer
Dim MG_Gesamtzaehler As Integer
Dim UG_int As Integer
Dim GA_Zaehler As Integer
Dim Letzte_Zeile_manuell As Integer
Dim Zaehler_manuelle As Integer
GA_Zaehler = 0
Worksheets("GA").UsedRange.ClearContents
For HG_int = 0 To 31
If Cells(HG_int + 3, 2).Value <> "" Then
' Hauptgruppe ist benutzt, lege HG-GA an
GA_Zaehler = GA_Zaehler + 1
Beschreibung_HG = Cells(HG_int + 3, 2).Value
Worksheets("GA").Cells(GA_Zaehler, 1).NumberFormat = "@"
Worksheets("GA").Cells(GA_Zaehler, 1).Value = Chr(34) & Beschreibung_HG & Chr(34)
Worksheets("GA").Cells(GA_Zaehler, 4).NumberFormat = "@"
Worksheets("GA").Cells(GA_Zaehler, 4).Value = Chr(34) & CStr(HG_int) & "/-/-" & Chr(34)
' schau welche Mittelgruppen benutzt sind
For MG_Gesamtzaehler = 0 To 255
' gehoert diese Zeile zur aktuellen HG?
If CInt(Cells(MG_Gesamtzaehler + 3, 4).Value) = HG_int Then
' pruefe ob diese MG benutzt ist
If Cells(MG_Gesamtzaehler + 3, 7).Value <> "" Then
' MG ist benutzt und gehoert zur akuellen HG => lege MG-GA an
GA_Zaehler = GA_Zaehler + 1
MG_int = CInt(Cells(MG_Gesamtzaehler + 3, 6).Value)
Beschreibung_MG = Cells(MG_Gesamtzaehler + 3, 7).Value
Worksheets("GA").Cells(GA_Zaehler, 2).NumberFormat = "@"
Worksheets("GA").Cells(GA_Zaehler, 2).Value = Chr(34) & Beschreibung_HG & "-" & Beschreibung_MG & Chr(34)
Worksheets("GA").Cells(GA_Zaehler, 4).NumberFormat = "@"
Worksheets("GA").Cells(GA_Zaehler, 4).Value = Chr(34) & CStr(HG_int) & "/" & CStr(MG_int) & "/-" & Chr(34)
' gehe alle Untergruppen (Objekte) durch und schau, ob sie die aktuelle HG brauchen
For UG_int = 0 To 255
HG_angefragt_str = Cells(UG_int + 3, 11).Value
For Each Gr_angefragt_einzeln_str In Split(HG_angefragt_str, ";")
If InStr(Gr_angefragt_einzeln_str, "/") = 0 Then
' die gesamt HG ist gewuenscht
HG_angefragt_einzeln_int = CInt(Gr_angefragt_einzeln_str)
If HG_angefragt_einzeln_int = HG_int Then
' jep, dieses Objekt moechte die aktuelle HG haben, erstelle die GA
GA_Zaehler = GA_Zaehler + 1
Beschreibung_UG = Cells(UG_int + 3, 10).Value
Worksheets("GA").Cells(GA_Zaehler, 3).NumberFormat = "@"
Worksheets("GA").Cells(GA_Zaehler, 3).Value = Chr(34) & Beschreibung_UG & "-" & Beschreibung_MG & Chr(34)
Worksheets("GA").Cells(GA_Zaehler, 4).NumberFormat = "@"
Worksheets("GA").Cells(GA_Zaehler, 4).Value = Chr(34) & CStr(HG_int) & "/" & CStr(MG_int) & "/" & CStr(UG_int) & Chr(34)
End If
Else
' nur eine bestimmt MG dieser HG ist gewuenscht
HG_angefragt_einzeln_str = Split(Gr_angefragt_einzeln_str, "/")(0)
MG_angefragt_einzeln_str = Split(Gr_angefragt_einzeln_str, "/")(1)
HG_angefragt_einzeln_int = CInt(HG_angefragt_einzeln_str)
MG_angefragt_einzeln_int = CInt(MG_angefragt_einzeln_str)
If HG_angefragt_einzeln_int = HG_int Then
' jep, dieses Objekt moechte die aktuelle HG haben
If MG_angefragt_einzeln_int = MG_int Then
' jep, dieses Objekt moechte die aktuelle MG haben, erstelle GA
GA_Zaehler = GA_Zaehler + 1
Beschreibung_UG = Cells(UG_int + 3, 10).Value
Worksheets("GA").Cells(GA_Zaehler, 3).NumberFormat = "@"
Worksheets("GA").Cells(GA_Zaehler, 3).Value = Chr(34) & Beschreibung_UG & "-" & Beschreibung_MG & Chr(34)
Worksheets("GA").Cells(GA_Zaehler, 4).NumberFormat = "@"
Worksheets("GA").Cells(GA_Zaehler, 4).Value = Chr(34) & CStr(HG_int) & "/" & CStr(MG_int) & "/" & CStr(UG_int) & Chr(34)
End If
End If
End If
Next
Next
End If
End If
Next
End If
Next
' Fuege manuelle GA hinzu
Letzte_Zeile_manuell = ActiveSheet.Cells(1048576, 16).End(xlUp).Row
For Zaehler_manuelle = 3 To Letzte_Zeile_manuell
If Cells(Zaehler_manuelle, 13).Value <> "" Then
GA_Zaehler = GA_Zaehler + 1
Worksheets("GA").Cells(GA_Zaehler, 1).NumberFormat = "@"
Worksheets("GA").Cells(GA_Zaehler, 1).Value = Chr(34) & Cells(Zaehler_manuelle, 13).Value & Chr(34)
Worksheets("GA").Cells(GA_Zaehler, 4).NumberFormat = "@"
Worksheets("GA").Cells(GA_Zaehler, 4).Value = Chr(34) & CStr(Cells(Zaehler_manuelle, 16).Value) & "/-/-" & Chr(34)
Else
If Cells(Zaehler_manuelle, 14).Value <> "" Then
GA_Zaehler = GA_Zaehler + 1
Worksheets("GA").Cells(GA_Zaehler, 2).NumberFormat = "@"
Worksheets("GA").Cells(GA_Zaehler, 2).Value = Chr(34) & Cells(Zaehler_manuelle, 14).Value & Chr(34)
Worksheets("GA").Cells(GA_Zaehler, 4).NumberFormat = "@"
Worksheets("GA").Cells(GA_Zaehler, 4).Value = Chr(34) & CStr(Cells(Zaehler_manuelle, 16).Value) & "/" & CStr(Cells(Zaehler_manuelle, 17).Value) & "/-" & Chr(34)
Else
If Cells(Zaehler_manuelle, 15).Value <> "" Then
GA_Zaehler = GA_Zaehler + 1
Worksheets("GA").Cells(GA_Zaehler, 3).NumberFormat = "@"
Worksheets("GA").Cells(GA_Zaehler, 3).Value = Chr(34) & Cells(Zaehler_manuelle, 15).Value & Chr(34)
Worksheets("GA").Cells(GA_Zaehler, 4).NumberFormat = "@"
Worksheets("GA").Cells(GA_Zaehler, 4).Value = Chr(34) & CStr(Cells(Zaehler_manuelle, 16).Value) & "/" & CStr(Cells(Zaehler_manuelle, 17).Value) & "/" & CStr(Cells(Zaehler_manuelle, 18).Value) & Chr(34)
End If
End If
End If
Next
SaveCSV
End Sub
Sub SaveCSV()
' Speichert den Inhalt eines Arbeitsblatts als CSV-Datei
' mit wählbarem Trennzeichen und Maskierung von Einträgen
Dim Bereich As Object, Zeile As Object, Zelle As Object
Dim strTemp As String
Dim strDateiname As String
Dim strTrennzeichen As String
Dim strMappenpfad As String
strMappenpfad = Left(ThisWorkbook.FullName, (InStrRev(ThisWorkbook.FullName, ".", -1, vbTextCompare) - 1))
strMappenpfad = strMappenpfad & ".csv"
strDateiname = InputBox("Wie soll die CSV-Datei heißen (inkl. Pfad)?", "CSV-Export", _
strMappenpfad)
If strDateiname = "" Then Exit Sub
strTrennzeichen = ";"
Set Bereich = Worksheets("GA").UsedRange
Open strDateiname For Output As #1
For Each Zeile In Bereich.Rows
For Each Zelle In Zeile.Cells
If InStr(1, Zelle.Text, strTrennzeichen) > 0 Then
'Zellen, die ein Trennzeichen beinhalten in Anführungsstriche setzen
strTemp = strTemp & """" & CStr(Zelle.Text) & """" & strTrennzeichen
Else
strTemp = strTemp & CStr(Zelle.Text) & strTrennzeichen
End If
Next
If Right(strTemp, 1) = strTrennzeichen Then strTemp = Left(strTemp, Len(strTemp) - 1)
Print #1, strTemp
strTemp = ""
Next
Close #1
Set Bereich = Nothing
MsgBox "Datei wurde exportiert nach" & vbCrLf & strDateiname
End Sub
Stimmt - wäre die ETS eine 1000 Euro Software und würde sich z.B. mit dem Zusatz "pro" für professional rühmen, sollte derlei eine Grundfunktion sein (neben anderen Dingen). Aber bei einer Billigversion für Privatleute kann man sowas schon mal in Kauf nehmen.
Du hast ja vollkommen recht, aber leider ist es so wie es ist und wenn man damit Zeit sparen kann, kauft man ein Zusatztool...
Wobei ich denke, es ist oft umgekehrt: Irgendwelchen günstigen Softwarepakete für private sind komplett, während man im Profibereich durch viele Optionen zusätzlich Kohle verdienen will.
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Kommentar