danke bugfix. hatte es mir gestern schonmal kurz angeguckt und war mir dann zuviel (zumindest um die uhrzeit *g*)
aber ich werds probieren, wenn ich jetzt weiss, dass es so geht =)
danke bugfix. hatte es mir gestern schonmal kurz angeguckt und war mir dann zuviel (zumindest um die uhrzeit *g*)
aber ich werds probieren, wenn ich jetzt weiss, dass es so geht =)
hi,
ich bin jetzt auch wieder auf ein problemchen gestoßen, und zwar habe ich 2 combo-boxen (drop-down) erstellt, wobei 2te box auf den inhalt der 1sten box reagieren soll.
leider bekomme ich es nur so hin, dass er nur beim start des programmes darauf rücksicht nimmt, nicht aber wenn danach was geändert wird.
;2nd Tab
GUICtrlCreateTab(-1, -1, 270, 165)
GUICtrlCreateTabItem("CD-Settings")
;CDType
GUICtrlCreateLabel("Choose CD Type", 10, 30)
$Combo = GUICtrlCreateCombo("Data-CD", 10, 50) ;<< hier soll das auswahlkriterium gezogen werden
GUICtrlSetData(-1, "SVCD|VCD|Image")
;3rd Tab
GUICtrlCreateTab(-1, -1, 270, 165)
GUICtrlCreateTabItem("Filesettings")
;BurnDir
GUICtrlCreateLabel("Choose Burning-Dir", 10, 30)
$CreateInput = GUICtrlCreateInput("C:", 10, 50, 180)
GUICtrlSetState(-1, $GUI_ACCEPTFILES)
$browse = GUICtrlCreateButton("&Browse", 195, 48, 70)
$input = GUICtrlRead(16)
;FileType
GUICtrlCreateLabel("Choose Extension", 10, 90)
$CreateCombo = GUICtrlCreateCombo("", 10, 110)
$SetData = GUICtrlRead($Combo) ;<< hier soll die auswahl beschränkt werden
if $SetData = "Data-CD" then
GUICtrlSetData($CreateCombo, "*.avi|*.divx|*.divx|*.*", "*.avi")
elseif $SetData = "SVCD" or "VCD" then
GUICtrlSetData($CreateCombo, "*.mpg", "*.mpg")
ElseIf $SetData = "Image" then
GUICtrlSetData($CreateCombo, "*.nrg|*.iso|*.bin|*.cue", "*.iso")
EndIf
ps: ich würde auch gerne einen fortschrittsbalken einbauen, kann man das so schreiben, dass er den fortlaufenden brennvorgang anzeigt?
hey, ich bins nochmal.
nachdem ich jetzt _ExcelSheetMove($oExcel, $vMoveSheet, $vRelativeSheet= 1, $fBefore = True) verstanden habe, weiss ich, dass es mir nicht bei meinem prob weiterhelfen wird, da es nur für 1 datei gilt.
man müsste also irgendwie die funktion umschreiben ... was aber (für mich) nicht so leicht sein würde.
leider habe ich sonst keine passendes UDF gefunden. (ausser vllt. a la c&p, wobei ich das irgendwie nicht so gut finde).
das wäre die funktion, meint ihr das ist möglich für 2 exceldateien anzupassen, so dass man 1 sheet aus der einen datei in die andere verschieben/kopieren kann?
;
; Description: Move the specified sheet before another specified sheet.
; Syntax: _ExcelSheetMove($oExcel, $vMoveSheet, $vBeforeSheet)
; Parameter(s): $oExcel - An Excel object opened by a preceding call to _ExcelBookOpen() or _ExcelBookNew()
; $vMoveSheet - The name or number of the sheet to move (a string or integer)
; $vRelativeSheet - The moved sheet will be placed before or after this sheet (a string or integer, defaults to first sheet)
; $fBefore - The moved sheet will be placed before the relative sheet if true, after it if false (True or False) (default=True)
; Requirement(s): None
; Return Value(s): On Success - Returns 1
; On Failure - Returns 0 and sets @error on errors:
; @error=1 - Specified object does not exist
; @error=2 - Specified sheet number to move does not exist
; @error=3 - Specified sheet name to move does not exist
; @error=4 - Specified relative sheet number does not exist
; @error=5 - Specified relative sheet name does not exist
; Author(s): SEO <locodarwin at yahoo dot com>
; Note(s): None
;
;===============================================================================
Func _ExcelSheetMove($oExcel, $vMoveSheet, $vRelativeSheet = 1, $fBefore = True)
Local $aSheetList, $iFoundMove = 0, $iFoundBefore = 0
If NOT IsObj($oExcel) Then Return SetError(1, 0, 0)
If IsNumber($vMoveSheet) Then
If $oExcel.ActiveWorkbook.Sheets.Count < $vMoveSheet Then Return SetError(2, 0, 0)
Else
$aSheetList = _ExcelSheetList($oExcel)
For $xx = 1 To $aSheetList[0]
If $aSheetList[$xx] = $vMoveSheet Then $iFoundMove = $xx
Next
If NOT $iFoundMove Then Return SetError(3, 0, 0)
EndIf
If IsNumber($vRelativeSheet) Then
If $oExcel.ActiveWorkbook.Sheets.Count < $vRelativeSheet Then Return SetError(4, 0, 0)
Else
$aSheetList = _ExcelSheetList($oExcel)
For $xx = 1 To $aSheetList[0]
If $aSheetList[$xx] = $vRelativeSheet Then $iFoundBefore = $xx
Next
If NOT $iFoundBefore Then Return SetError(5, 0, 0)
EndIf
If $fBefore Then
$oExcel.Sheets($vMoveSheet).Move($oExcel.Sheets($vRelativeSheet))
Else
$oExcel.Sheets($vMoveSheet).Move(Default, $oExcel.Sheets($vRelativeSheet))
EndIf
Return 1
EndFunc ;==>_ExcelSheetMove
hehe,
hab nen ersatz tv abgestaubt, aber leider kleiner und ohne ich kann den nicht über den pc ansteuern, von daher.
aber ich hab mir jetzt gedacht, dass ich den doch weghaue, vllt bei ebay rein *lol*
der vater von meiner freundin hat sich nen plasma geholt und hat jetzt halt 1 über, den werd ich dann bekommen und mir die reperatur sparen.
evtl will den ja wer ausm bekanntenkreis ... mal schauen.
bin leidenschaftlicher film-gucker, von daher brauch ich schon nen tv, aber meist läuft er nur nebenbei, wenn ich hier im forum lesen ![]()
nochmal danke für deine hilfe alina.
werd das auf jeden fall am we auch testen =)
hab mich aber auch mal nach excel UDF umgeschaut.
gefunden habe ich dabei das
_ExcelSheetMove($oExcel, $vMoveSheet, $vRelativeSheet= 1, $fBefore = True)
hat da jmd erfahrung mit?
also excel öffnen und speichern/schließen kann ich jetzt *g*
aber sheetmove will irgendwie nicht =(
PS2: habs jetzt so, aber es klappt nicht =(
#include <ExcelCOM_UDF.au3>
[/autoit] [autoit][/autoit] [autoit]$oExcel = _ExcelBookNew(1)
$1 = _ExcelBookOpen("C:\Produkte.xls",0)
$1sheet = _ExcelSheetNameGet($1)
_ExcelSheetMove($oExcel, $1sheet)
_ExcelBookClose($1)
$2 = _ExcelBookOpen("C:\Kam Kunden.xls",0)
$2sheet = _ExcelSheetNameGet($2)
_ExcelSheetMove($oExcel, $2sheet)
_ExcelBookClose($2)
$3 = _ExcelBookOpen("C:\Gebiete.xls",0)
$3sheet = _ExcelSheetNameGet($3)
_ExcelSheetMove($oExcel, $3sheet)
_ExcelBookClose($3)
$4 = _ExcelBookOpen("C:\Top Kunden.xls",0)
$4sheet = _ExcelSheetNameGet($4)
_ExcelSheetMove($oExcel, $4sheet)
_ExcelBookClose($4)
$5 = _ExcelBookOpen("C:\Marken.xls",0)
$5sheet = _ExcelSheetNameGet($5)
_ExcelSheetMove($oExcel, $5sheet)
_ExcelBookClose($5)
_ExcelBookSaveAs($oExcel, "C:\blaaaa.xls")
_ExcelBookClose($oExcel)
danke peethebee,
das hat mir schon weitergeholfen.
auf die schnelle viel mir nix besseres ein, aber in endeffekt isses ja auch egal, was es macht, bis er geschlossen wird *g*
sollte halt nur den prozessor nicht belasten
#NoTrayIcon
#include <GUIConstants.au3>
Opt("OnExitFunc", "exitfunc")
Do
WinWaitActive("Windows herunterfahren")
until ProcessExists("shutdown.exe")
Func exitfunc()
MsgBox(0, "Nicht vergessen", "Fenster zu..." & @CRLF & "Wasserkocher aus..." & @CRLF & "Klimaanlage aus..." & @CRLF & "Drucker aus..." & @CRLF & "... und das ich dich liebe")
EndFunc
hey,
da ich jetzt soviel mit autoit mache, hat mir meine freundin auch direkt mal was aufs auge gedrückt.
und zwar hätte sie gerne, bevor der pc runterfährt, eine msgbox mit erinnerungen.
am besten fährt der pc natürlich dann erst runter, wenn die box bestätigt wird.
hört sich einfach an, aber ich denke, das ende ist es nicht, oder?
theoretisch müsste die datei im autostart liegen und darauf warten bis der pc runtergefahren wird, und auch nur dann (also nicht beim abmelden).
damit würde mein erster gedanke (processexist("shutdown.exe") flachfallen.
hatte jetzt die idee, vllt die shutdown.exe zu ersetzten, aber da kommen mir auch bissel zweifel *g*
meint ihr, dass ist irgendwie möglich?
danke, werde ich machen und morgen mal probieren.
@th.meger, ich brauche es täglich, bzw es soll in den ganzen automatisierten prozess, und dann natürlich auch automatisch =)
ich hätte ein Add-in für excel, was dies auch macht, aber dieses geht zZ nicht, wg activex probs, und wenn das script jmd an nem anderen rechner nutzt, würde es mit diesem makro auch zu problemen kommen, daher wäre mir ne UDF schon ganz lieb.
was es nicht alles gibt, bin ja mal gespannt =)
hey alina, sorry für den verbrannten rohling.
hätte ich vllt deutlicher machen sollen. das tool brennt auch immer nur 1 file auf eine cd. ich selber nutze es zb dafür, dass ich nacheinander avis mit 700mb auf eine cd brenne.
zumindest tut es das noch, gucken was ich in die nächste version so mit reinpacken kann.
hätte du noch einen neuen rohling reingeschmissen, hätte es die nächste datei gebrannt, also insgesamt 67 dateien auf 67 verschiedene rohlinge =)
also wenn du das hast, sag bescheid, mit bauanleitung, dann kommt es noch rein =)
ihr habt es nicht anders gewollt =)
ich müsste Tagesumsätze Produkte laden und später damit weiterarbeiten, danach die nächsten TU öffnen
die dateien sind schon super formatiert, jede datei enthält auch nur 1 arbeitsblatt. am ende brauche ich 1 neue datei, die 5 arbeitsblätter hat ... also aus jeder datei das eine arbeitsblatt.
die arbeitsblätter an sich sind aber in jeder datei verschieden.
das wärs eigentlich schon.
hey,
ich setzt das thema mal ins offtopic, da ich nicht weiss, in wie weit das mit autoit möglich ist, aber mir würden auch andere vorschläge weiterhelfen.
also ich habe 5 dateien, die ich zu einer zusammenfügen möchte, am besten so, dass man es anschließend automatisieren könnte?
hat jmd von sowas schonmal gehört?
bei mpg files, die kann man zb über die cmd mergen, das wäre easy =)
ja, vllt wäre es irgendwie möglich, aber dafür bin ich noch zu grün hinter den ohren.
leider ist die seite nur im intranet verfügbar und enthalt halt firmenangaben. von daher weiß ich nicht wieviel ich da zeigen soll/muss/darf.
mitm großzügigen timer gehts aber auch denke ich =)
vllt hab ich auch im code was falsch, und denke nur dass er die seite nicht zuende lädt.
wenn du mir helfen magst, poste ich es gerne nochmal.
mal gucken ob ichs aufs wesentliche reduzieren kann *hehe*
#include <IE.au3>
$sUrl = "Link1"
$LinkProdukte = "Link2"
;starte ie-instanz
$oIE = _IECreate ($sUrl,0,1,1,0)
$oHWND = _IEPropertyGet($oIE, "hwnd")
WinSetState ($oHWND, "", @SW_MAXIMIZE )
;...
;loginseite wird geladen (bis sie komplett fertig ist)
;anschließend wird User/Pw eingegeben und abgeschickt
;es läd sich eine neue seite (bis zuende)
;dann kommt
;lade neue seite
_IENavigate($oIE, $LinkProdukte)
;_IELoadWait($oIE) hat auch nix gebracht, aber die funktion ist auch in _IENavigate enthalten, so dass ich sie eigentlich rausgelassen habe
[/autoit] [autoit][/autoit] [autoit];...
;hier soll auf was geklickt werden, dass aber erst da ist, wenn die seite komplett geladen wurde
;befehl wird aber sofort ausgeführt
wie die seite aufgebaut ist, sieht man hier, falls es doch was damit zu tun haben könnte.
oder liegt es daran, dass sich nach der loginseite eine neue seite aufbaut die nichtmehr $oIE ist? wobei er ja da noch wartet, bis sie fertig geladen ist.
danke th.meger, das "geht" =)
leider nicht ganz wie erwarte. zum einem bleibt der tooptip auf dem bildschirm (was nicht so schlimm wäre), zum anderen bricht er zwar den countdown ab, setzt das script aber nicht weiter fort.
das prob ist, ich muss eine inet-site laden, mit den iefunctions wartet er aber nicht, bis fertig geladen wurde, da nur ein teil der site aktualisiert wird.
also nutze ich sleep und nehm nen großzügigen wert.
sollte die site nun schon nach 5 statt 20 sek fertig sein, soll man den timer mit einem tastendruck abbrechen können und das script läuft danach wie gewohnt weiter.
das hier leider (noch) nicht der fall =/
PS: ich glaube es hat sich erledigt =)
so geht es
#include<Date.au3>
#include <Misc.au3>
$dll = DllOpen("user32.dll")
$Countdown = "00:00:10"
If _countDown($Countdown) Then ToolTip("")
MouseClick("left", 1240, 188)
;Countdown Function
Func _countDown($Countdown)
$begin = TimerInit()
Local $string = ""
While 1
$start = Round(TimerDiff($begin) / 1000)
$countUp = StringFormat("%.02d" & ":" & "%.02d" & ":" & "%.02d", _
Mod($start / 3600, 24), Mod(($start / 60), 60), Mod($start, 60))
$sec = _DateDiff('s', "2006/01/01 " & $countUp, "2006/01/01 " & $Countdown)
If $sec = 0 Then Return 1
$string = StringFormat("%.02d" & ":" & "%.02d" & ":" & "%.02d", _
Mod($sec / 3600, 24), Mod(($sec / 60), 60), Mod($sec, 60))
ToolTip($string)
Sleep(1 )
If _IsPressed("1b", $dll) Then
ExitLoop
EndIf
WEnd
EndFunc ;==>_countDown
DllClose($dll)
hiho,
da ich die letzten tage frei hatte, konnte ich hier leider nicht weiterarbeiten.
aber mein script nähert sich dem ende (freut euch *g*) und ich versuche jetzt diesen timer zu beenden.
also per hotkeyset erstelle ich eine neue funktion.
dann habe ich den countdown in einer funktion.
wenn jetzt der "hotbutton" gedrückt wird, soll die countdown funktion beendet werden.
und da liegt zZ mein prob. wie beende ich mit einer function eine andere function?
also exit klappt super, aber da geht halt das ganze script aus. exitloop geht nur bei der eigenen function, 2 funktionen ineinander scheinen auch nicht zu gehen (fehlt immer wend) ....
HotKeySet("{space}", "_close")
$Countdown = "00:00:20"
If _countDown($Countdown) Then MouseClick("left", 1157, 191)
;Countdown Function
[/autoit] [autoit][/autoit] [autoit]Func _countDown($countdown)
$begin = TimerInit()
Local $string = ""
While 1
$start = Round(TimerDiff($begin) / 1000)
$countUp = StringFormat("%.02d" & ":" & "%.02d" & ":" & "%.02d", _
Mod($start / 3600, 24), Mod(($start / 60), 60), Mod($start, 60))
$sec = _DateDiff('s', "2006/01/01 " & $countUp, "2006/01/01 " & $countdown)
If $sec = 0 Then Return 1
$string = StringFormat("%.02d" & ":" & "%.02d" & ":" & "%.02d", _
Mod($sec / 3600, 24), Mod(($sec / 60), 60), Mod($sec, 60))
ToolTip($string)
Sleep(100)
WEnd
EndFunc
func _close()
ExitLoop ;geht natürlich nicht
EndFunc
aaaaaah, ok, mein fehler *g*
also ehrlich gesagt funzt das nicht @th.meger
ich bekomme zwar keine fehlermeldung mehr (hatte ein & zuviel), aber in ner neuen zeile schreibt er trotzdem net.
aber huggys tip geht, werd ich einfach so machen, thx euch beiden =)
wo wir schon bei vba und autoit sind, wie kann ich denn in eine neue zeile schreiben?
ich hab zwar schon als hilfe das ein oder andere script gesehen, dass dann (wie bei vba) mit & _ & aufgebaut war, aber scite wollte es nie ausführen, so dass ich es immer weggemacht habe.
aber jetzt kommt ich das in nem gui gebrauchen.