Вверх ↑
Этот топик читают: Гость
Ответов: 8888
Рейтинг: 823
#16: 2019-02-26 00:07:11 ЛС | профиль | цитата
Master4eG, а пробовали ручками скопипастить в ячейку, ранее был максимум 256 символов, обрабатываемых формулами, сейчас не знаю, но ограничение наверное тоже есть
МногоСтрок759символов.jpg
карма: 19

0
Ответов: 321
Рейтинг: 10
#17: 2019-02-26 00:11:34 ЛС | профиль | цитата
Леонид, ограничения я здесь читал https://support.office.com/ru-ru/article/Технические-характеристики-и-ограничения-microsoft-excel-1672b34d-7043-467e-8e27-269d656771c3.
То есть вы хотите сказать, что я могу только 256 символов вставить ?!
А каким методом вы это сделали ?!

Редактировалось 1 раз(а), последний 2019-02-26 00:15:16
карма: 1

0
Ответов: 537
Рейтинг: 14
#18: 2019-02-26 01:05:37 ЛС | профиль | цитата
Скрипт от Леонида отлично записывает длинный текст в .xlsx

Add(MainForm,9161318,525,238)
{
Width=1184
Height=246
Caption="In_Out_Excel"
Point(onClose)
link(onClose,604810:doCompare,[])
}
Add(LED,1408573,574,189)
{
Left=85
Top=5
}
Add(IndexToChanel,4742625,525,196)
{
link(onEvent1,1408573:doOff,[])
link(onEvent2,1408573:doOn,[])
}
Add(Button,11796961,315,49)
{
Left=5
Top=10
Width=65
Caption="Open Excel"
link(onClick,420540:doExecute,[])
}
Add(Button,12390211,406,168)
{
Left=10
Top=40
Caption="Close"
link(onClick,13900935:doWork2,[])
}
Add(Hub,9982022,413,49)
{
link(onEvent1,10946710:doClear,[(517,55)(517,76)])
link(onEvent2,10692435:doOpen,[(438,62)(438,139)])
}
Add(ODialog,420540,364,49)
{
Filter="Excel(.xls,.xlsx)|*.xls;*.xlsx"
link(onExecute,9982022:doEvent1,[])
}
Add(ComboBox,10946710,525,63)
{
Left=120
Top=10
Width=140
Height=21
Text="Выбрать лист"
DataType=1
Point(doSelect)
link(onClick,10692435:doSheet,[(564,76)(564,125)(445,125)(445,160)])
}
Add(If_else,11782534,469,63)
{
Type=5
Op2=Integer(0)
link(onTrue,10946710:doAdd,[])
link(onFalse,10946710:doSelect,[(513,76)(513,97)])
}
Add(Button,14425351,217,231)
{
Left=10
Top=80
Caption="Read"
link(onClick,469012:doString,[])
}
Add(Edit,5305046,231,182)
{
Left=75
Top=80
Text="2"
DataType=2
}
Add(Label,4501845,231,49)
{
Left=90
Top=60
Caption="Row"
}
Add(Label,613563,273,49)
{
Left=135
Top=60
Width=39
Height=17
Caption="Column"
}
Add(Edit,16579324,273,182)
{
Left=130
Top=80
Text="1"
DataType=2
}
Add(FormatStr,469012,266,231)
{
Mask="%1;%2"
link(onFString,10692435:doRead,[(382,237)(382,153)])
link(Str1,5305046:Text,[(272,222)(237,222)])
link(Str2,16579324:Text,[])
}
Add(Button,8636081,217,140)
{
Left=10
Top=110
Font=[MS Sans Serif,8,0,255,1]
Caption="Write"
link(onClick,1368601:doString,[])
}
Add(Edit,663925,231,91)
{
Left=75
Top=110
Text="2"
DataType=2
}
Add(Edit,10420173,273,91)
{
Left=130
Top=110
Text="1"
DataType=2
}
Add(FormatStr,1368601,266,140)
{
DataCount=3
Mask="%1;%2;%3"
link(onFString,10692435:doWrite,[])
link(Str1,663925:Text,[(272,135)(237,135)])
link(Str2,10420173:Text,[])
link(Str3,1032761:Text,[(286,132)(328,132)])
}
Add(VBJScript,10692435,469,133)
{
@Hint=#16:Query SQL Server|
WorkPoints=#6:doOpen|7:doWrite|6:doRead|7:doSheet|7:doMacro|7:doClose|
EventPoints=#6:onShet|7:onMacro|7:onCells|6:onOpen|
Script=#9:Dim strIn|10:Dim strOut|10:Dim NumRow|10:Dim NumCol|5:Dim i|5:Dim j|12:Dim objExcel|0:|22:Sub doWork(Data,Index)|18: Select Case Index|103: Case "doOpen" 'На вход подаётся строка, содержащая полный путь к файлу|52: Set objExcel = CreateObject("Excel.Application")|52: Set objWorkbook = objExcel.Workbooks.Open (Data)|82: For i=1 To objWorkbook.Sheets.Count 'Листы начинаются не с "0", а с "1"|67: sys.onShet objWorkbook.Sheets(i).Name 'Выводим имя наружу |9: Next|74: 'j=objWorkbook.macro.Count 'Узнаём количество макросов|88: ' For i=1 To j 'Нумерация начинаются не с "0", а с "1" |79: ' strIn = objWorkbook.macro(i).Name 'Узнаём имя очередного макроса |67: ' sys.onMacro strIn 'Выводим имя наружу |15: ' Next |18: sys.onShet 0 |16: sys.onOpen 1|143: Case "doRead" 'На вход подаётся строка, содержащая (разделитель -- точка с запятой): НомерСтроки;НомерКолонки;|22: strIn = CStr(Data)|28: i = InStr(1,strIn,";",0)|37: NumRow = CLng(Mid(strIn, 1, i-1))|33: NumCol = CLng(Mid(strIn,i+1))|61: strOut = objExcel.ActiveSheet.Cells(NumRow, NumCol).Value|27: sys.onCells strOut |163: Case "doWrite" 'На вход подаётся строка, содержащая (разделитель -- точка с запятой): НомерСтроки;НомерКолонки;ЗаписываемоеЗначение|22: strIn = CStr(Data)|28: i = InStr(1,strIn,";",0)|37: NumRow = CLng(Mid(strIn, 1, i-1))|30: j = InStr(i+1,strIn,";",0)|41: NumCol = CLng(Mid(strIn, i+1, j-i-1))|28: strIn = Mid(strIn, j+1)|58: objExcel.ActiveSheet.Cells(NumRow, NumCol).Value=strIn|21: sys.onCells strIn|93: Case "doSheet" 'На вход подаётся строка, содержащая имя Листа|32: objExcel.Sheets(Data).Select|44: objExcel.ActiveSheet.Cells(1, 1).Select |95: Case "doMacro" 'На вход подаётся строка, содержащая имя Макроса|63: objExcel.Application.Run (Data) |19: 'sys.onMacro 1 |17: Case "doClose"|17: objExcel.Quit|26: Set objExcel = Nothing|20: sys.onOpen 0 |11: End Select|0:|7:End Sub|
UseName=0
link(onShet,11782534:doCompare,[(508,139)(508,118)(459,118)(459,69)])
link(onCells,3080051:doText,[])
link(onOpen,4742625:doEvent,[(513,160)(513,202)])
}
Add(If_else,604810,574,259)
{
Op2=Integer(1)
link(onTrue,13900935:doWork3,[(616,265)(616,301)(459,301)])
link(Op1,1408573:Value,[])
}
Add(HubEx,13900935,455,168)
{
link(onEvent,10692435:doClose,[])
}
Add(Edit,3080051,525,147)
{
Left=190
Top=80
Width=175
}
Add(Memo,1032761,322,91)
{
Left=380
Top=25
Width=635
Height=175
ScrollBars=2
}
Add(Label,836167,231,7)
{
Left=385
Top=5
Width=94
Height=22
Caption="Текст для записи"
}
карма: 4

