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. BugFix

Beiträge von BugFix

  • Word-UDF, Dokumente verbinden

    • BugFix
    • 18. April 2010 um 14:19

    Hi,
    hier mal eine Funktion um verschiedene Word-Dokumente in einem neuen Dokument zu verbinden.
    Wahlweise kann das neue Dokument angezeigt werden.
    Existieren eine/mehrere der übergebenen Dateien nicht, wird das Dokument mit den vorhandenen Dateien erstellt aber ein Fehler (inkl. Anzahl fehlender Dateien) ausgegeben.

    _WordCombineDocs
    [autoit]

    ;===============================================================================
    ; Function Name: _WordCombineDocs($sNewDocPath, $aPathDocs, $fNewDocOpen = False)
    ; Description: verbindet Worddokumente in einem neuen Dokument (Dokumente bleiben erhalten)
    ; Parameter(s): $sNewDocPath - kpl. Pfad des neuen Dokuments
    ; $aPathDocs - Array mit den Pfaden der zu verbindenden Dokumente
    ; $fNewDocOpen - das neue Dokument öffnen
    ; $fVisible - wenn $fNewDocOpen=True das neue Dokument anzeigen od. nicht
    ; Return Value(s): Erfolg - WordObjekt (Word vorher nicht aktiv und $fNewDocOpen=False), sonst
    ; 1
    ; Teilerfolg WordObjekt od. 1 und @error 2: eine/mehrere Dateien nicht gefunden
    ; @extended = Anzahl fehlender Dateien
    ; Fehler - 0 @error= 1 (kein Array übergeben)
    ; 3 keine Datei gefunden
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;===============================================================================
    Func _WordCombineDocs($sNewDocPath, $aPathDocs, $fNewDocOpen = False, $fVisible = False)
    If Not IsArray($aPathDocs) Then Return SetError(1,0,0)
    Local $err = 0, $iErr = 0, $oWord, $sFileName, $fWordExists = False
    If ProcessExists('WINWORD.EXE') Then
    $oWord = ObjGet('', "Word.Application")
    $fWordExists = True
    Else
    $oWord = ObjCreate("Word.Application")
    $oWord.Visible = False
    EndIf
    $oWord.Documents.Add("")
    For $i = 0 To UBound($aPathDocs) -1
    If Not FileExists($aPathDocs[$i]) Then
    $iErr += 1
    ContinueLoop
    EndIf
    With $oWord.Selection
    .EndKey(6)
    .InsertBreak(7)
    .InsertFile($aPathDocs[$i])
    EndWith
    Next
    If $iErr Then
    $err = 2
    If $iErr = UBound($aPathDocs) Then
    If Not $fWordExists Then $oWord.Application.Quit(0)
    Return SetError(3,0,0)
    EndIf
    EndIf
    $oWord.ActiveDocument.SaveAs($sNewDocPath)
    If $fNewDocOpen Then
    $oWord.Visible = $fVisible
    $sFileName = StringRight($sNewDocPath, StringLen($sNewDocPath)-StringInStr($sNewDocPath, '\', 1, -1))
    WinActivate($sFileName)
    Return SetError($err,$iErr,$oWord)
    Else
    If Not $fWordExists Then
    $oWord.Application.Quit(-1)
    Return SetError($err,$iErr,1)
    EndIf
    EndIf
    EndFunc ;==>_WordCombineDocs

    [/autoit]

    Dateien

    WordCombineDocs.au3 2,41 kB – 492 Downloads
  • Eigene Funktionen in Scite "vorschlagen" lassen

    • BugFix
    • 17. April 2010 um 22:28

    Bitte nicht in die au3.api eintragen, nach dem nächsten Update ist dann alles futsch. :D
    Erstelle die Datei "au3.user.calltips.api" und füge dort deine eigenen Funktionen ein.

  • Autoitbug bei _GUIImageList_SetBkColor

    • BugFix
    • 17. April 2010 um 22:05

    Übergib die Farben nicht in RGB sondern in BGR ;)
    (vermute ich einfach mal)

  • bereich definieren

    • BugFix
    • 17. April 2010 um 16:53

    Nun, bei uns funktioniert es. Somit ist ein Fehler im Code ausgeschlossen. Das Problem liegt also auf andere Weise bei dir.

  • bereich definieren

    • BugFix
    • 17. April 2010 um 16:45

    Und um es noch kürzer zu machen, befüllt man die Struktur in einem Aufruf. ;)

    [autoit]

    HotKeySet('#!e', '_exit')

    [/autoit][autoit][/autoit][autoit]

    While 1
    ConsoleWrite( _MouseOverRECT(10, 10, 200, 200) & @CRLF)
    Sleep(100)
    WEnd

    [/autoit][autoit][/autoit][autoit]

    Func _exit()
    Exit
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    Func _MouseOverRECT($iLeft, $iTop, $iRight, $iBottom)
    Local $tRECT = DllStructCreate('int Left;int Top;int Right;int Bottom')
    Local $old = Opt("MouseCoordMode", 1), $aMousePos = MouseGetPos()
    Opt("MouseCoordMode", $old)
    DllCall("user32", 'long', 'SetRect', 'ptr', DllStructGetPtr($tRECT), 'long', $iLeft, 'long', $iTop, 'long', $iRight, 'long', $iBottom)
    Local $ret = DllCall("user32", 'long', 'PtInRect', 'ptr', DllStructGetPtr($tRECT), 'long', $aMousePos[0], 'long', $aMousePos[1])
    If $ret[0] > 0 Then Return True
    Return False
    EndFunc

    [/autoit]

    Verwendung von Opt("MouseCoordMode", 1) ist richtig und wichtig. Aber auch bitte den vorherigen Wert speichern und anschließend zurücksetzen. Es kann ja sein, dass im Programm momentan ein anderer Modus genutzt wird.

  • Suche Jemand, der mir eine Leitstelle Coden kann

    • BugFix
    • 17. April 2010 um 14:40

    Ich weiß nicht, ob sich dafür jemand findet.
    Solch eine Software ist recht komplex. Das braucht schon einige hundert Mannstunden um das im vollen Funktionsumfang zu erstellen. Selbst wenn du da einen 1-EUR Jober findest zum Programm schreiben, ist das noch immer 'ne Stange Geld.

  • HotKeys in SciTE

    • BugFix
    • 17. April 2010 um 12:02

    SciTE bietet noch ein paar mehr HotKeys als jene, die über "Menü-Bearbeiten" angezeigt werden.
    Ich hab mal hier eine Auflistung gemacht. Einige kannte ich auch noch nicht (z.B. rechteckigen Bereich auswählen od. Zeile tauschen).
    Bisher hab ich um eine Zeile zu löschen diese markiert und dann gelöscht. Aber das Markieren kann man sich sparen, einfach Cursor in die Zeile, Strg+Shift+L ;)

    HotKeys in SciTE
    Code
    Schriftgröße - vergrößern		Ctrl+Keypad+
    Schriftgröße - verkleinern		Ctrl+Keypad-
    Schriftgröße - zurück auf normal	Ctrl+Keypad/
    
    
    Tab aktivieren links vom aktuellen Tab	Ctrl+Tab
    Tab aktivieren rechts vom aktuellen Tab	Ctrl+Shift+Tab
    
    
    Einrücken				Tab
    Einrücken rückgängig			Shift+Tab
    
    
    Löschen bis Wortanfang			Ctrl+BackSpace
    Löschen bis Wortende			Ctrl+Delete
    Löschen bis Zeilenanfang		Ctrl+Shift+BackSpace
    Löschen bis Zeilenende			Ctrl+Shift+Delete
    
    
    Gehe zum Dokumentanfang			Ctrl+Home
    Auswahl bis Dokumentanfang		Ctrl+Shift+Home
    Gehe zum Zeilenanfang			Home
    Gehe zum Anfang der gezeigten Zeile 	Alt+Home  (wenn Zeilenumbruch aktiv, Pos. nach dem Umbruch)
    Gehe zum Dokumentende			Ctrl+End
    Auswahl bis Dokumentende		Ctrl+Shift+End
    Gehe zum Ende der gezeigten Zeile 	Alt+End  (wenn Zeilenumbruch aktiv, Pos. vor dem Umbruch)
    
    
    Lesezeichen Erstellen/Löschen		Ctrl+F2
    Gehe zum nächsten Lesezeichen		F2
    Auswahl bis zum nächsten Lesezeichen	Alt+F2
    
    
    Suche Auswahl				Ctrl+F3
    Suche Auswahl rückwärts			Ctrl+Shift+F3
    
    
    Scrollen aufwärts			Ctrl+Up
    Scrollen abwärts			Ctrl+Down
    
    
    Zeile ausschneiden			Ctrl+L
    Zeile kopieren				Ctrl+Shift+T
    Zeile löschen				Ctrl+Shift+L
    Zeile tauschen mit voriger		Ctrl+T
    
    
    Auswahl duplizieren			Ctrl+D
    
    
    Rechteckigen Block auswählen				Alt+Shift+Movement
    Rechteckige Blockauswahl erweitern bis Zeilenanfang	Alt+Shift+Home
    Rechteckige Blockauswahl erweitern bis Zeilenende	Alt+Shift+End
    Alles anzeigen

    Dateien

    HotKeys_SciTE.txt 1,54 kB – 1.993 Downloads
  • _GUICtrlRichEdit_Create ohne blinkender Cursor

    • BugFix
    • 17. April 2010 um 09:26
    Zitat von veronesi

    Doch beim Text des Labels muss ich auch einzelne Wörter Fett markieren können.


    Alternativ kannst du doch den Text in mehrere Label stückeln, dann ist auch die Formatierung kein Problem. Denn du benötigst doch kein Eingabefeld, sondern fertiger Text wird ausgegeben. Um da auch dynamischen Text anzeigen (und formatieren) zu können, kannst du zur Laufzeit die Abmessungen ermitteln und die Labels antsprechend anpassen (suche mal nach 'Textmeter').

  • Suchfunktion in einem großen Array - ich blicks nicht

    • BugFix
    • 16. April 2010 um 23:26

    Ich werd nicht ganz schlau, was du möchtest.
    - In den Exceldateien steht (vermutlich) ein Begriff (wo steht der), den du suchen willst.

    Dann ist es doch viel einfacher, die Excelsuche zu nutzen. Kannst du auch über AutoIt anschieben und auswerten.

    Bsp.:

    [autoit]

    ; Eintrag suchen
    Local $sFilePath = 'C:\test\si.xls'
    Local $sSuchbegriff = '15.02.2009'

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Local $oExcel = ObjCreate("Excel.Application")
    $oExcel.Visible = 0
    Local $oBook = $oExcel.Workbooks.Open($sFilePath)
    Local $oSheet = $oBook.Sheets(1)

    [/autoit][autoit][/autoit][autoit]

    Local $Zelle, $Address = 0
    $Zelle = $oSheet.UsedRange.Find($sSuchbegriff)
    If $Zelle <> '' Then $Address = $Zelle.Address ; Suchbegriff gefunden in Zelle.Adresse

    [/autoit]
  • DLL-Dateien erstellen (nicht mit AutoIt)?

    • BugFix
    • 16. April 2010 um 23:02

    Erstellen lassen sich mit AutoIt keine Dll. Aber du kannst jede beliebige Dll verwenden und mit eigenem Inhalt füllen. Dazu kannst du den Resourcehacker oder den XN Resource Editor verwenden.

  • Makro in Excel umwandeln zu autoit

    • BugFix
    • 16. April 2010 um 22:27

    Das sollte so gehen:
    (In deinem Fall natürlich eine bestehende Datei öffnen.)

    [autoit]

    Local $oExcel = ObjCreate("Excel.Application")
    $oExcel.Visible = 1
    $oExcel.SheetsInNewWorkbook = 1 ; Anzahl der gewünschten Sheets beim Erstellen festlegen
    Local $oBook = $oExcel.Workbooks.Add ; im Excel-Objekt ein Workbook-Objekt erstellen
    Local $oSheet = $oBook.Sheets(1)
    Local $i = 9 ; <== Startzeile

    [/autoit][autoit][/autoit][autoit]

    $Zeilenanzahl = $oExcel.Worksheets(1).UsedRange.Rows.Count
    While $i <= $Zeilenanzahl
    $oSheet.Rows($i).Interior.ColorIndex = 34
    $i += 2
    WEnd

    [/autoit]
  • Makro in Excel umwandeln zu autoit

    • BugFix
    • 16. April 2010 um 22:11

    Ahh, jetzt verstehe ich.
    Aber das kann schon rein logisch nicht klappen. Du gibst die Funktion an, die das Makro ausführen würde. Dazu wird intern VBA aufgerufen. Dieser Schritt fehlt, wenn du es per AutoIt machst.
    Also du willst folgendes:
    - Eingabe: Startzeile
    - Ermitteln: letzte belegte Zeile
    - in diesem Bereich jede zweite Zeile mit gewählter Hintergrundfarbe ausfüllen

    Das meinte ich übrigens mit Pseudocode ;) - nicht das Kommentieren des Codes.
    Wenn du das so möchtest, werde ich mal eine AutoItvariante dazu erstellen.

  • Makro in Excel umwandeln zu autoit

    • BugFix
    • 16. April 2010 um 21:30

    Schreib mal bitte in Pseudocode, was genau getan werden soll. Aus dem Makro werde ich nicht schlau.
    Also in der Form:
    - Tabelle öffnen
    - von Zeile X bis zur letzten belegten Zeile markieren
    etc. aber jedes Detail.

  • Makro in Excel umwandeln zu autoit

    • BugFix
    • 16. April 2010 um 20:25

    Du willst also in einer Exceltabelle dieses Makro ausführen aber in Form eines AutoIt-Skripts?

  • List Text Fett

    • BugFix
    • 16. April 2010 um 18:03

    Nimm besser ein Listview, da geht es (ListView - SubItem einzeln färben/formatieren, Finale Version!).

  • Konsolen-UDF

    • BugFix
    • 16. April 2010 um 17:44

    Es gibt (fast) nichts, was nicht schon gemacht wurde. :rofl:
    Guckst du: Eigene Console

  • Rechner verbessern , Prozessor & Co

    • BugFix
    • 15. April 2010 um 21:04

    Billig heißt, mit möglichst wenig Aufwand einen Effekt erreichen.
    Arbeitsspeicher aufpeppen (bis 4GB geht bei dem Board) und andere CPU (Athlon™ 64 X2 Dual Core verkraftet das Board). Das ist die preiswerteste Variante um aus der Kiste mehr rauszuholen.

  • Nur Zahlen in ein Input eingeben

    • BugFix
    • 15. April 2010 um 19:31

    Gib dem Input den Style: ES_NUMBER. ;)

  • StringReplace Zeilenumbruch erhalten

    • BugFix
    • 15. April 2010 um 17:05
    Zitat von MrB

    BugFix

    Hast sogar Recht.

    Naja, blindes Huhn findt auch mal 'n Korn. :rofl:

  • Fehlerhafte Werte von _GUICtrlTab_GetItemRect() und _GUICtrlTab_GetItemRectEx()

    • BugFix
    • 15. April 2010 um 15:25
    Zitat von nuts

    Nichts anderes macht deine Funktion!


    Natürlich, nur sind die Daten im Array, wenn du es beim Erstellen lädst, statisch. Mit der Funktion erfolgt die Berechnung im Moment des Zugriffs. ;)

    Aber du hast recht: Hauptsache funktioniert :D

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™