Вверх ↑
Ответов: 537
Рейтинг: 14
#1: 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. Наверное это возможно, ведь на всех выше перечисленных системах скрипт записывает и сохраняет, только окошки немного разные при сохранении файла. Основное ведь работает, может поможете, так ведь ни какой автономности, нужно все вручную сохранять
карма: 4

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