0
Ответов: 8888
Рейтинг: 823
#19: 2019-02-26 09:51:31 ЛС | профиль | цитата
Master4eG писал(а):
А каким методом вы это сделали
Так написал же "ручками скопипастил" для проверки
Формула "ДЛСТР" работает, значит ограничение по формулам, если оно есть, более 759 символов
карма: 19

0
Ответов: 537
Рейтинг: 14
#20: 2019-02-26 10:40:27 ЛС | профиль | цитата
Леонид В .xlsx записывается вашим скриптом намного больше 759 символов. Несколько тысяч можно. А в .xls 256 символов, это ограничение Excel
карма: 4

0
Ответов: 5227
Рейтинг: 586
#21: 2019-02-26 15:49:20 ЛС | профиль | цитата
не знаю что и сказать
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Ответов: 321
Рейтинг: 10
#22: 2019-02-27 01:54:37 ЛС | профиль | цитата
Sersey, спасибо за наводку . И Леонид, спасибо большое за сам скрипт, работает на ура с большими текстами, правда удобнее было бы, если бы индекс строк начинался с нуля, и точки были бы вверху. А совсем круто было бы, если бы была точка doCreateXLS, а сверху "name".
Вроде нашел как создавать файл, 5 строчек кода, но ума не хватает как объединить.
http://qaru.site/questions/856128/create-an-excel-file-using-vbscripts
БукАвки это уже не кубики соединять, не совсем моё

Редактировалось 1 раз(а), последний 2019-02-27 01:54:54
карма: 1

0
Ответов: 5227
Рейтинг: 586
#23: 2019-02-27 19:24:35 ЛС | профиль | цитата
Master4eG писал(а):
БукАвки это уже не кубики соединять, не совсем моё

когда научишься буковкам то откроешь Америку
Просто учитывай одно, скрипт Леонид(а) требует установленного офиса, мой IC делает бинарник простого экспорта в xls файл даже в чистой win-98, на основе его я сделал компонент на подобии ExportHTML. Но так как с иконкой никто помочь не вызвался то принципиально оставляю его себе.
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Ответов: 321
Рейтинг: 10
#24: 2019-02-27 19:35:46 ЛС | профиль | цитата
andrestudio писал(а):
Но так как с иконкой никто помочь не вызвался то принципиально оставляю его себе.

Могу нарисовать, скажите что и как и сделаю, правда не разу для hiasm ничего не рисовал, но пару вариантов смогу показать.

