Вверх ↑
Ответов: 783
Рейтинг: 168
#1: 2020-04-28 08:00:18 ЛС | профиль | цитата
Здравствуйте. Хотел бы предложить ещё один способ работы с файлами Excel.
Способ старый, но до сих пор работает. Передача через DDE работает в обе стороны.
Add(Label,1113320,35,119)
{
Width=428
Height=115
Align=2
AutoSize=1
}
Add(MainForm,4844206,42,14)
{
Left=20
Top=105
Width=444
Height=437
Caption="Работа с Excel"
Point(Handle)
link(onCreate,9404130:doEvent1,[])
}
Add(DDEClient,12344087,546,217)
{
ServiceName="EXCEL"
TopicName="[test_dde.xlsx]Лист1"
AutoUpdate=1
Point(doExecute)
Point(onError)
Point(onExecute)
link(onOpenLink,3708702:doOn,[(585,223)(585,90)])
link(onCloseLink,3708702:doOff,[(592,230)(592,83)])
link(onGetItem,6990964:doValue,[])
AddHint(-436,-136,113,13,TopicName)
}
Add(Button,11312604,406,63)
{
Left=30
Top=15
TabOrder=-1
Caption="Open"
Point(doCaption)
link(onClick,8357997:doSwitch,[])
}
Add(Button,16435339,98,217)
{
Left=35
Top=85
TabOrder=-1
Caption="Get"
link(onClick,15450258:doEvent1,[])
}
Add(WinTools,6027587,42,63)
{
link(Handle,4844206:Handle,[])
}
Add(Edit,3935738,378,532)
{
Left=100
Top=15
Width=255
Text="[Select("R1C1:R100C10")][CLEAR(1)]"
ClearAfterEnter=1
link(onEnter,12344087:doExecute,[(487,545)(487,251)])
}
Add(InfoTip,7023086,105,518)
{
Info=#41:примеры DDE-команд, может быть пригодятся|0:|16:[SELECT("R2C1")]|22:[SELECT("R1C1:R11C4")]|23:[FORMULA("xxx","R1C1")]|19:[ACTIVATE("Book1")]|27:[WORKBOOK.SELECT("Sheet1")]|36:[WORKBOOK.NAME("Sheet1";"Products")]|26:[COLUMN.WIDTH(16,"C3:C5")]|24:[ROW.HEIGHT(30,"R1:R3")]|24:[ALIGNMENT(2,FALSE,3,0)]|31:[FORMAT.NUMBER("# ### ##0.00")]|42:[FORMAT.FONT(,12,TRUE,FALSE,TRUE,FALSE,0)]|35:[FORMULA.FIND("str",1,2,2,1,FALSE)]|48:[DISPLAY(FALSE,FALSE,TRUE,TRUE,0,,TRUE,FALSE,1)]|73:[PAGE.SETUP("","",0.5,0.5,1,1,FALSE,FALSE,FALSE,FALSE,1,9,100,1,1,FALSE)]|21:[DISABLE.INPUT(TRUE)]|8:[NEW(1)]|20:[WORKBOOK.INSERT(1)]|18:[OPEN("FileName")]|42:[SAVE.AS("BOOK1.XLS";1;"";FALSE;"";FALSE)]|14:[CLOSE(FALSE)]|29:[RUN("FileName!Macro",FALSE)]|30:[CELL.PROTECTION(FALSE;FALSE)]|16:[APP.MINIMIZE()]|15:[APP.RESTORE()]|21:[BORDER(1,2,3,4,5,6)]|
HAlign=0
Width=400
Height=368
}
Add(LED,3708702,616,70)
{
Top=10
link(onChange,13102087:doEvent,[])
}
Add(IndexToChanel,13102087,665,70)
{
link(onEvent1,14812341:doReset,[])
link(onEvent2,14812341:doOn,[])
}
Add(Switch,8357997,462,63)
{
DataOn=Integer(1)
DataOff=Integer(1)
Point(onOn)
Point(onOff)
link(onOn,12344087:doOpenLink,[(536,76)(536,223)])
link(onOff,12344087:doCloseLink,[(529,83)(529,230)])
}
Add(Switch,14812341,721,63)
{
DataOn=String(Close)
DataOff=String(Open)
Point(doOn)
link(onSwitch,11312604:doCaption,[(760,69)(760,55)(396,55)(396,69)])
}
Add(MatrixRW,6762555,833,224)
{
link(Matrix,9520445:Matrix,[])
link(Value,6990964:Value,[(846,208)(699,208)(699,271)(650,271)])
link(X,6399713:Result,[(853,215)(762,215)(762,271)(720,271)])
link(Y,13355279:Result,[(860,215)(874,215)(874,271)(783,271)])
}
Add(For,8369739,231,224)
{
Start=1
link(onEvent,35478:doEvent1,[])
link(End,10184471:Text,[])
}
Add(For,13111731,350,231)
{
Start=1
link(onEvent,5561371:doString,[])
link(End,1237194:Text,[])
}
Add(FormatStr,5561371,406,231)
{
Mask="R%1C%2"
link(onFString,12344087:doGetItem,[])
link(Str1,4239675:Var1,[(412,222)(398,222)])
}
Add(Edit,10184471,238,168)
{
Left=95
Top=85
Width=40
Text="20"
DataType=2
ClearAfterEnter=1
}
Add(Edit,1237194,357,168)
{
Left=145
Top=85
Width=40
Text="5"
DataType=2
ClearAfterEnter=1
}
Add(Memory,6990964,644,231)
{
link(onData,6399713:doOperation,[])
}
Add(MTStrTbl,5816951,784,133)
{
Top=115
Width=428
Height=283
Align=5
Name="excel"
Columns=#1:a|1:b|1:c|1:d|1:e|1:f|1:g|1:h|0:|
}
Add(MST_RowAction,13420461,308,168)
{
MSTControl="excel"
}
Add(MST_Matrix,9520445,833,133)
{
MSTControl="excel"
}
Add(Hub,35478,273,224)
{
link(onEvent1,13420461:doRowAction,[(298,230)(298,174)])
link(onEvent2,13111731:doFor,[])
}
Add(Hub,15450258,147,217)
{
link(onEvent1,4101504:doClear,[(172,223)(172,174)])
link(onEvent2,8369739:doFor,[])
}
Add(MST_Clear,4101504,189,168)
{
MSTControl="excel"
}
Add(GetDataEx,4239675,392,280)
{
Angle=3
link(Data,8369739:Position,[(237,285)])
}
Add(Math,6399713,714,231)
{
OpType=1
Op2=1
link(onResult,13355279:doOperation,[])
link(Op1,13111731:Position,[(720,222)(706,222)(706,278)(356,278)])
}
Add(Math,13355279,777,231)
{
OpType=1
Op2=1
link(onResult,6762555:doWrite,[])
link(Op1,4239675:Var3,[(783,222)(769,222)(769,285)])
}
Add(Button,3360535,119,364)
{
Left=200
Top=85
TabOrder=-1
Caption="Put"
link(onClick,1013873:doEvent1,[])
}
Add(For,14642420,210,371)
{
Start=1
link(onEvent,11954380:doFor,[])
link(End,11050133:Text,[])
}
Add(For,11954380,259,371)
{
Start=1
link(onEvent,4342232:doRandom,[])
link(End,2906729:Text,[])
}
Add(Edit,11050133,217,315)
{
Left=270
Top=85
Width=40
Text="20"
DataType=2
ClearAfterEnter=1
}
Add(Edit,2906729,266,315)
{
Left=320
Top=85
Width=40
Text="5"
DataType=2
ClearAfterEnter=1
}
Add(FormatStr,12948668,364,371)
{
Mask="R%1C%2"
link(onFString,4314268:doAdd,[])
link(Str1,14642420:Position,[(370,362)(356,362)(356,411)(216,411)])
link(Str2,11954380:Position,[(377,355)(349,355)(349,418)(265,418)])
}
Add(Random,4342232,308,371)
{
link(onRandom,12948668:doString,[])
}
Add(MT_Add,4314268,413,371)
{
link(onAdd,12344087:doPutItem,[(480,377)(480,244)])
link(Data,4342232:Random,[(419,362)(405,362)(405,425)(314,425)])
}
Add(Hub,1013873,161,364)
{
link(onEvent2,14642420:doFor,[])
}
Add(WinExec,7775503,126,21)
{
FileName="test_dde.xlsx"
}
Add(Hub,9404130,84,28)
{
link(onEvent1,7775503:doShellExec,[])
link(onEvent2,6027587:doPopup,[(109,41)(109,55)(32,55)(32,76)])
}

Архив с файлами проекта и кратким описанием - https://yadi.sk/d/SqKT3CQ-x1IsmQ
Возможно, кому-то понадобится.
карма: 15

1
Голосовали:Леонид
Редактировалось 3 раз(а), последний 2020-04-30 14:12:49