Excel bug workaround: Cannot shift objects off sheet [restored post]

Ma jött szembe ugyanez a hiba, ezért túrtam ki a Google Reader cache-ből a rég dokumentált workaroundot: A Microsoft által dokumentált bugba futottam bele ma reggel: az Exceled az outline-os táblák csikicsukizása (=show or hide) közben hajlamos aljas módon elpakolászni a commentet tartalmazó cellák comment boxait a helyükről. Ez odáig fajulhat, hogy a tábla fizikai sor/oszlopszélességén túlra pakolja őket és ekkor jön a baj: nem korrigálja, amit elbarmolt, hanem helyette rád mordul egy kétértelmű hibaüzenettel a következő sor/oszlop csikicsukinál. Ezt a problémát oldja fel az alábbi kis függvény, ami minden commentboxodat a forrás cella jobb felső sarka fölé pozícionál 10-10 pixellel. Használd egészséggel:

Sub resetCommentPositions()
    Dim S As Worksheet, C As Comment
    For Each S In ThisWorkbook.Worksheets
        For Each C In S.Comments
            C.Shape.Left = C.Parent.Offset(0, 1).Left + 10
            C.Shape.Top = C.Parent.Offset(0, 1).Top - 10
        Next C
    Next S
End Sub
]]>

Az OS X esete a tagekkel

divjein – ez a post igyekszik inkább a felhasználóbarát, kevésbé nerd oldalról hozzátenni egy keveset, amikor azt mondja: itt az ultimate tagging megoldás a Gravity Applications Tags nevű software-e személyében: A Tags az openmeta standardot használja, s a tageket szabványos “extended attribute”-ként (=xattr) tárolja. Az openmeta project wiki oldalán számos software közül választhat az OS X user, ha épp a Spotlight motoron túl saját metaadatot gyártani támadna épp kedve – az én választásom több próbálkozás után a Tags-re esett (az igazat megvallva jó rég láttam először, de mostanában angelday hívta fel rá a figyelmem). A Tags UI korrekt, kedvelem. A keresője egy okosított Spotlight: a találatokon SPACE-t nyomva ugrik azonnal elő a QuickLook ablak (igen hasznos featúra), a találatok között szereplő folderekben mászkálhatok még a kereső ablakon belül, a találatok szabadon draggelhetőek. A sebessége is teljesen jó (nota bene: a gyári Spotlight kereső ugyanúgy használható egy tag keresésére a tag:amitkeresel szintaxissal). A legvégére maradt a legfontosabb kérdés: “de minek taggelsz kézzel, eFi?” A választ javarészt a képként pdf-be scannelt hivatalos papírok adják meg. Jó két éve vásároltam egy Fujitsu ScanSnap S500M nevű dokumentumscannert – azóta minden egyes beérkező hivatalos levél átmegy a scanneren, aki egyszerre olvassa a papír 2 oldalát, majd a képként behúzott dokumentumot beágyazza egy pdf-be és időbélyegző-szerű névvel ellátva elteszi egy folderbe. Ezek a file-ok aztán megkapják a tagjeiket és onnantól bármikor egy mozdulattal előránthatóak. De ugyanígy taggelhetem a Safariban/Firefoxban olvasott oldalt, vagy akár a Mailplane-ben olvasott levelet is – a támogatott alkalmazások listája erre. A Tags jelenleg a 2.0.2-es verziónál tart. Az aktuális változatban találtam egy fura hibát: ha egy másik, szintén openmetát használó tagging app már felvett egy ő vagy ű karaktert tartalmazó taget, akkor azt a Tags nem hajlandó felismerni és alkalmazni sem egyetlen dokumentumon sem. A bugreport ment a fejlesztőknek, egy napra rá jött a köszönőlevél, melyben írják, hogy dolgoznak rajta és értesítenek, amint kész a fix. Egy szó, mint száz, eddig tetszik. Update: fds Mester elmondja a historyt (ezúton köszönjük az infot):

xattr támogatás 10.4 óta van, resource forkok meg classic mac óta, meg a Finder comment mező HFS-ben.
Érdekességképpen Mefi postja 2 évvel ezelőttről: Címkézett vincseszter ]]>

Búvárcsülök

A mellékelt ábrán látható példány cirka 25 órán át sült, de ettől persze sokkal kevesebb idő alatt előállítható a dolog (a 25 órát a nedves fa és a nem eléggé felfűtött kemence tette szükségessé). Ez az adag így készült: A hentes csontfűrésszel jó kétujjnyi szeletekre vágta a csontos csülköket. A szeletekhez csináltam egy szószt: só, bors, rozmaring, olívaolaj, sör, fokhagyma került a turmixgépbe. A folyós turmixba bemártogattam a szeleteket és ráfektettem az előzőleg a tepsibe rámolt zöldségágyra, mely ezúttal petrezselyemből, sárgarépából, héjas krumpliból, paprikából és hagymából állt. A zöldségek is kaptak egy kevés sót, az egész miskulancia még sok-sok rozmaringot, majd öntöttem alá pár doboz sört és ment be a kemencébe.]]>

Dormi

ISO 800 / f1.4-gyel sem könnyű megfogni a kis dögöt egyelőre – talán majd ha alszik. Stay tuned.]]>

Vacsora

