Kopiert die Summe der ausgewählten Excel-Zellen in die Zwischenablage
Das Skript von https://www.autohotkey.com/boards/viewtopic.php?p=340285#p340285
hat mich dazu inspiriert, daraus einen kompletten Helfer für Excel-Arbeiter zu machen.
Das Skript kopiert die Summe eines in Excel ausgewählten Bereichs in die Zwischenablage.
Im Tray-Menü können Sie wählen, ob Sie nur die sichtbaren Zellen oder auch die ausgeblendeten Zellen hinzufügen möchten.
Dort können Sie auch die Rundung des Ergebnisses wählen.
Wenn das Programm unter NTFS ausgeführt wird, merkt es sich die Einstellungen.
Es verwendet STRG+SHIFT+N, um die Summe zu erhalten.
arbeitet mit [v1.1.31+]
Code: Select all
DriveGet, fs, FileSystem, % SubStr(A_ScriptDir,1,3)
if (fs !="NTFS")
msgbox, Programmeinstellungen können nur unter NTFS gespeichert werden! Das aktuelle Dateisystem ist %fs%
global rf, v
ADSload("sfdata","rf","v")
if (rf="")
rf:=0
if (v="")
v:=0
Hilfe =
(
Kopiert die Summe der ausgewählten
Excelzellen in die Zwischenablage
Sie können alle ausgewählten sichtbaren Zellen summieren
oder auch versteckte Zellen.
Zellen mit Text werden ignoriert.
Die Auswahl kann ein Array (Block, Tabelle, Range) sein.
)
Tiptext =
(
STRG+SHIFT+N: Summe der Excelzellen
)
menutitle1:="Ausgewählte Excel-Zellen summieren "
menutitle2:="und in die Zwischenablage kopieren"
Menu, tray,add, info1
Menu, tray,Disable, info1
Menu, tray,Rename, info1 , %menutitle1%
Menu, tray,add, info2
Menu, tray,Disable, info2
Menu, tray,Rename, info2 , %menutitle2%
Menu, tray, add
Menu, tray, add, Hilfe
Menu, tray, add
Menu, tray, add,nur_sichtbare_Zellen
Menu, tray, add,sichtbare_und_ausgeblendete_Zellen
Menu, tray, add
Menu, tray, add,Keine_Dezimalstelle
Menu, tray, add,Eine_Dezimalstelle
Menu, tray, add,Zwei_Dezimalstellen
Menu, tray, add,Drei_Dezimalstellen
Menu, tray, add, Pause
Menu, tray, Default, Pause
Menu, tray, add, Beenden
Menu, tray, NoStandard
Menu, Tray, Tip, %Tiptext%
xlCellTypeVisible := 12
test:=0
if !v
gosub, nur_sichtbare_Zellen
else
gosub, sichtbare_und_ausgeblendete_Zellen
switch rf
{
case 0: Menu, tray, Check, Keine_Dezimalstelle
case 1: Menu, tray, Check, Eine_Dezimalstelle
case 2: Menu, tray, Check, Zwei_Dezimalstellen
case 3: Menu, tray, Check, Drei_Dezimalstellen
}
SetTimer, testExcel, 2000 ;
return
RemoveToolTip:
ToolTip
return
testExcel:
if !IsObject(xl)
try
xl := ComObjActive("Excel.Application")
return
info1:
info2:
return
Trennzeichen:
return
Hilfe:
Msgbox, %Hilfe%
return
Beenden:
exitapp
test:
return
nur_sichtbare_Zellen:
Gui, Submit, NoHide
Menu, tray, Check,nur_sichtbare_Zellen
Menu, tray, UnCheck,sichtbare_und_ausgeblendete_Zellen
Hotkey, ^+n, visible
v:=0
ADSsave("sfdata","v")
return
sichtbare_und_ausgeblendete_Zellen:
Gui, Submit, NoHide
Menu, tray, UnCheck,nur_sichtbare_Zellen
Menu, tray, Check,sichtbare_und_ausgeblendete_Zellen
Hotkey, ^+n, visibleandhidden
v:=1
ADSsave("sfdata","v")
return
visible:
tooltip, % "Summe (sichtbare Zellen):`n" clipboard :=round( xl.WorksheetFunction.sum(xl.selection.SpecialCells(xlCellTypeVisible)),rf) ;shows the sum as Tooltip, and added it to the clipboard
;send, {esc} ; If I use STRG i alway see the analytic menu from Excel without send, {esc}
SetTimer, RemoveToolTip, -2000 ; remove Tooltip after 2 sec
return
visibleandhidden:
tooltip, % "Summe (sichtbare und ausgeblendete Zellen):`n" clipboard := round(xl.WorksheetFunction.sum(xl.selection),rf) ;shows the sum as Tooltip, and added it to the clipboard
;send, {esc} ; If I use STRG i alway see the analytic menu from Excel without send, {esc}
SetTimer, RemoveToolTip, -2000 ; remove Tooltip after 2 sec
return
Keine_Dezimalstelle:
Gui, Submit, NoHide
Menu, tray, Check,Keine_Dezimalstelle
Menu, tray, UnCheck,Eine_Dezimalstelle
Menu, tray, UnCheck,Zwei_Dezimalstellen
Menu, tray, UnCheck,Drei_Dezimalstellen
rf:=0
ADSsave("sfdata","rf")
return
Eine_Dezimalstelle:
Gui, Submit, NoHide
Menu, tray, UnCheck,Keine_Dezimalstelle
Menu, tray, Check,Eine_Dezimalstelle
Menu, tray, UnCheck,Zwei_Dezimalstellen
Menu, tray, UnCheck,Drei_Dezimalstellen
rf:=1
ADSsave("sfdata","rf")
return
Zwei_Dezimalstellen:
Gui, Submit, NoHide
Menu, tray, UnCheck,Keine_Dezimalstelle
Menu, tray, UnCheck,Eine_Dezimalstelle
Menu, tray, Check,Zwei_Dezimalstellen
Menu, tray, UnCheck,Drei_Dezimalstellen
rf:=2
ADSsave("sfdata","rf")
return
Drei_Dezimalstellen:
Gui, Submit, NoHide
Menu, tray, UnCheck,Keine_Dezimalstelle
Menu, tray, UnCheck,Eine_Dezimalstelle
Menu, tray, UnCheck,Zwei_Dezimalstellen
Menu, tray, Check,Drei_Dezimalstellen
rf:=3
ADSsave("sfdata","rf")
return
pause:
Gui, Submit, NoHide
if A_IsSuspended
{
Suspend, off
Menu, tray, Rename, Weiter ,Pause
Menu, tray, Default, Pause
} else
{
Menu, tray, Rename, Pause ,Weiter
Menu, tray, Default, Weiter
Suspend, On
}
return
ADSreset(stream:="sfdata"){
filedelete,% A_ScriptFullPath ":" stream
return
}
ADSload(stream, params*){
stream_1:=A_ScriptFullPath ":" stream
; If something goes wrong, you can delete the ADS by
; renaming the Program eg ads.ahk => adsreset.ahk - after that, rename it back.
; ADS will be also deleted by copying to fat32
if InStr(A_ScriptName, "reset"){
filedelete,%stream_1%
return
}
for index,param in params
IniRead, %param%, %stream_1%, Section, %param% , %a_space%
return
}
ADSsave(stream, params*){
stream_1:=A_ScriptFullPath ":" stream
if InStr(A_ScriptName, "reset"){
filedelete,%stream_1%
return
}
for index,param in params
IniWrite,% """" %param% """", %stream_1%, section, %param%
return
}