|
You last visited: Today at 14:58
Advertisement
Komma aus Ergebinis an Excel senden
Discussion on Komma aus Ergebinis an Excel senden within the AutoIt forum part of the Coders Den category.
09/06/2010, 12:33
|
#1
|
elite*gold: 0
Join Date: Feb 2010
Posts: 92
Received Thanks: 11
|
Komma aus Ergebinis an Excel senden
Hallo zusammen.
Habe folgende Situation:
Code:
$dist=sqrt(($CenterX-$AktX)*($CenterX-$AktX)+($CenterY-$AktY)*($CenterY-$AktY))
WinActivate("Microsoft Excel")
send(Round($dist, 2))
Das Problem ist jetzt das anstatt des Kommas, welches in Excel für die Nachkommastellen benötigt wird, der Sting mit Punkt als Seperator übergeben wird.
Das führt natürlich zu einem Datumsformat in Excel.
Wie mache ich es das mir in Excel eine richtige Zahl angezeigt wird?
THX
|
|
|
09/06/2010, 14:42
|
#2
|
elite*gold: 0
Join Date: Dec 2007
Posts: 322
Received Thanks: 98
|
Pack die Zahl doch in einen String und ersetze den Punkt mit nem Komma. Ich denke irgendeine StringReplace-Funktion wird es in AutoIt geben.
|
|
|
09/06/2010, 21:46
|
#3
|
elite*gold: 0
Join Date: Feb 2010
Posts: 92
Received Thanks: 11
|
Danke schonmal für die Antwort.
Was ich mit meinen bescheidenen AI Kenntnissen versucht habe ist folgendes:
Code:
send(StringReplace((Round($dist, 2)), ".", ","))
Kommt aber nur Mist bei raus.
|
|
|
09/07/2010, 23:05
|
#4
|
elite*gold: 0
Join Date: Dec 2007
Posts: 322
Received Thanks: 98
|
Quote:
Originally Posted by BotofWar
Code:
send(StringReplace((Round($dist, 2)), ".", ","))
Kommt aber nur Mist bei raus.
|
Das könnte daran liegen, dass Round() keinen String sondern eine Zahl mit Nachkommastellen zurückliefert. Vielleicht musst du diese Zahl erst in einen String umwandeln. Wie AutoIT das handelt kann ich jedoch nicht beantworten, da ich selber kein AutoIT nutze.
|
|
|
09/07/2010, 23:19
|
#5
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
autoit kann ohne etwas zu machen automatisch zwischen zahlen und strings hin und her springen...
aber ihr solltet euch mal die excel udf anschauen. _ExcelWriteCell($oExcel, $sValue, $sRangeOrRow [, $iColumn = 1]) sollte den job deutlich besser erledigen als send.
|
|
|
09/08/2010, 14:25
|
#6
|
elite*gold: 0
Join Date: Feb 2010
Posts: 92
Received Thanks: 11
|
lol.... natürlich...
manchmal sieht man den Wald vor lauter Bäumen nicht...
Aber dadurch hat sich mir ein anderes Problem aufgetan:
.
wie schaffe ich es das mir der Wert in die momentan aktive Zelle geschrieben wird?
Semi: _ExcelWriteCell($oExcel, $sValue, .activecell)
|
|
|
09/08/2010, 15:55
|
#7
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
es gibt absolut keinen logischen nutzen, autoit in die zu letzte markierte zelle schreiben zu lassen.
warum sollte man ein script schreiben wo der user die zellen erst noch auswählen muss?
|
|
|
09/09/2010, 12:21
|
#8
|
elite*gold: 0
Join Date: Feb 2010
Posts: 92
Received Thanks: 11
|
Deswegen:
Code:
WinActivate("Microsoft Excel")
WinWaitActive("Microsoft Excel")
send("^v")
sleep(50)
send("{RIGHT}")
sleep(50)
send($AktX)
sleep(50)
send("{RIGHT}")
sleep(50)
send($AktY)
;sleep(50)
;send("{RIGHT}")
;sleep(50)
;send(StringReplace((Round($dist, 2)), ".", ","))
;send(Round($dist, 2))
sleep(50)
send("{DOWN}")
sleep(50)
send("{HOME}")
sleep(50)
|
|
|
09/09/2010, 12:35
|
#9
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
und warum wuselst du dich da mit tastendrücken durch wenn du die zeilen auch direkt beschreiben kannst ohne eine taste zu senden?
Edit:
wenn du unbedingt ineffizient arbeiten willst, kannst du dir auch eine funktion schreiben die für dich die aktive zelle bestimmt:
Code:
Func GetActiveCell($oExcel)
Return $oExcel.ActiveCell.Address
EndFunc
|
|
|
09/09/2010, 13:27
|
#10
|
elite*gold: 0
Join Date: Feb 2010
Posts: 92
Received Thanks: 11
|
Ok, ich glaub jetzt hab ichs geschnallt...
Wenn du mir jetzt noch bei dem Rest auf die Sprünge helfen könntest wärst du mein absoluter Held ;-)
Code:
$Zeile=1
$Spalte=1
WinActivate("Microsoft Excel") ;geht das auch ohne?
WinWaitActive("Microsoft Excel")
send("^v") ; gibts ne Möglichkeit das anders zu lösen?
_ExcelWriteCell($oExcel, $AktX, $Zeile , $Spalte)
$Spalte=$Spalte+1
_ExcelWriteCell($oExcel, $AktY, $Zeile , $Spalte)
$Spalte=$Spalte+1
_ExcelWriteCell($oExcel, (Round($dist, 2)), $Zeile , $Spalte)
$Spalte=1
$Zeile=$Zeile+1
Edit: Habs selbst hinbekommen:
;WinActivate("Microsoft Excel") ;geht das auch ohne? Ja geht
;WinWaitActive("Microsoft Excel")
$cache = ClipGet ()
$oExcel.Cells($Zeile , $Spalte).Value=$cache
$Spalte=$Spalte+1
$oExcel.Cells($Zeile , $Spalte).Value=$AktX
$Spalte=$Spalte+1
$oExcel.Cells($Zeile , $Spalte).Value=$AktY
$Spalte=$Spalte+1
$oExcel.Cells($Zeile , $Spalte).Value=Round($dist, 2)
$Spalte=1
$Zeile=$Zeile+1
Hast mir aber sehr geholfen. Herzlichen THX
|
|
|
09/09/2010, 15:19
|
#11
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
mit clipget kannst du die daten aus der zwischenablage direkt abrufen und dann wieder per _ExcelWriteCell schreiben.
dann kannst du auch die ersten beiden WinActivate und WinWaitActive weglassen und das ganze im hintergrund oder sogar ganz versteckt ablaufen lassen.
und als kleiner tipp statt $Spalte=$Spalte+1 kann man auch $Spalte+=1 schreiben.
bzw wenn du sowieso immer die spalten 1-3 nutzt kannst du die auch direkt eintagen und ersparst deinem rechner damit das gerechne :P
|
|
|
09/09/2010, 17:25
|
#12
|
elite*gold: 0
Join Date: Apr 2008
Posts: 1,079
Received Thanks: 438
|
wieso machst du es nicht mit den excel internen makros?..
|
|
|
 |