Hanem a saláta: újhagyma, koktélparadicsom, mozzarella, bazsalikom, tépősaláta, zsenge spenót, rucola, zöldpaprika. No és az öntet, Tibi barátom agymenése: olívaolaj, méz, só, bors, fokhagyma, kapor, joghurt. A három együtt kihagyhatatlan – ha nem volt még meg ez a kombináció, feltétlen tégy egy próbát, megéri!]]>

Meteo script update

itt, magyar billentyűzethez itt, a forrás meg alant (a script a ~/Pictures könyváradban létre fog hozni egy delme-meteo nevű foldert, amibe a leszippantott képeket menti. Ezt a foldert törli és létrehozza minden alkalommal újra és újra.):

(*
	Meteo
	by Gabor PENOFF (//fns.pappito.com)
	release 20100516-1002
	Requirements:
	- before run you need to Enable Access for Assistive Devices in SysPrefs/Universal Access
	- install Growl from http://growl.info to get non-modal notification dialogs
	Usage:
	- just run the script
	That's all.
*)
set myScriptID to "Meteo" -- ID for Growl display
-- set date variables:
set myYear to get text 1 thru 4 of (year of (current date) as string)
set myMonth to month of (current date) as number
if myMonth < 10 then set myMonth to "0" & myMonth as string
set myDay to day of (current date)
if myDay < 10 then set myDay to "0" & myDay as string
set myHour to hours of (current date)
if myHour < 10 then set myHour to "0" & myHour as string
set myMinute to "00"
set tmpDir to "delme-meteo"
set myFilePrefix to "delme-met-"
set tIdokepStart to "http://www.idokep.hu/arch_kep.php?kep="
set myURLs to {¬
	"http://img.koponyeg.hu/img/15napos/" & myYear & "/" & myMonth & "/1_" & myYear & "-" & myMonth & "-" & myDay & "grafikon.png|png", ¬
	"http://terkep.idokep.hu/kep.php?kep=mix|jpg", ¬
	"http://terkep.idokep.hu/kep.php?kep=hoterkep2&regio=hu1680|jpg", ¬
	"http://terkep.idokep.hu/kep.php?kep=felhokep2&regio=hu1680|jpg", ¬
	"http://terkep.idokep.hu/kep.php?kep=szelterkep2_anim|gif", ¬
	"http://terkep.idokep.hu/kep.php?kep=szelterkep2&regio=hu1680|jpg", ¬
	"http://terkep.idokep.hu/kep.php?kep=legnyomasterkep|jpg", ¬
	"http://feny.idokep.hu/kep.php?kep=csap24|jpg", ¬
	"http://feny.idokep.hu/kep.php?kep=csap1|jpg", ¬
	"http://feny.idokep.hu/kep.php?kep=aqua|jpg", ¬
	"http://terkep.idokep.hu/kep.php?kep=rh|jpg", ¬
	"http://terkep.idokep.hu/kep.php?kep=uv|jpg", ¬
	"http://terkep.idokep.hu/kep.php?kep=pollen0|jpg"}
set rootDir to (path to home folder as string) & "Pictures"
tell application "Finder" to set fullDir to rootDir & ":" & tmpDir -- save fullDir
set myNotification to "Downloading METEO images to " & fullDir & "..."
tell me to notifyWithGrowl(myScriptID, myNotification)
try
	tell application "Finder" to delete fullDir
end try
tell application "Finder" to make new folder at alias rootDir with properties {name:tmpDir}
-- download files:
tell application "URL Access Scripting"
	set i to 1
	repeat with myURL in myURLs
		set thisURL to (text 1 thru ((offset of "|" in myURL) - 1) of myURL)
		set thisExt to (text ((offset of "|" in myURL) + 1) thru (length of myURL) of myURL)
		set the myFile to fullDir & ":" & myFilePrefix & i & "." & thisExt
		download thisURL to file myFile replacing yes
		set i to i + 1
	end repeat
end tell
-- display images using full-featured QuickLook window:
tell application "Finder"
	activate
	open folder fullDir
	set current view of front Finder window to list view
end tell
tell application "System Events"
	key code 0 using {command down} -- cmd+a
	key code 6 using {command down, option down} -- cmd+opt+y; y is 16 for US, 6 for Hungarians :)
end tell
-- that would be the callback after QuickLook:
--tell application "Finder"
--	activate
--	set current view of front Finder window to v
--	close front Finder window
--end tell
-- display images using a very limited (dumb) QuickLook window:
--do shell script "qlmanage -p  " & (POSIX path of fullDir) & "/* >& /dev/null"
-- GrowlCheck:
on growlInstalled()
	try
		do shell script "ls /Library/PreferencePanes/Growl.prefPane/"
		return true
	on error
		return false
	end try
end growlInstalled
-- Growl notifier:
on notifyWithGrowl(myApp, myText)
	set myIconApp to "Preview"
	set notificationID to myApp & ".default"
	if growlInstalled() then
		tell application "GrowlHelperApp"
			-- list of notification types
			set the ANL to {notificationID}
			-- list of enabled notifications
			set the DNL to {notificationID}
			-- register script
			register as application myApp all notifications ANL default notifications DNL icon of application myIconApp
			-- send notification
			notify with name notificationID title myApp description myText application name myApp
		end tell
	else
		-- skip alert if no Growl installed
		--display alert "Growl is not installed"
	end if
end notifyWithGrowl
]]>