Вверх ↑
Этот топик читают: Гость
Ответов: 537
Рейтинг: 14
#1: 2018-12-23 16:56:04 ЛС | профиль | цитата
Как автоматически сохранять excel? Сейчас при закрытии программы появляется окошко для сохранения. Нужно чтобы сохранялся excel файл сам без окошка, например по нажатию на кнопку все записи сами сохраняются, но документ не закрывается и с ним можно работать дальше. Так можно сделать?

Add(Button,11796961,238,147)
{
Left=5
Top=10
Width=65
Caption="Open Excel"
link(onClick,420540:doExecute,[])
}
Add(Hub,9982022,336,147)
{
link(onEvent1,10946710:doClear,[(440,153)(440,174)])
link(onEvent2,10692435:doOpen,[(361,160)(361,237)])
}
Add(ODialog,420540,287,147)
{
Filter="Excel(.xls,.xlsx)|*.xls;*.xlsx"
link(onExecute,9982022:doEvent1,[])
}
Add(ComboBox,10946710,448,161)
{
Left=120
Top=10
Width=140
Height=21
Text="Выбрать лист"
DataType=1
Point(doSelect)
link(onClick,10692435:doSheet,[(487,174)(487,223)(368,223)(368,258)])
}
Add(If_else,11782534,392,161)
{
Type=5
Op2=Integer(0)
link(onTrue,10946710:doAdd,[])
link(onFalse,10946710:doSelect,[(436,174)(436,195)])
}
Add(Label,4501845,154,147)
{
Left=75
Top=55
Caption="Row"
}
Add(Label,613563,196,147)
{
Left=135
Top=55
Width=39
Height=17
Caption="Column"
}
Add(Button,8636081,140,238)
{
Left=10
Top=80
Caption="Write"
link(onClick,1368601:doString,[])
}
Add(Edit,663925,154,189)
{
Left=75
Top=80
Text="2"
DataType=2
}
Add(Edit,10420173,196,189)
{
Left=130
Top=80
Text="1"
DataType=2
}
Add(FormatStr,1368601,189,238)
{
DataCount=3
Mask="%1;%2;%3"
link(onFString,10692435:doWrite,[])
link(Str1,663925:Text,[(195,233)(160,233)])
link(Str2,10420173:Text,[])
link(Str3,1087963:Text,[(209,230)(244,230)])
}
Add(VBJScript,10692435,392,231)
{
@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,[(431,237)(431,216)(382,216)(382,167)])
link(onOpen,4742625:doEvent,[])
}
Add(Memo,1087963,238,189)
{
Left=10
Top=115
Width=475
Height=210
ScrollBars=2
}
Add(MainForm,9161318,448,294)
{
Width=507
Height=372
Caption="In_Out_Excel"
Point(onClose)
link(onClose,604810:doCompare,[])
}
Add(LED,1408573,497,245)
{
Left=85
Top=5
}
Add(IndexToChanel,4742625,448,252)
{
link(onEvent1,1408573:doOff,[])
link(onEvent2,1408573:doOn,[])
}
Add(If_else,604810,497,315)
{
Op2=Integer(1)
link(onTrue,10692435:doClose,[(541,321)(541,290)(383,290)(383,272)])
link(Op1,1408573:Value,[])
}
карма: 4

0
Ответов: 8921
Рейтинг: 823
#2: 2018-12-23 18:31:18 ЛС | профиль | цитата
Sersey, или добавить в скрипт точку doSave и обозначить процедуру:

   Case "doSave"
objExcel.Application.Save
но окошка не избежать "А вы уверенны......?"
или в самой книге Excel (можно распространить на все книги) написать макрос на сохранение и вызывать его по имени (см архив) http://forum.hiasm.com/getfile/38557
карма: 19

0
Ответов: 537
Рейтинг: 14
#3: 2018-12-23 19:32:07 ЛС | профиль | цитата
Не работает, появляется ошибка

