home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CICA 1994 September
/
CICA_Shareware_for_Windows_Walnut_Creek_September_1994.iso
/
win3
/
desktop
/
sh93v100.lzh
/
XLTAB
< prev
next >
Wrap
Text File
|
1993-09-10
|
3KB
|
150 lines
# excel tabellier programm
#
# F5 legt die Eingabezelle,
# F6 die Ausgabezelle und
# F7 den Spaltenbereich mit Werten für die Eingabezelle fest.
#
# F8 startet die Tabellierung und gibt die Werte der Ausgabezelle
# spaltenweise ab der aktuellen Excel-Cursorposition aus.
#
# Werfen Sie einen Blick in die get_range() Funktion, sie eignet
# sich gut als Bibliotheksfunktion.
#
# Das Programm sollte sich ohne großen Aufwand auf andere
# Tabellenkalkulationen portieren lassen.
# Setzen Sie dazu remoteDDE (BEGIN Section) auf den richtigen Wert
# und ändern Sie die Belegung der shift+F2 Taste.
#
FUNCTION get_range(range) {
local file, top, bottom, left, right, x
if (index(range, "!") == 0)
return (1);
else
file = substr(range, 1, rstart-1);
x = substr(range, rstart+1); # ZaSb:ZcSd
top = substr(x, 2) + 0;
if (index(x, "S") == 0)
return (1);
else
left = substr(x, rstart+1) + 0
if (index(x, ":") == 0) {
bottom = top;
right = left;
return (0);
}
x = substr(x, rstart+1) # ZcSd
bottom = substr(x, 2) + 0
if (index(x, "S") == 0)
return (1);
else
right = substr(x, rstart+1) + 0
return (0)
}
FUNCTION celltest(cell) {
k = index(cell, "!")
if (k == 0)
return ("")
k = (y = substr(cell, k)) |:
index(":")
if (k != 0)
return ("")
return (cell);
}
FUNCTION coltest(col) {
if (get_range(col) == 1)
return ("");
else if (get_range["right"] != get_range["left"])
return ("")
return (col)
}
FUNCTION nocell() {
inform(WINtext,
"Der von Ihnen markierte Bereich ist keine einzelne Zelle")
}
/F5 "variablen zelle setzen"/ {
x = (SEL |get)
x = celltest(x)
if (x == "")
nocell()
else {
variabel = remoteDDE x
status("variable zelle = " variabel)
}
}
/F6 "ergebnis zelle setzen"/ {
if ((x = (SEL |get) |: celltest()) == "")
nocell()
else {
ergebnis = remoteDDE x
status("ergebnis zelle = " ergebnis)
}
}
/F7 "eingabe spalte setzen"/ {
if ((x = (SEL |get) |: coltest()) == "")
inform(WINtext, "Der markierte Bereich ist kein Spaltenbereich.")
else {
eingabe = x
status("eingabe bereich = " eingabe)
}
}
/F8 "tabellieren"/ {
if ((x = (SEL |get) |: celltest()) == "")
inform(WINtext, "Der markierte Bereich ist kein Spaltenbereich.")
else {
get_range(x)
outF = get_range["file"] "!"
outZ = get_range["top"];
outS = get_range["left"];
get_range(eingabe)
varF = get_range["file"] "!" # Achtung !
varZ = get_range["top"] + 0; # die Werte sind Strings!
varS = get_range["left"]; #
end = get_range["bottom"] + 0;
for (; varZ <= end; outZ++, varZ++) {
(remoteDDE varF "Z" varZ "S" varS) |get x
status(x)
y = x | variabel : ergebnis | (remoteDDE outF "Z" outZ "S" outS);
}
}
}
BEGIN {
ctrl(2, "Excel Tabellierer", 3, 112)
close("") |: status()
remoteDDE = "excel|"
SEL = remoteDDE "system!selection"
}
/shift F2 "excel starten"/ {
exec("excel", 1)
}
/F3 "dialog"/ {
x = paste("CF_TEXT") # |: tr("\n\r", "\t") # |: sq("\t")
status(x)
split(x, data, "\r\n");
}