Что я делаю не так ?!
Add(MainForm,11821139,735,301)
{
Width=464
Height=302
}
Add(Edit,8673961,812,385)
{
Left=95
Top=10
Width=180
Text="Demo1.xls"
}
Add(Button,3544816,588,441)
{
Left=70
Top=100
Width=260
Height=25
Caption="Auto creator data file"
link(onClick,6665458:doEvent1,[])
}
Add(InlineCode,14243757,847,441)
{
WorkPoints=#28:doCreateXLS=Создаёт файл XLS|49:doCloseXLS=Закрывает файл после добавления данных|76:doAddData=Добавляет данные в таблицу согластно типа данных (данные в потоке)|
EventPoints=#5:onErr|
DataPoints=#22:FileName=Имя файла XLS|16:Row=Номер строки|17:Col=Номер колонки|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|3: |0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|3: |21: FStream: PStream;|17: fname:string;|23: FileName:THI_Event;|18: Col:THI_Event;|18: Row:THI_Event;|20: onErr:THI_Event;|3: |72: procedure XlsBeginStream(var XlsStream: PStream; BuildNumber: Word);|47: procedure XlsEndStream(XlsStream: PStream);|53: procedure XlsWriteInteger(var XlsStream: PStream;|51: ACol, ARow: Word;|51: AValue: Integer);|50: procedure XlsWriteReal(var XlsStream: PStream;|48: ACol, ARow: Word;|47: AValue: Double);|0:|52: procedure XlsWriteString(var XlsStream: PStream;|50: ACol, ARow: Word;|52: AValue: string); |3: |50: procedure doCreateXLS(var dt:TData; idx:word);|49: procedure doCloseXLS(var dt:TData; idx:word);|48: procedure doAdddata(var dt:TData; idx:word);|0:|5: end;|0:|14:implementation|0:|3:var|58: CXlsBof: array[0..5] of Word = ($809, 8, 00, $10, 0, 0);|43: CXlsEof: array[0..1] of Word = ($0A, 00);|57: CXlsLabel: array[0..5] of Word = ($204, 0, 0, 0, 0, 0);|56: CXlsNumber: array[0..4] of Word = ($203, 14, 0, 0, 0);|52: CXlsRk: array[0..4] of Word = ($27E, 10, 0, 0, 0);|6: |37:procedure THiAsmClass.XlsBeginStream;|5:begin|28: CXlsBof[4] := BuildNumber;|44: XlsStream.Write(CXlsBof, SizeOf(CXlsBof));|4:end;|0:|35:procedure THiAsmClass.XlsEndStream;|5:begin|44: XlsStream.Write(CXlsEof, SizeOf(CXlsEof));|4:end;|0:|38:procedure THiAsmClass.XlsWriteInteger;|15:var V: Integer;|5:begin|20: CXlsRk[2] := ARow;|20: CXlsRk[3] := ACol;|42: XlsStream.Write(CXlsRk, SizeOf(CXlsRk));|27: V := (AValue shl 2) or 2;|24: XlsStream.Write(V, 4);|4:end;|0:|35:procedure THiAsmClass.XlsWriteReal;|5:begin|24: CXlsNumber[2] := ARow;|24: CXlsNumber[3] := ACol;|50: XlsStream.Write(CXlsNumber, SizeOf(CXlsNumber));|42: XlsStream.Write(AValue, SizeOf(Double));|4:end;|0:|37:procedure THiAsmClass.XlsWriteString;|12:var L: Word;|5:begin|22: L := Length(AValue);|24: CXlsLabel[1] := 8 + L;|23: CXlsLabel[2] := ARow;|23: CXlsLabel[3] := ACol;|20: CXlsLabel[5] := L;|48: XlsStream.Write(CXlsLabel, SizeOf(CXlsLabel));|39: XlsStream.Write(Pointer(AValue)^, L);|4:end;|0:|34:procedure THiAsmClass.doCreateXLS;|5:begin|50: fname := ReadString(dt,FileName, 'C:\Demo.xls');|39: FStream := NewWriteFileStream(fname);|29: XlsBeginStream(FStream, 0);|4:end;|0:|33:procedure THiAsmClass.doCloseXLS;|5:begin|24: XlsEndStream(FStream);|15: FStream.Free;|4:end;|0:|32:procedure THiAsmClass.doAdddata;|16:var stmp:string;|17: itmp:integer;|14: rtmp:real;|16: r,c:integer;|16: tmpdt:TData;|5:begin|34: r := ReadInteger(tmpdt, Row, 0);|34: c := ReadInteger(tmpdt, Col, 0);|22: case dt.Data_type of|20: data_str: begin|38: stmp := ToString(dt);|50: XlsWriteString(FStream,c,r,stmp);|19: end;|20: data_int: begin|39: itmp := ToInteger(dt);|51: XlsWriteInteger(FStream,c,r,itmp);|19: end;|20: data_real: begin|36: rtmp := ToReal(dt);|48: XlsWriteReal(FStream,c,r,rtmp);|19: end;|57: else _hi_onEvent(onErr, 'Error type add'); |6: end;|4:end;|0:|4:end.|
link(onErr,1231733:doMessage,[])
link(FileName,8673961:Text,[(853,429)(818,429)])
link(Row,751937:Var2,[])
link(Col,751937:Var3,[(867,425)])
}
Add(Hub,6665458,651,441)
{
OutCount=4
link(onEvent1,14243757:doCreateXLS,[])
link(onEvent2,13033422:doData,[(709,454)(709,356)])
link(onEvent3,14243757:doCloseXLS,[(756,461)(756,454)])
link(onEvent4,12326381:doMessage,[])
}
Add(Message,12326381,777,462)
{
Message="End create file"
}
Add(StrList,1942388,854,301)
{
Strings=#25:Строка для ячейки номер 1|25:Строка для ячейки номер 2|25:Строка для ячейки номер 3|25:Строка для ячейки номер 4|25:Строка для ячейки номер 5|25:Строка для ячейки номер 6|25:Строка для ячейки номер 7|25:Строка для ячейки номер 8|25:Строка для ячейки номер 9|26:Строка для ячейки номер 10|
}
Add(Memory,6490426,854,385)
{
Default=Integer(0)
}
Add(DoData,13033422,854,350)
{
Data=String(Строка для ячейки номер 1)
link(onEventData,14243757:doAddData,[(941,356)(941,488)(835,488)(835,461)])
link(Data,1942388:Text,[])
}
Add(Message,1231733,973,441)
{
}
Add(GetDataEx,751937,854,420)
{
link(Data,6490426:Value,[])
}