Add(Button,11796961,273,112)
{
Left=5
Top=10
Width=65
Caption="Open Excel"
link(onClick,420540:doExecute,[])
}
Add(Hub,9982022,371,112)
{
OutCount=3
link(onEvent1,10946710:doClear,[(475,118)(475,139)])
link(onEvent2,10692435:doOpen,[(396,125)(396,202)])
}
Add(ODialog,420540,322,112)
{
Filter="Excel(.xls,.xlsx)|*.xls;*.xlsx"
link(onExecute,9982022:doEvent1,[])
}
Add(ComboBox,10946710,483,126)
{
Left=120
Top=10
Width=140
Height=21
Text="Выбрать лист"
DataType=1
Point(doSelect)
link(onClick,10692435:doSheet,[(522,139)(522,188)(403,188)(403,223)])
}
Add(If_else,11782534,427,126)
{
Type=5
Op2=Integer(0)
link(onTrue,10946710:doAdd,[])
link(onFalse,10946710:doSelect,[(471,139)(471,160)])
}
Add(Label,4501845,189,112)
{
Left=75
Top=55
Caption="Row"
}
Add(Label,613563,231,112)
{
Left=135
Top=55
Width=39
Height=17
Caption="Column"
}
Add(Button,8636081,175,203)
{
Left=10
Top=80
Caption="Write"
link(onClick,1368601:doString,[])
}
Add(Edit,663925,189,154)
{
Left=75
Top=80
Text="2"
DataType=2
}
Add(Edit,10420173,231,154)
{
Left=130
Top=80
Text="1"
DataType=2
}
Add(FormatStr,1368601,224,203)
{
DataCount=3
Mask="%1;%2;%3"
link(onFString,10692435:doWrite,[])
link(Str1,663925:Text,[(230,198)(195,198)])
link(Str2,10420173:Text,[])
link(Str3,1087963:Text,[(244,195)(279,195)])
}
Add(VBJScript,10692435,427,196)
{
@Hint=#16:Query SQL Server|
WorkPoints=#6:doOpen|7:doWrite|6:doRead|7:doSheet|7:doMacro|6:doSave|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) |18: 'sys.onMacro 1|16: Case "doSave"|29: objExcel.Application.Save|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,[(466,202)(466,181)(417,181)(417,132)])
link(onOpen,4742625:doEvent,[])
}
Add(Memo,1087963,273,154)
{
Left=10
Top=115
Width=475
Height=210
ScrollBars=2
}
Add(MainForm,9161318,483,259)
{
Width=507
Height=372
Caption="In_Out_Excel"
Point(onClose)
link(onClose,604810:doCompare,[])
}
Add(LED,1408573,532,210)
{
Left=85
Top=5
}
Add(IndexToChanel,4742625,483,217)
{
link(onEvent1,1408573:doOff,[])
link(onEvent2,1408573:doOn,[])
}
Add(If_else,604810,532,280)
{
Op2=Integer(1)
link(onTrue,10692435:doClose,[(576,286)(576,265)(415,265)(415,244)])
link(Op1,1408573:Value,[])
}
Add(Button,3478469,322,231)
{
Left=190
Top=80
Caption="Save"
link(onClick,10692435:doSave,[])
}

карма: 4

0
Ответов: 8921
Рейтинг: 823
#4: 2018-12-23 20:44:27 ЛС | профиль | цитата
Sersey, Excel 2003 г, SP3
РаботаетБезОшибки.jpg
карма: 19

0
Ответов: 537
Рейтинг: 14
#5: 2018-12-23 21:23:05 ЛС | профиль | цитата
Когда нажимаю кнопу Save
Такая ошибка
Запись в файл .xlsx и .xls

Редактировалось 2 раз(а), последний 2018-12-23 22:57:22
карма: 4

0
Ответов: 8921
Рейтинг: 823
#6: 2018-12-23 23:21:14 ЛС | профиль | цитата
Sersey, может с администрированием не порядок? Я ведь вашу последнюю схему запускал, работает
карма: 19

0
Ответов: 537
Рейтинг: 14
#7: 2018-12-24 00:41:51 ЛС | профиль | цитата
У меня установлен Microsoft Office 2013 SP1 Standard все отлично работает, но при закрытии программы с вашим скриптом процесс excel.exe не всегда закрывается, чаще остается и окошко сохранения не всегда появляется при закрытии программы, потом нажимаю на файл excel и он спрашивает о сохранении.
карма: 4

0
Ответов: 8921
Рейтинг: 823
#8: 2018-12-24 10:19:33 ЛС | профиль | цитата
Sersey, версии от 2013 г. у меня нет Остаётся только по шинам постучать и фары тряпочкой протереть, а если не поможет, то коллегу andrestudio звать, он более нас разбирается в VB
карма: 19

0
Ответов: 537
Рейтинг: 14
#9: 2018-12-24 18:08:10 ЛС | профиль | цитата
Так причем тут офис http://nnm-club.me/forum/viewtopic.php?t=1200759 andrestudio посмотрите скрипт