Similar Threads
|
Komma im namen ???
05/09/2010 - WarRock - 2 Replies
Hey ich hab auf niderlande server gespielt und dan hab ich das gesehen : Imageshack - screenshot084t.jpg (der erste aus meinem team)
Weiß einer wie man das machen kann ??
|
AI & MS Excel
03/02/2010 - AutoIt - 0 Replies
Nabend zusammen,
hat sich evtl schonmal wer mit "_ExcelReadCell" beschäftigt?
hab das jetzt grade zum ersten mal in Benutzung und stehe grade vor dem Prob dass Excel startet sobald der befehl ausgeführt wird.
Eigentlich geht es ja z.b. bei "fileread" dass die Datei nicht geöffnet werden muss damit die Daten gelesen werden können.
Geht das iwi auch mit Excelfiles ohne diese zu öffnen?
THX schonmal
|
need help with vac editing using excel
10/26/2009 - Dekaron - 0 Replies
1. Open: 2Moons\data\share\ai\info.csv
2. On box B2 (DwExploreRange...........for 101=SpiderLarva) change the 4 to 1000
3. On box C2 (DwSight........................for 101=SpiderLarva) change the 13 to 1000
4. On box D2 (DwPersuitRange...........for 101=SpiderLarva) change the 13 to 1000
5. On box F2 (DwExploreStandDelay...for 101=SpiderLarva) change the 2000 to 0
6. On box I2 (DwMoveDelay................for 101=SpiderLarva) change the 1000 to 1
7. On box Q2...
|
CSV with excel question
10/23/2009 - Dekaron - 1 Replies
im trying to do the no agro for crespo a,b,c read the tut that has been posted in hacks section, Can someone list the monsters for B,C. The tut says to use the search for the id of the monsters, but i dont know how using excel. Any help would be great. Or the list of monsters ;)
|
Excel und ein problem
06/28/2009 - General Coding - 11 Replies
Hey Leute!
Mein Vater hat mich gestern vor eine Problemstellung gestellt, die ich lösen soll, doch ich weiß nicht wie ich es anfangen soll.
Also, hier einmal eine Schilderung des Problems.
Gegeben habe ich eine Excelliste mit, beispielsweise, Städten und deren Einwohnerzahl. Soweit ist alles in Ordnung ^^.
So. Hier beginnt das Problem. Ich soll nun eine (evtl zoombare) Karte mit diesen Daten verknüpfen, sodass auf der Karte, wenn man mit der Maus über den Namen der Stadt fährt, ein...
|
All times are GMT +1. The time now is 15:02.
|
|