Результат, либо пустая форма, либо:




Типа такого ?! Можно внутри закрасить, вместо прозрачности.

Слишком тонкий какой-то, сейчас еще сделаю парочку.
Во вкладке "Инструменты" - "Конверторы" - есть TableToRTF, можно вместо RTF написать XLS и готово
Ну или что-то похожее нарисовать, фантазии не хватает чуток.

Вот толстый в интернете нашел, чуть переделал.
xls.ico


- этот на скриншете выше.
- это более широкий и чистый, думаю будет красивее, чем выше.

Редактировалось 8 раз(а), последний 2019-02-27 22:01:57
карма: 1

0
Ответов: 5227
Рейтинг: 586
#25: 2019-02-28 16:16:00 ЛС | профиль | цитата
Master4eG писал(а):
Что я делаю не так ?!

Ну что и сам ведь понимаешь наверно, вставляешь в ячейку несколько строк вместо одной допустимой. Это простой вывод без форматирования и всего прочего.
Вот тебе для вдохновения от моей землячки http://www.delphiplus.org/articles/interview/olga_sosonnykh.html значит и ты сможешь
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Ответов: 188
Рейтинг: 2
#26: 2019-03-05 21:13:34 ЛС | профиль | цитата
я выгрузку делал по другому сначала выгружал из MTtable в текстовый файл. А потом этот файл открывал CALC опенофис ну или EXEL. и мне программ предлагала ввести символ разделитель или использовать стандартные. и вообще без проблем открывалась без потери форматирования!
карма: 0

0
Ответов: 698
Рейтинг: 143
#27: 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
Возможно, кому-то понадобится.

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