Редактировалось 1 раз(а), последний 2018-12-24 18:09:27
карма: 4

0
Ответов: 5227
Рейтинг: 587
#10: 2018-12-24 18:59:05 ЛС | профиль | цитата
Sersey, на ресурс меня не пускает. У меня vbjscript перепилен изрядно (и ещё ждёт своей доработки) Обычно большинство вопросов уже решаемо на сером форуме http://forum.script-coding.com
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Ответов: 537
Рейтинг: 14
#11: 2018-12-24 19:15:43 ЛС | профиль | цитата
Мне нужно иметь возможность сохранять длинный текст с переводом строк в файл .xslx, с помощью вашего скрипта весь текст вставляется в ячейку файла excel, но есть проблемы с сохранением. Знаете другой рабочий способ вставить длинный текст в excel файл, а не только 255 символов ?
карма: 4

0
Ответов: 5227
Рейтинг: 587
#12: 2018-12-24 19:34:00 ЛС | профиль | цитата
Sersey, навряд ли это мой скрипт. Как помню вроде есть метод SaveAs там с любым расширен им который поддерживает экспорт, в современных и в PDF может. В любом случае мой vbjscript избавлен от анахронизма где методы нужно выстраивать с помощью Select Case всё как в обычном IC только
Sub doName(dt,idx)
....
End Sub
По сему даже твой скрипт запустить не смогу.
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Ответов: 537
Рейтинг: 14
#13: 2018-12-24 19:55:53 ЛС | профиль | цитата
Тут вот в чем дело. Если например открыть в хайясме файл .xlsx с помощью sqlite3.dll то очень быстро открывается, но опять есть "но". Делаю парсер у меня на компе все отлично открывается, а на win 10, совсем не работает пока не переустановлю программу excel, вот драйвера все есть, а не работает совсем. В общем косяки в двух случаях. Нужна хорошая система, например отдельно открыть файл в хайясме, а потом другая система сохранить с длинным текстом без обрезки в 255 символов. 255 символов это я как понял проблема файлов .xls а как с помощью sqlite3.dll сохранить в .xlsx?
Вот открытие файла и то бывает runtime error, один файл нормально открывает, а другой runtime error и прога закрывается. На этом компе win7 32, процессор современный и оператива 4 Гб

