Add(VBJScript,11962879,115,105) { WorkPoints=#6:doOpen|7:doWrite|6:doRead|7:doClose| EventPoints=#6:onData|7:onData1| DataPoints=#5:Data1|5:Data2|5:Data3|5:Data4| Script=#15:Option Explicit|37:\\\'Глобальные переменные в этом скрипте|77:Dim Datas1 \\\'Объявляем переменную для № Строки.|78:Dim Datas2 \\\'Объявляем переменную для № Столбца.|83:Dim Datas3 \\\'Объявляем переменную для записи в Excel.|87:Dim Datas4 \\\'Объявляем переменную для Пути к книге Excel.|84:Dim xlReadData \\\'Объявляем переменную для чтения из Excel.|93:Dim xlApp \\\'Объявляем объектную переменную для открытия Excel.|99:Dim xlBook \\\'Объявляем объектную переменную для открытия книги Excel.|0:|27:Function doWork(Data,Index)|0:|78: Datas1 = Sys.Data1 \\\'Читаем с верхней точки № строки.|79: Datas2 = Sys.Data2 \\\'Читаем с верхней точки № столбца.|76: Datas3 = Sys.Data3 \\\'Читаем с верхней точки данные.|0:|18: Select Case Index|9: Case 0|23: Datas4 = Sys.Data4|41: Datas4 = Datas4 & \\\"BankExtracts.xls\\\"|91: Set xlBook = GetObject(Datas4) \\\'Вот так соединяемся с открытой книгой Excel.|74: xlBook.Worksheets(\\\"Extracts\\\").Activate \\\'Активируем выбранный лист. |74: Case 1 \\\'Записываем данные в ячейку.|58: xlBook.ActiveSheet.Cells(Datas1,Datas2).Value = Datas3|22: Sys.onData1 Datas2|8: Case 2|80: xlReadData = xlBook.ActiveSheet.Cells(Datas1,Datas2).Value \\\'Читаем ячейку.|28: Sys.onData xlReadData |8: Case 3|80: xlBook.Save \\\'Сохраняем открытую книгу.|130: Set xlBook = Nothing \\\'Очищаем объектную переменную. \\\' --\\\"--|0:|11: End Select|12:End Function| } Add(VBJScript,3516279,182,105) { WorkPoints=#6:doOpen|7:doSheet|7:doWrite|14:doWriteAddress|11:doWriteData|6:doRead|7:doClose|8:doMacros| EventPoints=#6:onData|7:onData1|7:onError| VarPoints=#7:VarData|8:VarArray| DataPoints=#5:Data1|5:Data2|5:Data3|5:Data4|5:Data5|5:Data6|7:Visible| Script=#15:Option Explicit|37:\\\'Глобальные переменные в этом скрипте|80:Dim Datas1 \\\'FullFileName Объявляем переменную путь и имя файла.|80:Dim Datas2 \\\'Sheet Объявляем переменную имя листа.|80:Dim Datas3 \\\'WriteData Объявляем переменную для записи в Excel.|80:Dim Datas4 \\\'Row Объявляем переменную строка.|80:Dim Datas5 \\\'Column Объявляем переменную столбец.|80:Dim Datas6 \\\'Объявляем переменную Имя Макроса.|80:Dim xlVisible \\\'Объявляем переменную видимость.|80:Dim xlReadData \\\'Объявляем переменную для чтения из Excel.|80:Dim xlReadArray \\\'Объявляем переменную для чтения массива.|80:Dim xlBook \\\'Объявляем объектную переменную для открытия книги Excel.|80:Dim FSO \\\'Объявляем объектную переменную для проверки открываемого файла.|0:|27:Function doWork(Data,Index)|0:|80: Datas1 = Sys.Data1 \\\'Читаем с верхней точки путь и имя файла.|80: Datas2 = Sys.Data2 \\\'Читаем с верхней точки имя листа.|80: Datas3 = Sys.Data3 \\\'Читаем с верхней точки имя данные.|80: Datas4 = Sys.Data4 \\\'Читаем с верхней точки № строки.|80: Datas5 = Sys.Data5 \\\'Читаем с верхней точки № столбца.|80: Datas6 = Sys.Data6 \\\'Читаем с верхней точки имя макроса.|80: xlVisible = Sys.Visible \\\'Читаем с верхней точки признак видимости Excel.|0:|18: Select Case Index|80: Case \\\"doWrite\\\" \\\'Адрес и данные берутся с верхних точек.|58: xlBook.ActiveSheet.Cells(Datas4,Datas5).Value = Datas3|17: xlReadData=\\\"\\\"|15: Case \\\"doRead\\\"|80: \\\'Устанавливаем Адрес ячейки по идеологии HiAsm: сначала сверху.|36: If Datas4>=1 And Datas5>=1 Then|80: xlReadData = xlBook.ActiveSheet.Cells(Datas4,Datas5).Value \\\'Читаем ячейку.|0:|80: Else \\\'Затем устанавливаем Адрес ячейки из потока слева.|34: If Data=\\\"\\\" Or Data=NULL Then|80: \\\'Если нет никакого адреса: выдаём пустую строку.|22: xlReadData =\\\"\\\"|0:|80: Else \\\'У меня VBScript принимает Число только с запятой,|80: Data = Replace(CStr(Data),\\\".\\\",\\\",\\\") \\\'поэтому меняем точки на запятые.|19: Dim xlinStr|79: xlinStr=inStr(Data, \\\":\\\") \\\'Ищем разделитель и|80: If xlinStr=0 Then \\\'проверяем, не Массив-ли это.|27: Data=CDbl(Data)|79: Datas4=Int(Data) \\\'Превращаем Real число в № строки|80: Datas5=CInt((Data-Datas4)*1000) \\\'и № столбца.|87: xlReadData = xlBook.ActiveSheet.Cells(Datas4,Datas5).Value \\\'Читаем ячейку.|0:|80: Else \\\'Ура-а, это массив!|80: xlReadArray = \\\"\\\" \\\'Сбрасываем предыдущий массив.|17: Dim I|17: Dim J|21: Dim xlLen|22: Dim xlData|21: Dim xlRow|22: Dim xlColm|27: xlLen=Len(Data)|40: xlData=Left(Data, xlinStr-1)|31: xlData=CDbl(xlData)|79: Datas4=Int(xlData) \\\'Превращаем Real число в № строки|80: Datas5=CInt((xlData-Datas4)*1000) \\\'и № столбца начало массива.|45: xlData=Right(Data, xlLen-xlinStr)|31: xlData=CDbl(xlData)|79: xlRow=Int(xlData) \\\'Превращаем Real число в № строки|80: xlColm=CInt((xlData-xlRow)*1000) \\\'и № столбца окончания массива.|79: If Datas4 =< xlRow And Datas5 =< xlColm Then \\\'Границы массива|79: For I = Datas4 To xlRow \\\'определены.|79: For J = Datas5 To xlColm \\\'Читаем ячейку и|80: \\\'присоединяем разделитель \\\";\\\".|91: xlReadArray = xlReadArray & xlBook.ActiveSheet.Cells(I, J).Value & \\\";\\\"|21: Next|79: xlReadArray = xlReadArray & vbCrLf \\\'Присоединяем символы|80: Next \\\'окончания строки.|0:|61: ElseIf Datas4 =< xlRow And Datas5 > xlColm Then|80: \\\'Правая граница не задана: читаем строки до первой пустой ячейки.|31: xlColm = Datas5|39: For I = Datas4 To xlRow|99: Do While (Not IsEmpty(xlBook.ActiveSheet.Cells(I, xlColm).Value) Or xlColm >256)|80: \\\'Читаем ячейку и присоединяем разделитель \\\";\\\".|95: xlReadArray = xlReadArray & xlBook.ActiveSheet.Cells(I, xlColm).Value & \\\";\\\"|39: xlColm = xlColm + 1|23: Loop|52: xlReadArray = xlReadArray & vbCrLf|33: xlColm = Datas5|20: Next|0:|61: ElseIf Datas4 > xlRow And Datas5 =< xlColm Then|80: \\\'Нижняя граница не задана: читаем столбцы до первой пустой ячейки.|26: J = Datas5|30: xlRow = Datas4|96: Do While (Not IsEmpty(xlBook.ActiveSheet.Cells(xlRow, J).Value) Or xlRow >65536)|43: For J = Datas5 To xlColm|95: xlReadArray = xlReadArray & xlBook.ActiveSheet.Cells(xlRow, J).Value & \\\";\\\"|23: Next|52: xlReadArray = xlReadArray & vbCrLf|35: xlRow = xlRow + 1|28: J = Datas5|20: Loop|0:|60: ElseIf Datas4 > xlRow And Datas5 > xlColm Then|80:\\\'Границы массива не определены: читаем столбцы и строки до первой пустой ячейки.|29: xlRow = Datas4|30: xlColm = Datas5|102: Do While (Not IsEmpty(xlBook.ActiveSheet.Cells(xlRow, Datas5).Value) Or xlRow >65536)|103: Do While (Not IsEmpty(xlBook.ActiveSheet.Cells(xlRow, xlColm).Value) Or xlColm >256)|99: xlReadArray = xlReadArray & xlBook.ActiveSheet.Cells(xlRow, xlColm).Value & \\\";\\\"|39: xlColm = xlColm + 1|23: Loop|52: xlReadArray = xlReadArray & vbCrLf|33: xlColm = Datas5|35: xlRow = xlRow + 1|21: Loop|0:|80: Else \\\'Адреса странные, выдаём пустую строку.|32: xlReadArray = \\\"\\\"|20: End If|27: xlReadData = \\\"\\\"|16: End If|12: End If|80: Sys.onData1 xlReadArray \\\'Выдаём массив в поток на правую точку.|10: End If|0:|80: Case \\\"doWriteAddress\\\" \\\'Адрес и сверху и из потока слева, данные только сверху.|79: If Datas4<1 Or Datas5<1 Then \\\'Устанавливаем адрес|80: Data=CDbl(Data) \\\'согласно идеологии HiAsm.|79: Datas4=Int(Data) \\\'Превращаем Real число в № строки|124: Datas5=CInt((Data-Datas4)*1000) \\\'и № столбца. \\\'|10: End If|60: xlBook.ActiveSheet.Cells(Datas4,Datas5).Value = Datas3|19: xlReadData=\\\"\\\"|0:|80: Case \\\"doWriteData\\\" \\\'Данные и сверху и из потока слева, адрес только сверху.|79: If Datas3=\\\"\\\" Or Datas3=NULL Then \\\'Устанавливаем данные|80: Datas3=Data \\\'согласно идеологии HiAsm.|10: End If|60: xlBook.ActiveSheet.Cells(Datas4,Datas5).Value = Datas3|19: xlReadData=\\\"\\\"|0:|16: Case \\\"doSheet\\\"|79: If Datas2=\\\"\\\" Or Datas2=NULL Then \\\'Устанавливаем данные|79: Datas2=Data \\\'согласно идеологии HiAsm.|10: End If|36: If Datas2=\\\"\\\" Or Datas2=NULL Then|79: Datas2=\\\"Лист1\\\" \\\'По умолчанию выбираем Лист1.|10: End If|80: xlBook.Worksheets(Datas2).Activate \\\'Активируем выбранный лист.|17: xlReadData=\\\"\\\"|0:|16: Case \\\"doMacros\\\"|79: If Datas6=\\\"\\\" Or Datas6=NULL Then \\\'Устанавливаем имя макроса|80: Datas6=Data \\\'согласно идеологии HiAsm.|10: End If|36: If Datas6=\\\"\\\" Or Datas6=NULL Then|34: MsgBox \\\"Нет имени макроса!\\\"|8: Else|80: xlBook.Application.Run Datas6 \\\'Запускаем макрос.|10: End If|15: Case \\\"doOpen\\\"|79: If Datas1=\\\"\\\" Or Datas1=NULL Then \\\'Устанавливаем данные|80: Datas1=Data \\\'согласно идеологии HiAsm.|9: End If|35: If Datas1=\\\"\\\" Or Datas1=NULL Then|80: Set xlBook = CreateObject(\\\"Excel.Sheet\\\") \\\'По умолчанию создаём книгу Excel.|7: Else|58: Set FSO = CreateObject(\\\"Scripting.FileSystemObject\\\") \\\'|11: Dim Ext|32: Ext = GetAnExtension(Datas1)|31: If LCase(Ext) = \\\"xls\\\" Then|75: \\\'--------------------------------------------------------------------|80: Set xlBook = GetObject(Datas1)\\\'Вот так открываем существуюшую книгу Excel.|75: \\\'--------------------------------------------------------------------|79: \\\'Set xlBook = CreateObject(\\\"Excel.Application\\\") \\\'Или|79: \\\'xlBook.WorkBooks.Open Datas1 \\\'так|75: \\\'--------------------------------------------------------------------|9: Else|35: MsgBox \\\"Это не книга Excel!\\\"|11: End If|9: End If|79: xlVisible = Sys.Visible \\\'Читаем признак видимости|79: If (xlVisible=\\\"0\\\" Or xlVisible=\\\"False\\\") Then \\\'с верхней точки и|80: xlVisible=False \\\'корректируем его.|9: Else|21: xlVisible=True|11: End If|80: xlBook.Application.Visible = xlVisible \\\'Делаем Excel (не)видимым.|47: xlBook.Parent.Windows(1).Visible = xlVisible|16: xlReadData=\\\"\\\"|16: Case \\\"doClose\\\"|80: xlBook.Application.Visible =True \\\'Делаем Excel видимым перед закрытием.|42: xlBook.Parent.Windows(1).Visible = True|80: xlBook.Save \\\'Сохраняем открытую книгу.|80: xlBook.Application.Quit \\\'Выходим из Excel.|80: Set xlBook = Nothing \\\'Очищаем объектную переменную.|71: Set FSO = Nothing \\\' --\\\"--|0:|11: End Select|0:|80: Sys.onData xlReadData \\\'Выдаём данные в поток на правую точку.|12:End Function|80:\\\'-------------------------------------------------------------------------------|80:Function GetVar(Data,Index) \\\'Выдаём данные на нижние точки.|20: Select Case Index|17: Case \\\"VarData\\\"|22: GetVar=xlReadData|18: Case \\\"VarArray\\\"|23: GetVar=xlReadArray|13: End Select|12:End Function|80:\\\'-------------------------------------------------------------------------------|80:Function GetAnExtension(FileSpec) \\\'Определяем расширение файла (ищем *.xls).|23: On Error Resume Next|50: GetAnExtens