1
Голосовали:Леонид
Ответов: 698
Рейтинг: 143
#28: 2020-04-29 10:14:50 ЛС | профиль | цитата
Добавил пример передачи больших таблиц в Excel. Этот способ работает намного быстрее
Add(MainForm,4844206,42,14)
{
Left=20
Top=105
Width=444
Height=437
Caption="Пример передачи в Excel таблицы "
Point(Handle)
link(onCreate,9404130:doEvent1,[])
}
Add(DDEClient,12344087,350,175)
{
ServiceName="EXCEL"
TopicName="[Накладная.xlsx]Лист1"
AutoUpdate=1
Point(doExecute)
Point(onExecute)
link(onOpenLink,11742607:doWork1,[])
link(onCloseLink,11742607:doWork2,[])
}
Add(WinTools,6027587,42,63)
{
link(Handle,4844206:Handle,[])
}
Add(MTStrTbl,5816951,406,49)
{
Top=115
Width=428
Height=283
Align=5
Name="excel"
Columns=#7:Артикул|8:Название|6:Кол-во|7:Ед.изм.|4:Цена|5:Сумма|0:|
Redaction=0
}
Add(WinExec,7775503,126,21)
{
FileName="Накладная.xlsx"
}
Add(Hub,9404130,84,28)
{
OutCount=3
link(onEvent1,7775503:doShellExec,[])
link(onEvent2,1512985:doEnum,[(116,41)(116,76)])
link(onEvent3,6027587:doPopup,[(109,48)(109,55)(32,55)(32,76)])
}
Add(StrList,13732325,196,21)
{
Strings=#56:23544122;Carbon disc ?44,7/38,3x5,8mm;10;PC;16,92;169,20|56:23544122;Carbon disc ?44,7/38,3x5,8mm;10;PC;16,92;169,20|54:23544122;Carbon disc ?44,7/38,3x5,8mm;2;PC;16,92;33,84|64:21200159;Top part UNIFL3/4 for steel bot.part;25;PC;30,09;752,25|57:24400111;Hose f. pump compl. UNIWASH;153;PC;10,58;1618,74|58:13225;Piston complete for valve UNIWASH3;4;PC;27,09;108,36|60:12200105;Vacuumgauge glycerine ?100mm 3/8";5;PC;40,57;202,85|54:21200141;Thread bush UNIFLOW3 steel;130;PC;1,93;250,90|45:25100146;O-ring ?16,1x1,6mm;175;PC;0,36;63,00|57:21200127;Holder rocking lever, UNIFLOW3;170;PC;0,26;44,20|50:21200131;Rocking lever UNIFLOW3;150;PC;0,89;133,50|65:25200132;Valve button inside UNIFLOW3 steel FA;225;PC;0,72;162,00|61:21200129;Bar closing device UNIFLOW3 steel;225;PC;1,09;245,25|55:25200124;Valve flap outside UNIFLOW3;225;PC;1,56;351,00|60:14400212;Solenoid valve sgl. invensys 230vac;5;PC;8,50;42,50|62:14400213;Solenoid valve dobb. invensys 230vac;5;PC;14,13;70,65|48:21200131;Rocking lever UNIFLOW3;20;PC;0,89;17,80|63:25200132;Valve button inside UNIFLOW3 steel FA;20;PC;0,72;14,40|43:25100146;O-ring ?16,1x1,6mm;20;PC;0,36;7,20|55:21200127;Holder rocking lever, UNIFLOW3;20;PC;0,26;5,20|58:21200130;Bar closing device UNIFLOW3 steel;20;PC;0,34;6,80|58:25200119;Guard bracket UNIFLOW3 steel SBS;20;PC;3,38;67,60|55:13474;Valve flap exterior UNIFLOW3 SBS;20;PC;1,56;31,20|59:26400104;Terminal wheel for lock guide str;20;PC;1,12;22,40|67:25215022;Rubber liner UNIFL. 15022-?22 UNIFLEX FA;96;PC;2,39;229,44|55:14800695;Hose guide f. SAC115 complete;10;PC;9,17;91,70|36:14306;Filter for IDC;20;PC;0,40;8,00|51:25515435;Rubber hose ?27/16 mm - FA;15;M;5,24;78,60|63:13930;Double-action Quickstart II rem. L=740mm;1;PC;98,66;98,66|54:13100201;Spray gun for udder washer;20;PC;17,77;355,40|0:|
}
Add(ArrayEnum,1512985,210,70)
{
link(onItem,7011876:doMTString,[])
link(Array,13732325:Array,[])
}
Add(MT_String,7011876,266,56)
{
link(onResult,3501424:doRowAction,[])
}
Add(MST_RowAction,3501424,315,56)
{
MSTControl="excel"
}
Add(Menu,11693391,35,161)
{
Menu=#17:Создать Накладную|
Point(onSelectNum)
link(onSelectNum,10422639:doEvent1,[])
}
Add(Clipboard,2176761,231,168)
{
Unicode=0
}
Add(Convertor,3193568,175,168)
{
Mode=11
link(onResult,2176761:doPutText,[])
}
Add(MST_Save,11227433,126,161)
{
Delimiter="\t"
SaveColProp=1
MSTControl="excel"
link(onSaveToStream,3193568:doConvert,[])
}
Add(Hub,10422639,91,168)
{
link(onEvent1,11227433:doSaveToStream,[])
link(onEvent2,590240:doString,[(116,181)(116,209)])
}
Add(StatusBar,16298417,448,168)
{
Strings=#9:Подключён|8:Отключён|
}
Add(ChanelToIndex,11742607,399,175)
{
link(onIndex,16298417:doIndexText,[])
}
Add(FormatStr,590240,280,203)
{
Mask="[PASTE("R4C2")][SELECT("R4C2")][SELECT.SPECIAL(5)][BORDER(6,1,1,1,1)][COLUMN.WIDTH(0,"C1:C10",0,3)][SELECT("R1C1")]"
link(onFString,12344087:doExecute,[])
}
Add(InfoTip,11475842,49,301)
{
Info=#43:Подный список аргументов для команды BORDER|0:|193:Equivalent to choosing the Border tab in the Format Cells dialog box, which appears when you choose the Cells command from the Format menu. Adds a border to the selected cell or range of cells.|0:|6:Syntax|0:|113:BORDER(outline, left, right, top, bottom, shade, outline_color, left_color, right_color, top_color, bottom_color)|153:Outline, left, right, top, and bottom are numbers from 0 to 7 corresponding to the line styles in the Border dialog box, as shown in the following table.|0:|18:Argument Line type|0:|11:0 No border|11:1 Thin line|13:2 Medium line|13:3 Dashed line|13:4 Dotted line|12:5 Thick line|13:6 Double line|10:7 Hairline|0:|159:Note For compatibility with earlier versions of Microsoft Excel, TRUE and FALSE values for the above arguments create a thin border or no border, respectively.|0:|150:Shade corresponds to the Shade check box in the Border dialog box of Microsoft Excel version 4.0. This argument is included for compatibility only.|186:Outline_color, left_color, right_color, top_color, and bottom_color are numbers from 1 to 56 corresponding to the Color box in the Border dialog box. Zero corresponds to automatic color.|
HAlign=0
Width=715
Height=389
}



Редактировалось 7 раз(а), последний 2020-09-19 19:28:00
карма: 15

0
Ответов: 698
Рейтинг: 143
#29: 2020-09-19 19:32:45 ЛС | профиль | цитата
Для информации. У кого Excel с русским интерфейсом можно использовать макрокоманды также на русском языке и в любом регистре (работает ТОЛЬКО в русской версии Excel).