Add(MainForm,2953706,21,105)
{
Width=659
Height=610
}
Add(ChildPanel,6304782,280,105)
{
}
BEGIN_SDK
Add(EditMulti,13873045,21,21)
{
EventCount=2
WorkCount=1
Width=664
Height=417
link(doWork1,2108518:doEvent1,[(37,27)(37,202)])
}
Add(Panel,14000364,63,28)
{
Width=643
Height=73
Align=2
Visible=1
Layout="parent.vert"
}
Add(FormatStr,15762674,385,119)
{
Mask="Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};\r\nDriverID=22;\r\nDBQ=%1;\r\nDefaultDir=%2;\r\nFirstRowWhasNames=1;\r\nReadOnly=true;\r\nScanRows=0;"
Point(FString)
link(Str2,16353759:Var2,[])
AddHint(44,-31,187,104,Mask)
}
Add(OLEdb,3042347,245,266)
{
Point(onError)
link(onConnect,15799951:doCreate,[])
link(Driver,15762674:FString,[(251,186)(391,186)])
link(onError,9853256:doWork2,[(291,279)(291,307)])
}
Add(OLEdb_Session,15799951,308,266)
{
Point(onError)
link(onError,9853256:doWork1,[(352,279)])
}
Add(FormatStr,5978579,490,273)
{
Mask="SELECT * FROM "%2"."%1$A1:BH" "%1$";"
Point(FString)
link(onFString,6949883:doQuery,[(538,279)(538,316)(296,316)(296,377)])
link(Str2,16353759:Var3,[(503,103)])
AddHint(-15,-62,191,26,Mask)
}
Add(VBJScript,345803,385,210)
{
@Hint=#16:Query SQL Server|
WorkPoints=#6:doOpen|7:doSheet|7:doClose|
EventPoints=#8:onSheets|6:onOpen|
Script=#9:Dim strIn|5:Dim i|5:Dim j|12:Dim objExcel|11:Dim onExcel|0:|22:Sub doWork(Data,Index)|18: Select Case Index|15: Case "doOpen"|52: Set objExcel = CreateObject("Excel.Application")|52: Set objWorkbook = objExcel.Workbooks.Open (Data)|71: j = objWorkbook.Sheets.Count 'Узнаём количество листов|88: For i=1 To j 'Листы начинаются не с "0", а с "1" |86: strIn = objWorkbook.Sheets(i).Name 'Узнаём имя очередного листа |65: sys.onSheets strIn 'Выводим имя наружу|9: Next|17: sys.onOpen 1 |94: 'Case "doSheet" 'На вход подаётся строка, содержащая имя Листа|33: 'objExcel.Sheets(Data).Select|38: 'objExcel.ActiveSheet.Cells.Select|43: 'objExcel.Selection.NumberFormat = "@" |39: 'objExcel.ActiveWorkbook.Save() |17: Case "doClose"|17: objExcel.Quit|26: Set objExcel = Nothing|17: sys.onOpen 0 |0:|11: End Select|0:|7:End Sub|
UseName=0
link(onSheets,578465:doData,[])
}
Add(Hub,45852,350,203)
{
OutCount=3
link(onEvent1,15762674:doString,[(374,209)(374,125)])
link(onEvent2,345803:doOpen,[])
link(onEvent3,345803:doClose,[(374,223)(374,230)])
}
Add(Hub,11410566,140,203)
{
OutCount=3
link(onEvent1,45852:doEvent1,[])
link(onEvent2,3042347:doOpen,[(200,216)(200,272)])
link(onEvent3,15734214:doData,[(294,223)(294,279)])
}
Add(LineBreakEx,15642429,371,301)
{
Caption="error"
}
Add(HubEx,9853256,348,301)
{
link(onEvent,15642429:doWork,[])
}
Add(LineBreakEx,8833105,567,21)
{
Caption="error"
Type=1
link(OnEvent,5569768:doWork2,[])
}
Add(EventFromData,578465,434,210)
{
}
Add(Hub,2108518,105,196)
{
link(onEvent1,9780797:doData,[(255,202)(255,62)])
link(onEvent2,11410566:doEvent1,[])
}
Add(EventFromData,9780797,392,56)
{
}
Add(DoData,15734214,434,273)
{
link(onEventData,5978579:doString,[])
link(Data,578465:GetData,[])
}
Add(OLEdb_Query,6949883,308,371)
{
link(onQuery,10195882:doEvent1,[(352,377)(352,363)])
link(onColumns,2369042:doAddCols,[])
link(onError,5569768:doWork3,[(627,391)])
link(dbSession,15799951:dbSession,[])
link(Text,5978579:FString,[(321,320)(496,320)])
}
Add(MST_DB,2369042,413,371)
{
MSTControl="parent.tabl_1"
}
Add(HubEx,5569768,623,21)
{
link(onEvent,13873045:onEvent1,[])
}
Add(GetDataEx,16353759,392,98)
{
link(Data,9780797:GetData,[])
}
Add(Hub,10195882,364,357)
{
OutCount=3
link(onEvent1,9261340:doStopAll,[(396,363)(396,356)])
link(onEvent2,9261340:doTimer,[(396,370)(396,342)])
link(onEvent3,2369042:doAddRow,[])
}
Add(Timer,9261340,413,336)
{
Interval=1500
Enable=1
AutoStop=1
Point(doStopAll)
link(onTimer,13873045:onEvent2,[(565,342)(565,34)])
}
END_SDK
Add(ODialog,1063971,182,105)
{
Filter="Microsoft Excel (.xls,.xlsx)|*.xls;*.xlsx"
Title="Выбрать файл"
FileName=""
Select=1
link(onExecute,11002347:doText,[])
}
Add(MTStrTbl,4101435,77,105)
{
Top=73
Width=604
Height=495
Name="tabl_1"
}
Add(Button,15935873,133,105)
{
Left=5
Top=5
Width=95
Height=40
Font=[MS Sans Serif,10,1,0,1]
Hint="Выберите файл excel для конвертирования"
Caption="Открыть"
link(onClick,1063971:doExecute,[])
}
Add(Edit,11002347,231,105)
{
Left=105
Top=5
Width=430
Text=""
link(onChange,6304782:doWork1,[])
}

карма: 4

