Что нового

Откртыть книгу Excel в фоне для доступа других книг

roman82101

Новичок
Сообщения
15
Репутация
0
Приветствую всех, не раз меня выручали здесь и вот появилась необходимость опять обратиться к опытным форумчанам.
Нужно открыть книгу через AutoIt так чтоб она была доступна для чтения из других документов Excel. Это как если открыть документ как обычно и свернуть, но желательно чтоб её не было видно и слышно.
Пример в файлах:
"main.xlsx" - просто список, должен находится на С:\ диске потому что этот путь прописан в "second.xlsx"
"second.xlsx" - может находится где угодно и в нём в первой ячейке выпадающий список, прописанный в Данные-Проверка данных, он работает только когда "main.xlsx" открыт
Как нужно открыть "main.xlsx" в AutoIt чтоб "second.xlsx" мог в любое время обратиться к "main.xlsx"
И процесс скрипта тоже должен был в диспетчере задач

Книга всё время в фоне находится не будет, а будет загружаться при появления процесса Excel
Код:
If ProcessList(@ScriptName)[0][0]>1 Then Exit MsgBox(0, 'Внимание', 'Программа уже запущена', 5)
$sFilePath = 'C:\main.xlsx'
If Not FileExists($sFilePath) Then Exit MsgBox(0, 'Ошибка', 'Не найден файл "'&$sFilePath&'"', 10)

While True
    ProcessWait('EXCEL.EXE')
    $iPID = ProcessExists('EXCEL.EXE')
    $oExcelDoc = ObjGet($sFilePath)
    If @error Then Exit MsgBox(0, 'Ошибка', 'Не удалось открыть "'&$sFilePath&'"', 10)
    ;Проверка окна на открытие файла $sFilePath, в нём таблица скрыта
    WinWait('Excel', '', 5)
    $iState = WinGetState('[ACTIVE]', '')
    If $iState = '45' Then $oExcelDoc.Windows(1).Visible = 1 ;Отображение окна в $sFilePath
    ProcessWaitClose($iPID)
    ;Закрытие оставшегося процесса Excel
    $oExcelDoc = ObjGet($sFilePath)
    $oExcelDoc.Close
    ProcessWaitClose('EXCEL.EXE')
WEnd
Из минусов то что каждый раз при закрытии Excel будет запрос на сохранение файла $sFilePath, AutoIt не видит эти окна
И если быстро запускать и закрывать разные документы Excel, то скрипт не успевает отработать до конца, но это для моей ситуации не очень критично
 

Вложения

  • example.zip
    13.1 КБ · Просмотры: 1
Последнее редактирование:

damien2008

Осваивающий
Сообщения
188
Репутация
34
Код:
#include <Excel.au3>
$FilePth = 'C:\main.xlsx'

$oExcel = _Excel_Open(False)
$oWorkbook = _Excel_BookOpen($oExcel, $FilePth, False, False)
$oWorkSheets = _Excel_SheetList($oWorkbook)
If @error Then Exit
ProcessWaitClose('EXCEL.EXE')
 
Автор
roman82101

roman82101

Новичок
Сообщения
15
Репутация
0
Последнее редактирование:
Верх