Add(MainForm,4844206,49,56)
{
Left=20
Top=105
Width=444
Height=437
Caption="Пример передачи таблицы в/из Excel."
Point(Handle)
Point(onClose)
link(onCreate,9404130:doEvent1,[])
}
Add(DDEClient,12344087,476,483)
{
ServiceName="EXCEL"
TopicName="system"
AutoUpdate=1
Point(onExecute)
Point(onError)
Point(doTopicName)
Point(doExecute)
link(onExecute,15882137:doEvent,[])
}
Add(WinTools,6027587,49,105)
{
link(Handle,4844206:Handle,[])
}
Add(MTStrTbl,5816951,826,70)
{
Top=115
Width=428
Height=283
Align=5
Name="excel"
Columns=#7:Артикул|8:Название|6:Кол-во|7:Ед.изм.|4:Цена|5:Сумма|0:|
Redaction=0
}
Add(Hub,9404130,105,70)
{
link(onEvent1,7002440:doEnum,[])
link(onEvent2,6027587:doPopup,[(130,83)(130,97)(39,97)(39,118)])
}
Add(StrList,13732325,665,35)
{
Strings=#56:23544122;Carbon disc ?44,7/38,3x5,8mm;10;PC;16,92;169,20|56:23544122;Carbon disc ?44,7/38,3x5,8mm;10;PC;16,92;169,20|54:23544122;Carbon disc ?44,7/38,3x5,8mm;2;PC;16,92;33,84|64:21200159;Top part UNIFL3/4 for steel bot.part;25;PC;30,09;752,25|57:24400111;Hose f. pump compl. UNIWASH;153;PC;10,58;1618,74|58:13225;Piston complete for valve UNIWASH3;4;PC;27,09;108,36|60:12200105;Vacuumgauge glycerine ?100mm 3/8";5;PC;40,57;202,85|54:21200141;Thread bush UNIFLOW3 steel;130;PC;1,93;250,90|45:25100146;O-ring ?16,1x1,6mm;175;PC;0,36;63,00|57:21200127;Holder rocking lever, UNIFLOW3;170;PC;0,26;44,20|50:21200131;Rocking lever UNIFLOW3;150;PC;0,89;133,50|65:25200132;Valve button inside UNIFLOW3 steel FA;225;PC;0,72;162,00|61:21200129;Bar closing device UNIFLOW3 steel;225;PC;1,09;245,25|55:25200124;Valve flap outside UNIFLOW3;225;PC;1,56;351,00|60:14400212;Solenoid valve sgl. invensys 230vac;5;PC;8,50;42,50|62:14400213;Solenoid valve dobb. invensys 230vac;5;PC;14,13;70,65|48:21200131;Rocking lever UNIFLOW3;20;PC;0,89;17,80|63:25200132;Valve button inside UNIFLOW3 steel FA;20;PC;0,72;14,40|43:25100146;O-ring ?16,1x1,6mm;20;PC;0,36;7,20|55:21200127;Holder rocking lever, UNIFLOW3;20;PC;0,26;5,20|58:21200130;Bar closing device UNIFLOW3 steel;20;PC;0,34;6,80|58:25200119;Guard bracket UNIFLOW3 steel SBS;20;PC;3,38;67,60|55:13474;Valve flap exterior UNIFLOW3 SBS;20;PC;1,56;31,20|59:26400104;Terminal wheel for lock guide str;20;PC;1,12;22,40|67:25215022;Rubber liner UNIFL. 15022-?22 UNIFLEX FA;96;PC;2,39;229,44|55:14800695;Hose guide f. SAC115 complete;10;PC;9,17;91,70|36:14306;Filter for IDC;20;PC;0,40;8,00|51:25515435;Rubber hose ?27/16 mm - FA;15;M;5,24;78,60|63:13930;Double-action Quickstart II rem. L=740mm;1;PC;98,66;98,66|54:13100201;Spray gun for udder washer;20;PC;17,77;355,40|0:|
}
Add(ArrayEnum,1512985,679,84)
{
link(onItem,7011876:doMTString,[])
link(onEndEnum,4139610:doColAction,[(718,97)(718,125)])
link(Array,13732325:Array,[])
}
Add(MT_String,7011876,728,70)
{
link(onResult,3501424:doRowAction,[])
}
Add(MST_RowAction,3501424,777,70)
{
MSTControl="excel"
}
Add(Menu,11693391,42,378)
{
Menu=#5:Excel|1:(|7:Export |6:Import|1:-|9:New sheet|4:Save|1:)|0:|
Point(onSelectNum)
link(onSelectNum,7434029:doEvent1,[])
}
Add(Convertor,5491408,665,532)
{
Mode=12
link(onResult,11674960:doLoadFromStream,[])
link(Data,2176761:Text,[(671,516)(881,516)])
}
Add(MST_Load,11674960,721,525)
{
Delimiter="\t"
MSTControl="excel"
link(onLoadFromStream,9772588:doWork2,[])
}
Add(IndexToChanel,15882137,539,511)
{
link(onEvent2,9922165:doEvent,[])
}
Add(Memory,2790909,595,399)
{
link(onData,6178369:doEvent,[])
}
Add(IndexToChanel,9922165,595,518)
{
Count=3
Point(Index)
link(onEvent3,5491408:doConvert,[])
link(Index,2790909:Value,[])
}
Add(MST_ColAction,4139610,777,119)
{
Action=9
Index=-2
MSTControl="excel"
}
Add(StrList,10151347,210,294)
{
Strings=#16:ВСТАВИТЬ("R4C2")|16:ВЫДЕЛИТЬ("R4C2")|24:СПЕЦИАЛЬНОЕ.ВЫДЕЛЕНИЕ(5)|16:РАМКА(6;1;1;1;1)|22:ШИРИНА.СТОЛБЦА(0;;0;3)|16:ВЫДЕЛИТЬ("R1C1")|0:|0:|
}
Add(DoData,1491782,413,518)
{
link(onEventData,12344087:doExecute,[])
link(Data,15503582:Var2,[])
}
Add(StrList,5709642,259,294)
{
Strings=#16:ВЫДЕЛИТЬ("R4C2")|24:СПЕЦИАЛЬНОЕ.ВЫДЕЛЕНИЕ(5)|12:КОПИРОВАТЬ()|16:ВЫДЕЛИТЬ("R1C1")|0:|0:|0:|
}
Add(ArrayEnum,6819062,217,455)
{
link(onItem,9600698:doCompare,[])
link(onEndEnum,1491782:doData,[(263,468)(263,524)])
link(Array,10581033:Var,[])
}
Add(StrCat,11792950,413,455)
{
Point(doClear)
link(Str1,15503582:Var1,[(419,446)(405,446)(405,495)])
}
Add(FormatStr,11528860,322,455)
{
DataCount=1
Mask="[%1]"
link(onFString,11792950:doStrCat,[])
}
Add(GetDataEx,15503582,413,490)
{
link(Data,11792950:Result,[])
}
Add(GetIndexData,10581033,217,399)
{
Count=6
link(onIndex,2790909:doValue,[])
link(Data2,10151347:Array,[])
link(Data3,5709642:Array,[(237,334)(279,334)])
link(Data5,13816779:Array,[(251,341)(328,341)])
link(Data6,12743108:Array,[(258,348)(377,348)])
}
Add(IndexToChanel,6178369,665,399)
{
Count=3
link(onEvent2,11227433:doSaveToStream,[])
link(onEvent3,7264878:doClear,[(711,419)(711,447)])
}
Add(Clipboard,2176761,875,406)
{
Unicode=0
}
Add(Convertor,3193568,791,406)
{
Mode=11
link(onResult,16732001:doWork2,[])
}
Add(MST_Save,11227433,721,399)
{
Delimiter="\t"
SaveColProp=1
MSTControl="excel"
link(onSaveToStream,3193568:doConvert,[])
}
Add(MST_Clear,7264878,721,441)
{
ClearAll=0
MSTControl="excel"
}
Add(DoData,9181073,798,532)
{
Data=String()
link(onEventData,16732001:doWork3,[(851,538)])
}
Add(HubEx,16732001,847,406)
{
link(onEvent,2176761:doPutText,[])
}
Add(Hub,7434029,98,385)
{
OutCount=5
link(onEvent1,12754501:In,[(123,391)(123,370)])
link(onEvent2,4153299:doWork,[])
link(onEvent3,10581033:doIndex,[])
link(onEvent4,6819062:doEnum,[(207,412)(207,461)])
link(onEvent5,1784739:doWork,[])
}
Add(FileSearch,11463807,511,84)
{
Ext="EXCEL.EXE"
link(onSearch,5712226:doExec,[])
}
Add(EnvVars,7002440,154,63)
{
Point(doEnum)
Point(onEnum)
link(onEnum,14724331:doCompare,[])
}
Add(StrMask,14724331,203,70)
{
Mask="Program*"
link(onTrue,6922651:doSplit,[])
}
Add(StrPart,6922651,259,77)
{
Char="="
Point(Right)
link(onSplit,1036196:doCompare,[])
}
Add(ChangeMon,10732084,364,84)
{
link(onData,14358072:doStrCatDlm,[])
}
Add(StrCatDelim,14358072,413,84)
{
Str2="\Microsoft Office\\root\"
link(onStrCatDlm,14885679:doReplace,[])
}
Add(StrMask,1036196,308,77)
{
Mask="C:\\Program Files*"
link(onTrue,10732084:doData,[])
}
Add(WinExec,5712226,560,84)
{
Param="/automation"
Point(onErrorExec)
link(onExec,1512985:doEnum,[])
}
Add(Replace,14885679,462,84)
{
SubStr="\"
DestStr="\\"
link(onReplace,11463807:doSearch,[])
}
Add(StrMask,9600698,273,455)
{
link(onFalse,11528860:doString,[])
}
Add(StrList,13816779,308,294)
{
Strings=#27:ПОМЕСТИТЬ.В.РАБОЧУЮКНИГУ(1)|16:ВЫДЕЛИТЬ("R1C1")|0:|
}
Add(LineBreak,14597557,364,462)
{
link(Out,11792950:doClear,[])
Primary=[12754501,-224,-98]
}
Add(StrList,12743108,357,294)
{
Strings=#26:СОХРАНИТЬ.КАК("Test.xlsx")|9:сигнал(4)|0:|0:|
}
Add(HubEx,9772588,770,532)
{
link(onEvent,9181073:doData,[])
}
Add(LineBreakEx,4153299,147,392)
{
}
Add(LineBreakEx,3882975,742,581)
{
Type=1
link(OnEvent,9772588:doWork3,[(774,587)])
}
Add(LineBreakEx,1784739,147,413)
{
}
Add(InfoTip,2696688,140,35)
{
Info=#16:Запуск Excel.exe|64:Вместо всего этого можно просто запустить Excel другим способом.|0:|
Width=477
Height=109
}
Add(InfoTip,12600035,182,266)
{
Info=#41:Списки команд для выполнения в Excel |
VAlign=1
HAlign=2
Width=491
Height=95
}

