1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Fernando

Beiträge von Fernando

  • EXCEL-Zelle aus AutoIt aktivieren

    • Fernando
    • 24. Februar 2013 um 18:15

    water
    Danke für die schnelle Antwort,
    Auf Grund der schnellen und guten Antworten, die ich hier im Forum bekommen habe, macht es immer mehr Freude mit AutoIt zu arbeiten.
    Es begann mit einem Programm um die Easy.Box auszulesen, das ich nur für meine Zwecke anpassen musste, ging dann weiter um einen Feiertagskalender, den ich mal in EXCEL geschrieben hatte in AutoIt umzusetzen, dann Telefon rückwärts, so dass ich mir die Werbung einspare, und jetzt habe ich ein Programm fertig, mit dem ich meine 100 Artikel bei Amazon verwalte und mir täglich die neuen Preise für diese Artikel in eine EXCEL-Tabelle schreiben lasse. In der Zwischenzeit war ich sogar in der Lage anderen zu helfen :) .

  • EXCEL-Zelle aus AutoIt aktivieren

    • Fernando
    • 24. Februar 2013 um 16:51

    Hallo qwert23,

    Danke für die weiteren Beispiele.
    Wenn ich das sehe, kann ich dann davon ausgehen, dass ich allen VB-Befehlen ein "$oExcel." voraussetzen kann, damit sie im EXCEL umgesetzt werden? Das wäre genial.

  • EXCEL-Zelle aus AutoIt aktivieren

    • Fernando
    • 24. Februar 2013 um 03:57

    Hallo water,

    habe gerade die Lösung gefunden und zwar unter der Beschreibung von Funktion ObjGet.
    $oExcel.ActiveWorkBook.ActiveSheet.Cells($Zeile,$Spalte).activate.
    Hatte Dich vermutlich falsch verstanden.

    Gruß
    Fernando

  • EXCEL-Zelle aus AutoIt aktivieren

    • Fernando
    • 24. Februar 2013 um 03:04

    Hallo water,

    Danke für die Antwort, es geht aber nicht um VB-Befehle, sondern um einen Befehl aus AutoIt heraus.
    Mit den Befehlen von AutoIt die ich kenne, kann ich zwar sagen, welche Zelle beschrieben werden soll, aber nicht, welche sichtbar markiert ist.
    Mir geht es dabei um folgende 2 Punkte:
    1. Ich möchte nach dem Schreiben der Tabelle, dass die aktivierte Zelle zum Beispiel die "A1" ist.
    2. Dass ich während dem Überschreiben einer vorhandenen Tabelle sehe, an welcher Stelle gerade die Daten überschrieben werden.

    Ich würde mich über einen guten Vorschlag freuen.
    Die letzte Möglichkeit, die ich aber nicht gut finde, wäre, dass ich jedes mal ein Makro starte, das diese Zelle aktiviert.

    Gruß
    Fernando

  • EXCEL-Zelle aus AutoIt aktivieren

    • Fernando
    • 23. Februar 2013 um 18:49

    Ich habe folgendes Problem:
    Ich möchte nachdem ich mit AutoIt eine Tabelle beschrieben habe als letztes eine bestimmte Zelle aktivieren.
    Etwas wie:
    Range("A1").activate
    Ich habe da leider nichts gefunden. Kann mir jemand einen Tipp geben?

  • NCID EasyBox 803 Telefondaten auslesen und in EXCEL speichern

    • Fernando
    • 20. Februar 2013 um 01:39

    Hier die Datenblöcke, wie sie auf der EasyBox pro Gespräch gespeichert sind.
    Script Daten der eingehenden Gespräche:

    von diesen werden in meinem Programm nur voip_i_Phone, voip_i_Date und voip_i_Keep genutzt.

    Script Daten der ausgehenden Gespräche:

    von diesen werden in meinem Programm nur voip_o_Phone, voip_o_Date und voip_o_Keep genutzt.
    Unter welcher Bezeichnung sich LINE*label befindet kann ich nur vermuten ( voip_i_AC und voip_o_AC)

  • NCID EasyBox 803 Telefondaten auslesen und in EXCEL speichern

    • Fernando
    • 18. Februar 2013 um 19:25

    Ich bin mir nicht sicher, ob ich Dir helfen kann, da die Frage auf die technische Seite zielt. Ich selber habe einen LTE-Anschluß.
    Voraussetzung, dass die Daten übernommen werden können ist, dass auf der EasyBox unter Extras --> NCID die Häkchen gesetzt sind.

    dann werden die Gespräche auch unter Sprache --> Status eingetragen

    Diese dort eingetragenen Daten werden von mir ausgelesen und archiviert.
    Es sollte auch bei einem ISDN-Anschluss so funktionieren.

  • Excel-Datei bearbeiten, öfnnen von Excel und Datei...

    • Fernando
    • 12. Dezember 2012 um 17:23

    Hallo Katrijn, Hallo water,

    danke für die Mitteilungen.
    Katrijn Dass die 2 anderen Situationen auftreten können, ist mir klar. Für meine Anwendung aber nicht zu erwarten, da das "nur" auf einem Einzelplatz stattfindet. Für andere Anwendungen aber immer zu bedenken. Danke für den Hinweis.

    water Danke für die Mitteilung, Bin ab morgen, bis Weihnachten leider stark privat eingespannt. Ich werde mir AutoIt 3.3.9.2, falls ich es noch nicht habe, dan runterladen und anschlißend das neue UDF testen. (Hoffe, dass mein Schulenglisch reicht.)

    Liebe Grüße und ein frohes Weihnachtsfest incl. Neuem Jahr

    Fernando

  • Excel-Datei bearbeiten, öfnnen von Excel und Datei...

    • Fernando
    • 11. Dezember 2012 um 16:22

    Hallo water,

    danke für die Antwort.
    Ich habe schon dem Vorschlag von TheLuBu augetestet. Das hat geklappt.

    Vielen Dank
    Fernando

  • Excel-Datei bearbeiten, öfnnen von Excel und Datei...

    • Fernando
    • 11. Dezember 2012 um 16:08

    Hallo TheLuBu,

    vielen Dank für die schnelle Antwort.
    Ich habe es schon ausgetestet. Es klappt hervorragend.

    Gruß
    Fernando

  • Excel-Datei bearbeiten, öfnnen von Excel und Datei...

    • Fernando
    • 11. Dezember 2012 um 13:11

    Hauptproblem gelöst

    Dateien

    Anrufe.zip 42,12 kB – 415 Downloads
  • NCID EasyBox 803 Telefondaten auslesen und in EXCEL speichern

    • Fernando
    • 4. November 2012 um 18:48

    Für alle, die noch mit EXCEL 2003 arbeiten ist im Anhang eine Zip-Datei, mit dem Compilierten Programm und der EXCEL 2003 Datei.

    Seit März 2013 habe ich nun eine EasyBox 904 LTE. Auch hier funktioniert das Programm (beide Ausführungen).

    Dateien

    EASYBOX_EXCEL2003.zip 408,58 kB – 798 Downloads
  • NCID EasyBox 803 Telefondaten auslesen und in EXCEL speichern

    • Fernando
    • 2. November 2012 um 22:09

    Seit 4 Wochen bin ich nach Wechsel meines Internetanbieters Besitzer einer EasyBox 800 a.
    Ich musste leider feststellen, dass Die Möglichkeiten der Datenübernahme sehr gering sind (cut and paste).

    Ich fand dann hier im Forum einen Beitrag, der sich mit diesem Problem beschäftigt (NCID Anrufmonitor). Das hat mich dazu veranlasste mich mit Autoit zu beschäftigen. Meinen Dank an den Autor.

    Daraus ist nun ein Programm geworden, dass die Telefondaten in eine Excel-Datei übernimmt. Die Daten werden getrennt nach eingehenden und ausgehenden Verbindungen aufgeführt. Neu hinzugekommene Telefonnummern werden in einem dritten Block aufgeführt. Wenn man hier den Teilnehmer hinzufügt, hat man bald ein gutes Telefonbuch. Hier als Beispiel:
    ]
    Und hier dann der Autoit-Code

    Spoiler anzeigen
    C
    #include "Inet.au3"
    #include "Array.au3"
    #include <file.au3>
    #include "Excel.au3"
    
    
    ;####################################################################
    ; Anruflisten auslesen für Router Model:
    ; EasyBox 803 A (und vermutlich andere...)			| By JaneDoe
    ;####################################################################
    ; 26.10.2012 | geändert um Excel-Datei zu füllen 	| By Fernando
    ; mit freundlicher Unterstützung von BugFix und water
    ;####################################################################
    
    
    ;Bitte die IP-Adresse, den Usernamen und das Passwort überprüfen. Hier sind die Standardeinstellungen eingetragen
    
    
    Local $EB_IP   	="192.168.2.1"   															; router ip
    Local $EB_Username ="root"      																; standart ist: root
    Local $EB_Passwort ="123456"    																; standart ist: 123456
    
    
    Local $ArrayIncoming,$ArrayOutgoing,$EB_Anrufliste,$EB_Start,$Error_Check,$iNumCells_i,$iNumCells_o,$flag
    Local $myPath																					; Excelpfadvariable
    Local $Reihe, $SpalteDatum, $SpaltePhone, $SpalteDauer, $sFormat_01,$sFormat_02, $sFormat_03 	; Excelvariablen
    
    
    $myPath = "C:\Hier Pfad der EXCEL-Datei eintragen\Gespräche.xlsm    ; Dateiname eintragen
    
    
    Local $fOpen = False, $oBook, $oExcel = ObjGet('', 'Excel.Application') 						; Zugriff auf geöffnetes Excel
    
    
    If @error Then
    	_OpenXLS(0)	; == Excel ist nicht geöffnet, neues Excel-Objekt erstellen
    	$fOpen = True
    Else
    	; == in Excel geöffnete Workbooks auflisten
    	$oBook = $oExcel.WorkBooks																	; == in Excel geöffnete Workbooks auflisten
    	For $book In $oBook
        	If $book.Path & '\' & $book.Name = $myPath Then
    ;			ConsoleWrite($book.Path & '\' & $book.Name & @CRLF)
            	$oBook($book.Name).Activate
            	$fOpen = True
    			$oExcel.Visible = 1             													; nur wenn Tabelle sichtbar sein soll
            	$book.Sheets(1).Select()
            	ExitLoop
        	EndIf
    	Next
    EndIf
    If Not $fOpen Then _OpenXLS($oExcel)
    
    
    $sFormat_01 = "[$-F400]h:mm:ss AM/PM"
    $sFormat_02 = "TT.MM.JJJJ hh:mm:ss"
    $sFormat_03 = "@"
    
    
    $oExcel.Visible = 1
    _ExcelSheetActivate($oExcel, 1)
    
    
    $Error_Check = _EB_GetAnrufliste()																; Funktion Daten holen
    
    
    $iReiheEnde_1 = _ExcelReadCell($oExcel, 3, 13)+4
    $iReiheEnde_2 = _ExcelReadCell($oExcel, 3, 14)+4
    
    
    _ExcelNumberFormat($oExcel, $sFormat_01, 4, 3, $iReiheEnde_1, 3)
    _ExcelNumberFormat($oExcel, $sFormat_02, 4, 1, $iReiheEnde_1, 1)
    _ExcelNumberFormat($oExcel, $sFormat_01, 4, 8, $iReiheEnde_2, 8)
    _ExcelNumberFormat($oExcel, $sFormat_02, 4, 6, $iReiheEnde_2, 6)
    $sHorizAlign = "right"
    _ExcelHorizontalAlignSet($oExcel, 4, 2, $iReiheEnde_1, 2, $sHorizAlign)
    _ExcelHorizontalAlignSet($oExcel, 4, 7, $iReiheEnde_1, 7, $sHorizAlign)
    
    
    
    
    
    
    $oExcel.Application.Run("Finish")
    
    
    $sFlag = MsgBox(4, "Excel Ende", "Soll Excel geschlossen werden?")
    If $sFlag = 6 then
    _ExcelBookClose($oExcel,1,1)
    EndIf
    exit
    
    
    ;###############################################
    ; Routerlogin und Anrufliste auslesen
    ;###############################################
    Func _EB_GetAnrufliste()
    $Error_Check = "None"
    Local $EB_Strip,$EB_Eintraege
    Local $EB_Login = _INetGetSource("http://" &$EB_IP& "/cgi-bin/login.exe?user=" &$EB_Username& "&pws=" &$EB_Passwort)
    if Stringlen($EB_Login)=0 then
    	$Error_Check = "Fehler: Bitte Zugangsdaten überprüfen"                                  	; falsche zugangsdaten
    Else
    	$EB_Strip = StringInStr($EB_Login, 'Login gescheitert.')
    	if $EB_Strip < 0 then                                                                   	; gefunden = nicht eingelogt
        	$Error_Check = "Fehler: Keine Einträge in der Anruferliste."                        	; fehler...
    	else                                                                                    	; eingelogt
        	$EB_Anrufliste = _INetGetSource("http://" &$EB_IP& "/voip_status.stm")
        	if Stringlen($EB_Anrufliste)=0 then
            	$Error_Check = "Fehler: Konnte Anruferliste nicht öffnen."                      	; fehler...
        	Else
            	$EB_Start = StringInStr($EB_Anrufliste, 'voip_i_Phone[0]')                      	; lade anrufer
            	if $EB_Start = 0 then 																; nichts gefunden
                	$Error_Check = "Keine Einträge in der Anruferliste gefunden."               	; fehler...
            	else                                                                            	; sortiere anrufer...
    				$Reihe = _ExcelReadCell($oExcel, 3, 13)+4
    				$SpalteDatum = 1																; Exceleinträge eingehende Anrufe
    				$SpaltePhone = 2																; Exceleinträge eingehende Anrufe
    				$SpalteDauer = 3																; Exceleinträge eingehende Anrufe
    				$ArrayIncoming=_SortAnrufer("i")
            	endif
    ;########
            	$EB_Start = StringInStr($EB_Anrufliste, 'voip_o_Phone[0]')                      	; lade anrufe
            	if $EB_Start = 0 then 																; nichts gefunden
                	$Error_Check = "Keine Einträge in der Anrufliste gefunden."                 	; fehler...
            	else                                                                            	; sortiere anrufe...
    				$Reihe = _ExcelReadCell($oExcel, 3, 14)+4
    				$SpalteDatum = 6																; Exceleinträge ausgehende Anrufe
    				$SpaltePhone = 7																; Exceleinträge ausgehende Anrufe
    				$SpalteDauer = 8																; Exceleinträge ausgehende Anrufe
    				$ArrayOutgoing=_SortAnrufer("o")
            	endif
        	endif
    	endif
    endif
    Return $Error_Check
    EndFunc
    ;###############################################
    ; Anruflisten sortieren in Nr.Datum.Dauer
    ;###############################################
    Func _SortAnrufer($EB_Sort)
        	Dim $EB_Array
        	Local $EB_ResultArray[1][3], $EB_Lenght, $EB_End, $EB_GetStr
        	Local $ArSize=0, $ArRegEx, $EB_Anrufer, $EB_Date, $EB_Lenght
        	$EB_End = StringInStr($EB_Anrufliste, 'var '&$EB_Sort&'_count=')                  		; ende der einträge finden
        	$EB_GetStr = $EB_End-$EB_Start                                                    		; zeichen berechenen zum ausschneiden
        	$EB_Eintraege = StringMid($EB_Anrufliste, $EB_Start, $EB_GetStr)                  		; telefonliste ausschneiden
        	$EB_Array = StringSplit($EB_Eintraege, @CRLF)                                     		; telefonliste in array splitten
    
    
        	For $i = 1 To UBound($EB_Array)-1                                                 		; jeden eintrag abklappern...
    			; voip_i_Phone[x] = 'suchtext';
    			$ArRegEx = StringRegExp($EB_Array[$i], "(?i)voip_" & $EB_Sort & "_Phone([^;]*)", 1) ; 1 regex
    			if not @Error then $ArRegEx = StringRegExp($ArRegEx[0], "(?i)'([^']*)", 1)      	; 2 regex...profi kann da sicher 1 regex machen :)
    			if not @Error then $EB_Anrufer = $ArRegEx[0]
    
    
    			; voip_i_Date[x] = 'suchtext';
    			$ArRegEx = StringRegExp($EB_Array[$i], "(?i)voip_" & $EB_Sort & "_Date([^;]*)", 1)  ; 1 regex
    			if not @Error then $ArRegEx = StringRegExp($ArRegEx[0], "(?i)'([^']*)", 1)      	; 2 regex...profi kann da sicher 1 regex machen :)
    			if not @Error then $EB_Date= $ArRegEx[0]
    
    
    			; voip_i_Keep[x] = 'suchtext';
    			$ArRegEx = StringRegExp($EB_Array[$i], "(?i)voip_"&$EB_Sort&"_Keep([^;]*)", 1)  	; 1 regex
    			if not @Error then $ArRegEx = StringRegExp($ArRegEx[0], "(?i)'([^']*)", 1)      	; 2 regex...profi kann da sicher 1 regex machen :)
    			if not @Error then
    				$EB_Lenght = $ArRegEx[0]
    
    
    				ReDim $EB_ResultArray[$ArSize+1][3]                                          	; neuer eintrag mit gefundenen daten...
    				$EB_ResultArray[$ArSize][0]= $EB_Anrufer                                     	; anrufer nummer
    				$EB_ResultArray[$ArSize][1]= $EB_Date                                        	; anrufer datum und zeit
    				$EB_ResultArray[$ArSize][2]= $EB_Lenght                                      	; anruf dauer oder 00:00:00 = anruf verpasst
    				$ArSize+=1
    
    
    				$EB_Date = StringReplace($EB_Date, "/", " ")
    
    
    				_ExcelWriteCell($oExcel, $EB_Lenght, $Reihe , $SpalteDauer)
    				_ExcelWriteCell($oExcel, $EB_Date, $Reihe , $SpalteDatum)
    				_ExcelWriteCell($oExcel, "'" & $EB_Anrufer, $Reihe , $SpaltePhone)	; "'" da NumberFormat nicht übernommen wird und die führende Null sonst wegfällt.
    				$Reihe+=1
    			endif
        	next
     	Return $EB_ResultArray
    EndFunc
    
    
    Func _OpenXLS($_oExcel)
    	If Not IsObj($_oExcel) Then $oExcel = ObjCreate("Excel.Application")			; Excel-Objekt erstellen
    	$oExcel.Visible = 1                                                 			; 0=unsichtbar/ 1=sichtbar
    	$oBook = $oExcel.Workbooks.Open($myPath)                            			; Datei öffnen
    	$oBook.Sheets(1).Select()
    EndFunc
    Alles anzeigen

    Im Anhang dann noch die EXCEL-Tabelle als Zip-Datei.

    Was ist zu tun?
    Die ZipDatei dekomprimieren, Die Datei abspeichern.
    Den Autoit-code übernehmen, den Pfad der Exceldatei einsetzen, compilieren und hoffentlich Freude haben.

    Dateien

    EASYBOXauslesen.zip 416,5 kB – 1.197 Downloads
  • Datumsformat mit _ExcelNumberFormat macht Schwierigkeiten

    • Fernando
    • 1. November 2012 um 00:29

    EXCEL 2007 und da ich erst seit gut einer Woche Autoit kenne, natürlich den letzten Stand. 3.3.8.1
    ist schon seltsam. Da ich vermute, dass das auch mit der Ländereinstellung etwas zu tun hat, Windows 7.

    Was muss ich einstellen, dass ich Antworten die auf meine Anfragen kommen, schneller mit bekomme?

  • Lochkarten codieren

    • Fernando
    • 1. November 2012 um 00:21

    schau mal hier:
    http://www.funkzentrum.de/technik-histor…ermaschine.html

  • Lochkarten codieren

    • Fernando
    • 31. Oktober 2012 um 21:35

    Habe jetzt eine Übersetzungskarte gefunden
    siehe Anhang

    hier ist zu sehen, dass das "-" Zeichen existiert.

    (wüsste gerne, wie man ein Bild direkt hier einfügt. Direkt einfügen ist zu groß?)

    Dateien

    LochkarteU.jpg 32,66 kB – 0 Downloads
  • Lochkarten codieren

    • Fernando
    • 31. Oktober 2012 um 21:17
    Zitat von Make-Grafik

    Fernando: Wenn -4 schon als 2 Zeichen gewertet werden, wieso steht auf Wikipedia folgendes:
    Ziffern 0 bis 9 mit Vorzeichen: negative Zahlen wurden zusätzlich zur Lochung 0–9 mit Überlochung in der 11er Zone der letzten Ziffernspalte codiert; positive Zahlen wurden in manchen Fällen mit 12er Überlochung dargestellt, in der Regel jedoch ohne Überlochung als neutrale Zahl.

    @Make-Grafik: Ich will mich da nicht festlegen, hatte 1979 ausser einer kleinen Einführung in das Thema keine weiteren Berührungen mit den Lochkarten. Wir hatten da in der Firma noch einen Lochsaal. Der wurde kurze Zeit später aber dicht gemacht. Habe mir jetzt den Artikel von Wiki angesehen. Ist mir ein wenig seltsam, den die Kisten hätten dann ja schon eine gewisse Intelligenz haben müssen um zu sehen, dass es sich inhaltlich um eine "-4" oder um ein "M" handelt. Ich habe damals mitgenommen, dass in jeder Spalte ein Zeichen ist.

  • Datumsformat mit _ExcelNumberFormat macht Schwierigkeiten

    • Fernando
    • 31. Oktober 2012 um 20:56

    Hallo water,
    Danke für den Tipp und die Mühe :thumbup:
    Jetzt klappt es. Nachdem ich das Format von "dd/mm/yyyy hh:mm:ss" auf "TT/MM/JJJJ ss:mm:ss" umgestellt habe,
    Verstehen kann ich es aber nur teilweise. Die Änderung im Autoit-Code kann ich noch nachvollziehen.

    Ich habe aber auch den Test gemacht und über Autoit ein Excel-Makro gestartet um die Formatierung zu erreichen.
    $oExcel_01.Application.Run("test")
    Ich würde an dieser Stelle annehmen, dass hier die Steuerung an EXCEL-VB abgegeben wird. Somit wäre innerhalb des Excel-Makros auch der Formatierungsausdruck "dd/mm/yyyy hh:mm:ss" richtig. Aber auch im VB musste ich den Code auf "TT/MM/JJJJ ss:mm:ss" ändern, damit der Fehler beseitigt ist.

    Das würde bedeuten, dass jede Länderänderung auf dem Rechner zu Fehlern führen kann. Die Länderänderung ist zwar nicht die Regel, kann aber vorkommen.

    Wenn ich das bei Excel VB sehe, dann scheint dass dort so geregelt zu sein, dass die Codierung einheitlich ist, dann aber über die Ländereinstellung eine Übersetzung erfolgt. (So stelle ich mir das vor :) )

  • Datumsformat mit _ExcelNumberFormat macht Schwierigkeiten

    • Fernando
    • 31. Oktober 2012 um 00:43

    Hallo funkey,
    habe mir den Link angeschaut. Leider ist meine letzte Englischstunde schon 45 Jahre her.
    Was ich glaube verstanden zu haben ist, dass es wohl länderspezifische Probleme mit der Formatierung gibt.
    Speziell mein Problem war zwar nicht genannt, könnte aber mit hineingehören.
    Jetzt habe ich versucht, das so zu lösen, dass ich die Formatierung direkt über ein Makro mache.
    In Excel aufgerufen, ist das alles bestens. Ist auch schon tausendfach von mir gemacht worden.
    Starte ich aber das Makro über Autoit, dann habe ich das gleiche Problem. Eine Formatierung der Uhrzeit klappt bestens,
    Aber das Datumsformat wie in meinem Autoit-Beispiel in der Form "DD.MM.JJJJ hh:mm:ss" läuft auf den Hammer.
    Gibt es da noch Hoffnung? ?(

  • Excel ist geöffnet, Wie übernehme ich die Datei und wechsle in Sheet 2

    • Fernando
    • 30. Oktober 2012 um 20:25

    Hallo Bugfix,
    Danke für die Rückmeldung. Habe leider erst heute gesehen, dass da schon eine Antwort vorhanden ist.
    Bin begeistert.
    Fernando

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™