0
Ответов: 537
Рейтинг: 14
#14: 2018-12-25 00:04:57 ЛС | профиль | цитата
Вот реальный вопрос, как можно средствами хайясм загрузить файл .xlsx а потом сохранить. И еще не поддерживаемая кодировка unicode, про браузер уже молчу, сам придумал, сейчас он даже лучще, например скролл и полный текст страницы получает еще быстрее примерно четверть секунды. Сейчас многие сайты переходят на прокрутку для сайтов, вот прокрутил ниже и загрузилось, яша тот вообще сделал код, например наводишь мишкой, можешь html узнать, мышка в другом фокусе и код другой. Так вот IЁ уже не катит, загружается одна страница и берет непонятно почему 100 Мб оперативной памяти жрет и страница следующая опять добавляет эти Мб и через несколько страниц оператива заканчивается. Так я пользуюсь теперь только своим браузером, который смог приручить
карма: 4

0
Ответов: 537
Рейтинг: 14
#15: 2020-09-07 22:15:44 ЛС | профиль | цитата
Опять нужно сохранить файл без окошка, раньше так и не решили. Так сейчас когда закрываю Excel файл после записи, появляется окно с сохранением и пишет, что сохраняет как копия документа, я так понял, тот что открыт занят процессом, ведь я документ закрываю, какого эти окна. Сделал программу, она открывает определенную вкладку в файле .xlsx, записывает данные и закрывает, нужно как то сохранить то, что записано желательно без окон с вопросами.
Вот код взятый тут на форуме, как его дописать чтобы сохранялось при закрытии документа без лишних вопросов без ошибок которые появляются как я писал выше?
Тесты делал на системе win10 64bit, установлен Excel 2016
Dim strIn
Dim strOut
Dim NumRow
Dim NumCol
Dim i
Dim j
Dim objExcel

Sub doWork(Data,Index)
Select Case Index
Case "doOpen" 'На вход подаётся строка, содержащая полный путь к файлу
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open (Data)
For i=1 To objWorkbook.Sheets.Count 'Листы начинаются не с "0", а с "1"
sys.onShet objWorkbook.Sheets(i).Name 'Выводим имя наружу
Next
'j=objWorkbook.macro.Count 'Узнаём количество макросов
' For i=1 To j 'Нумерация начинаются не с "0", а с "1"
' strIn = objWorkbook.macro(i).Name 'Узнаём имя очередного макроса
' sys.onMacro strIn 'Выводим имя наружу
' Next
sys.onShet 0
sys.onOpen 1
Case "doRead" 'На вход подаётся строка, содержащая (разделитель -- точка с запятой): НомерСтроки;НомерКолонки;
strIn = CStr(Data)
i = InStr(1,strIn,";",0)
NumRow = CLng(Mid(strIn, 1, i-1))
NumCol = CLng(Mid(strIn,i+1))
strOut = objExcel.ActiveSheet.Cells(NumRow, NumCol).Value
sys.onCells strOut
Case "doWrite" 'На вход подаётся строка, содержащая (разделитель -- точка с запятой): НомерСтроки;НомерКолонки;ЗаписываемоеЗначение
strIn = CStr(Data)
i = InStr(1,strIn,";",0)
NumRow = CLng(Mid(strIn, 1, i-1))
j = InStr(i+1,strIn,";",0)
NumCol = CLng(Mid(strIn, i+1, j-i-1))
strIn = Mid(strIn, j+1)
objExcel.ActiveSheet.Cells(NumRow, NumCol).Value=strIn
Case "doSheet" 'На вход подаётся строка, содержащая имя Листа
objExcel.Sheets(Data).Select
objExcel.ActiveSheet.Cells(1, 1).Select
Case "doMacro" 'На вход подаётся строка, содержащая имя Макроса
objExcel.Application.Run (Data)
'sys.onMacro 1
Case "doClose"
On Error Resume Next
objExcel.Quit
Set objExcel = Nothing
sys.onOpen 0
On Error Goto 0
End Select

End Sub
Задача следующая: программа парсит данные с сайта и записывает в excel файл, этот файл имеет расширение .xlsx, в нем много страниц, нужно записать данные лишь в одну из них, все сделал, записывается, нужно сохранять автономно и чтобы сохраняла программа сама, не важно на каком виндовсе. Программа будет работать на сервере, там стоит windows server 2008 r2 и
Microsoft Word 2007, программа также должна сохранять сама и на win7 и win10, потому как на ноуте win7, а на стационарном ПК WIN10. Наверное это возможно, ведь на всех выше перечисленных системах скрипт записывает и сохраняет, только окошки немного разные при сохранении файла. Основное ведь работает, может поможете, так ведь ни какой автономности, нужно все вручную сохранять

Редактировалось 1 раз(а), последний 2020-09-07 22:41:04
карма: 4

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