карма: 15

0
Ответов: 698
Рейтинг: 143
#30: 2020-09-29 10:53:00 ЛС | профиль | цитата
Ещё один способ нестандартной передачи данных из Hiasm в Excel.

Add(FindWindow,9431484,322,259)
{
ClassName="XLMAIN"
SkipParam=1
link(onFind,3035978:doFindChild,[])
}
Add(FindWindow,3035978,371,252)
{
ClassName="XLDESK"
SkipParam=1
link(onFind,9555062:doFindChild,[])
}
Add(Hub,13132817,273,259)
{
link(onEvent1,9431484:doFind,[])
link(onEvent2,8986682:doPress,[(312,272)(312,300)])
}
Add(FindWindow,9555062,420,245)
{
ClassName="EXCEL7"
SkipParam=1
link(onFind,12592200:doActive,[])
}
Add(KeyEvent,8986682,420,294)
{
Code=86
Ctrl=1
link(Handle,9555062:Handle,[])
}
Add(MainForm,4844206,63,91)
{
Left=20
Top=105
Width=444
Height=437
Caption="Пример передачи таблицы в/из Excel."
Point(Handle)
Point(onClose)
link(onCreate,9404130:doEvent1,[])
}
Add(WinTools,6027587,63,140)
{
link(Handle,4844206:Handle,[])
}
Add(MTStrTbl,5816951,364,91)
{
Top=115
Width=428
Height=283
Align=5
Name="excel"
Columns=#7:Артикул|8:Название|6:Кол-во|7:Ед.изм.|4:Цена|5:Сумма|0:|
Redaction=0
}
Add(Hub,9404130,119,105)
{
link(onEvent1,5432892:doWork,[])
link(onEvent2,6027587:doPopup,[(144,118)(144,132)(53,132)(53,153)])
}
Add(StrList,13732325,203,56)
{
Strings=#56:23544122;Carbon disc ?44,7/38,3x5,8mm;10;PC;16,92;169,20|56:23544122;Carbon disc ?44,7/38,3x5,8mm;10;PC;16,92;169,20|54:23544122;Carbon disc ?44,7/38,3x5,8mm;2;PC;16,92;33,84|64:21200159;Top part UNIFL3/4 for steel bot.part;25;PC;30,09;752,25|57:24400111;Hose f. pump compl. UNIWASH;153;PC;10,58;1618,74|58:13225;Piston complete for valve UNIWASH3;4;PC;27,09;108,36|60:12200105;Vacuumgauge glycerine ?100mm 3/8";5;PC;40,57;202,85|54:21200141;Thread bush UNIFLOW3 steel;130;PC;1,93;250,90|45:25100146;O-ring ?16,1x1,6mm;175;PC;0,36;63,00|57:21200127;Holder rocking lever, UNIFLOW3;170;PC;0,26;44,20|50:21200131;Rocking lever UNIFLOW3;150;PC;0,89;133,50|65:25200132;Valve button inside UNIFLOW3 steel FA;225;PC;0,72;162,00|61:21200129;Bar closing device UNIFLOW3 steel;225;PC;1,09;245,25|55:25200124;Valve flap outside UNIFLOW3;225;PC;1,56;351,00|60:14400212;Solenoid valve sgl. invensys 230vac;5;PC;8,50;42,50|62:14400213;Solenoid valve dobb. invensys 230vac;5;PC;14,13;70,65|48:21200131;Rocking lever UNIFLOW3;20;PC;0,89;17,80|63:25200132;Valve button inside UNIFLOW3 steel FA;20;PC;0,72;14,40|43:25100146;O-ring ?16,1x1,6mm;20;PC;0,36;7,20|55:21200127;Holder rocking lever, UNIFLOW3;20;PC;0,26;5,20|58:21200130;Bar closing device UNIFLOW3 steel;20;PC;0,34;6,80|58:25200119;Guard bracket UNIFLOW3 steel SBS;20;PC;3,38;67,60|55:13474;Valve flap exterior UNIFLOW3 SBS;20;PC;1,56;31,20|59:26400104;Terminal wheel for lock guide str;20;PC;1,12;22,40|67:25215022;Rubber liner UNIFL. 15022-?22 UNIFLEX FA;96;PC;2,39;229,44|55:14800695;Hose guide f. SAC115 complete;10;PC;9,17;91,70|36:14306;Filter for IDC;20;PC;0,40;8,00|51:25515435;Rubber hose ?27/16 mm - FA;15;M;5,24;78,60|63:13930;Double-action Quickstart II rem. L=740mm;1;PC;98,66;98,66|54:13100201;Spray gun for udder washer;20;PC;17,77;355,40|0:|
}
Add(ArrayEnum,1512985,217,105)
{
link(onItem,7011876:doMTString,[])
link(onEndEnum,4139610:doColAction,[(256,118)(256,146)])
link(Array,13732325:Array,[])
}
Add(MT_String,7011876,266,91)
{
link(onResult,3501424:doRowAction,[])
}
Add(MST_RowAction,3501424,315,91)
{
MSTControl="excel"
}
Add(Menu,11693391,63,217)
{
Menu=#15:Export to Excel|0:|
Point(onSelectNum)
link(onSelectNum,7434029:doEvent1,[])
}
Add(MST_ColAction,4139610,315,140)
{
Action=9
Index=-2
MSTControl="excel"
}
Add(Hub,7434029,119,224)
{
link(onEvent1,4863595:doTabToHTML,[])
link(onEvent2,13132817:doEvent1,[(156,237)(156,265)])
}
Add(MST_HTML,4863595,161,224)
{
TitleText="Передача данных из Hiasm в Excel"
TitleFont=[MS Sans Serif,12,1,0,1]
HeadBorderColor=0
HeadBackColor=12632256
CellsBorderWeight=2
CellsBorderColor=0
CellsColor=1
MSTControl="excel"
link(onTabToHTML,3823625:doPutText,[])
}
Add(Clipboard,3823625,217,224)
{
}
Add(WinTools,12592200,476,231)
{
}
Add(VBJScript,5432892,161,105)
{
@Hint=#16:Query SQL Server|
WorkPoints=#6:doWork|
EventPoints=#6:onLoad|
Script=#25:Dim objExcel, objWorkbook|22:Sub doWork(Data,Index)|52: Set objExcel = CreateObject("Excel.Application")|46: Set objWorkbook = objExcel.Workbooks.Add()|24: objExcel.Visible = True|15: sys.onLoad nil|7:End Sub|0:|
UseName=0
link(onLoad,1512985:doEnum,[])
}


Некоторые пояснения:
1.Убеждён что, с документами MS Office нужно работать через VBJScript (примеров очень много).
2.Стараюсь выкладывать другие способы работы с Excel которые не попадались мне на форуме ранее.
3.Пытаюсь показать, что для решения какой-либо задачи можно использовать очень разные подходы(компоненты).
карма: 15

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)