Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Запуск файлов и их сохранение

Ответить
Настройки темы
Запуск файлов и их сохранение

Аватара для Pozia

Ветеран


Сообщения: 2756
Благодарности: 211

Профиль | Отправить PM | Цитировать


Суть в следующем. Есть папка с кучей файлов excel. Мне необходимо чтобы скрипт, находясь в папке на уровень выше, запустил все файлы excel в указанной папке, и просто их сохранил и закрыл. И так по порядку все файлы. Имена файлов произвольны и количество тоже. Спасибо.

-------
Жизни вглядись в глаза: Это то, что ты всегда искал? Это то, что ты всегда хотел? Да или нет?


Отправлено: 23:28, 16-06-2010

 

Аватара для kaster

Старожил


Сообщения: 367
Благодарности: 91

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
#include <file.au3>
$sTarFolder = 'Excel'; Название папки с Excel файлами
$sTarPath = @ScriptDir & '\' & $sTarFolder
$aExcelFiles = _FileListToArray($sTarPath, '*.xls', 1); Фильтр на файлы xls. Если формат *.xlsx то ставим соответствующий фильтр
For $i = 1 to $aExcelFiles[0]
	$sFile = $sTarPath & '\' & $aExcelFiles[$i]
	$oExcel = ObjCreate('Excel.Application'); Запускаем экземпляр Excel
	$oExcel.WorkBooks.Open($sFile); Открываем файл Excel'ем
	$oExcel.ActiveWorkBook.Save; Сохраняем файл
	$oExcel.Application.Quit; Выходим из Excel
	$oExcel = 0; Освобождаем переменную
Next

-------
Русское сообщество пользователей AutoIt
autoit@conference.jabber.ru - Конференция на jabber.ru

Это сообщение посчитали полезным следующие участники:

Отправлено: 00:52, 17-06-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для FlatX007

Ветеран


Сообщения: 553
Благодарности: 87

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
;~  AutoIt Version: 3.3.6.0

#include <Excel.au3>

OnAutoItExitRegister('_ExitScr')

Global $DIR_LOAD_FILE = @ScriptDir & '\Xls'
Global $DIR_SAVE_FILE = @ScriptDir & '\Save'
DirCreate($DIR_SAVE_FILE)

$iSearch = FileFindFirstFile($DIR_LOAD_FILE & '\*.xls')
If (@error) Then Exit

While 1

    $iFile = FileFindNextFile($iSearch)
    If @error Then ExitLoop
    ConsoleWrite($DIR_LOAD_FILE & '\' & $iFile & @CRLF)
    $oExcel = _ExcelBookOpen($DIR_LOAD_FILE & '\' & $iFile)
    If Not (@error) Then _ExcelBookSaveAs($oExcel, $DIR_SAVE_FILE & '\' & $iFile, 'xls')
    _ExcelBookClose($oExcel)

WEnd

Func _ExitScr()

    FileClose($iSearch)

EndFunc   ;==>_ExitScr
Это сообщение посчитали полезным следующие участники:

Отправлено: 00:53, 17-06-2010 | #3


Аватара для Pozia

Ветеран


Сообщения: 2756
Благодарности: 211

Профиль | Отправить PM | Цитировать


kaster, а как еще сделать чтобы скрипт нажимал кнопку "Обновить", которая возникает при запуске файла? Фото прилагаю

-------
Жизни вглядись в глаза: Это то, что ты всегда искал? Это то, что ты всегда хотел? Да или нет?


Последний раз редактировалось Pozia, 22-11-2010 в 23:28.


Отправлено: 20:02, 17-06-2010 | #4


Аватара для kaster

Старожил


Сообщения: 367
Благодарности: 91

Профиль | Отправить PM | Цитировать


Попробуй так
Код: Выделить весь код
#include <file.au3>
$sTarFolder = 'Excel'; Название папки с Excel файлами
$sTarPath = @ScriptDir & '\' & $sTarFolder
$aExcelFiles = _FileListToArray($sTarPath, '*.xls', 1); Фильтр на файлы xls. Если формат *.xlsx то ставим соответствующий фильтр
For $i = 1 to $aExcelFiles[0]
	$sFile = $sTarPath & '\' & $aExcelFiles[$i]
	$oExcel = ObjCreate('Excel.Application'); Запускаем экземпляр Excel
	$oExcel.WorkBooks.Open($sFile); Открываем файл Excel'ем
	$oExcel.ActiveWorkBook.UpdateLinks; Обновляем ссылки
	$oExcel.ActiveWorkBook.Save; Сохраняем файл
	$oExcel.Application.Quit; Выходим из Excel
	$oExcel = 0; Освобождаем переменную
Next

-------
Русское сообщество пользователей AutoIt
autoit@conference.jabber.ru - Конференция на jabber.ru

Это сообщение посчитали полезным следующие участники:

Отправлено: 21:44, 17-06-2010 | #5


Аватара для Pozia

Ветеран


Сообщения: 2756
Благодарности: 211

Профиль | Отправить PM | Цитировать


kaster, не обнавляется

-------
Жизни вглядись в глаза: Это то, что ты всегда искал? Это то, что ты всегда хотел? Да или нет?


Отправлено: 18:23, 20-06-2010 | #6


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Pozia, я бы попробовал так:
Код: Выделить весь код
…
$oExcel = ObjCreate('Excel.Application')
$oExcel.AskToUpdateLinks = False
Цитата:
AskToUpdateLinks Property
True if Microsoft Excel asks the user to update links when opening files with links.
False if links are automatically updated with no dialog box.

Read/write Boolean.
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:37, 20-06-2010 | #7


Аватара для Pozia

Ветеран


Сообщения: 2756
Благодарности: 211

Профиль | Отправить PM | Цитировать


Iska, только сейчас появилась возможность проверить. Вроде помогло. Спсибо

-------
Жизни вглядись в глаза: Это то, что ты всегда искал? Это то, что ты всегда хотел? Да или нет?


Отправлено: 11:47, 14-08-2010 | #8


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Pozia, ясно. Спасибо, что отписались.

Отправлено: 13:36, 14-08-2010 | #9


Аватара для Pozia

Ветеран


Сообщения: 2756
Благодарности: 211

Профиль | Отправить PM | Цитировать


Iska, вплотную сейчас работаю с этим скриптом. Надоедает его все время модифицировать. Теперь он у меня такой:

Код: Выделить весь код
#include <file.au3>

$sTarPath1 = @ScriptDir & '\Звездочка'
$sTarPath2 = @ScriptDir & '\Муфта втулочно пальцевая\Параметры'
$sTarPath3 = @ScriptDir & '\Муфта цепная\Параметры'
$sTarPath4 = @ScriptDir & '\Редуктор\Параметры'
$sTarPath5 = @ScriptDir & '\РМ_1'
$sTarPath6 = @ScriptDir & '\Шкив'
$sTarPath7 = @ScriptDir & '\Электродвигатель'

$aExcelFiles1 = _FileListToArray($sTarPath1, '*.xlsx', 1); Фильтр на файлы xls. Если формат *.xlsx то ставим соответствующий фильтр
For $i = 1 to $aExcelFiles1[0]
	$sFile = $sTarPath1 & '\' & $aExcelFiles1[$i]
	$oExcel = ObjCreate('Excel.Application'); Запускаем экземпляр Excel
	$oExcel.AskToUpdateLinks = False
	$oExcel.WorkBooks.Open($sFile); Открываем файл Excel'ем
	$oExcel.ActiveWorkBook.UpdateLinks; Обновляем ссылки
	$oExcel.ActiveWorkBook.Save; Сохраняем файл
	$oExcel.Application.Quit; Выходим из Excel
	$oExcel = 0; Освобождаем переменную
Next

$aExcelFiles2 = _FileListToArray($sTarPath2, '*.xlsx', 1); Фильтр на файлы xls. Если формат *.xlsx то ставим соответствующий фильтр
For $i = 1 to $aExcelFiles2[0]
	$sFile = $sTarPath2 & '\' & $aExcelFiles2[$i]
	$oExcel = ObjCreate('Excel.Application'); Запускаем экземпляр Excel
	$oExcel.AskToUpdateLinks = False
	$oExcel.WorkBooks.Open($sFile); Открываем файл Excel'ем
	$oExcel.ActiveWorkBook.UpdateLinks; Обновляем ссылки
	$oExcel.ActiveWorkBook.Save; Сохраняем файл
	$oExcel.Application.Quit; Выходим из Excel
	$oExcel = 0; Освобождаем переменную
Next

$aExcelFiles3 = _FileListToArray($sTarPath3, '*.xlsx', 1); Фильтр на файлы xls. Если формат *.xlsx то ставим соответствующий фильтр
For $i = 1 to $aExcelFiles3[0]
	$sFile = $sTarPath3 & '\' & $aExcelFiles3[$i]
	$oExcel = ObjCreate('Excel.Application'); Запускаем экземпляр Excel
	$oExcel.AskToUpdateLinks = False
	$oExcel.WorkBooks.Open($sFile); Открываем файл Excel'ем
	$oExcel.ActiveWorkBook.UpdateLinks; Обновляем ссылки
	$oExcel.ActiveWorkBook.Save; Сохраняем файл
	$oExcel.Application.Quit; Выходим из Excel
	$oExcel = 0; Освобождаем переменную
Next

$aExcelFiles4 = _FileListToArray($sTarPath4, '*.xlsx', 1); Фильтр на файлы xls. Если формат *.xlsx то ставим соответствующий фильтр
For $i = 1 to $aExcelFiles4[0]
	$sFile = $sTarPath4 & '\' & $aExcelFiles4[$i]
	$oExcel = ObjCreate('Excel.Application'); Запускаем экземпляр Excel
	$oExcel.AskToUpdateLinks = False
	$oExcel.WorkBooks.Open($sFile); Открываем файл Excel'ем
	$oExcel.ActiveWorkBook.UpdateLinks; Обновляем ссылки
	$oExcel.ActiveWorkBook.Save; Сохраняем файл
	$oExcel.Application.Quit; Выходим из Excel
	$oExcel = 0; Освобождаем переменную
Next

$aExcelFiles5 = _FileListToArray($sTarPath5, '*.xlsx', 1); Фильтр на файлы xls. Если формат *.xlsx то ставим соответствующий фильтр
For $i = 1 to $aExcelFiles5[0]
	$sFile = $sTarPath5 & '\' & $aExcelFiles5[$i]
	$oExcel = ObjCreate('Excel.Application'); Запускаем экземпляр Excel
	$oExcel.AskToUpdateLinks = False
	$oExcel.WorkBooks.Open($sFile); Открываем файл Excel'ем
	$oExcel.ActiveWorkBook.UpdateLinks; Обновляем ссылки
	$oExcel.ActiveWorkBook.Save; Сохраняем файл
	$oExcel.Application.Quit; Выходим из Excel
	$oExcel = 0; Освобождаем переменную
Next

$aExcelFiles6 = _FileListToArray($sTarPath6, '*.xlsx', 1); Фильтр на файлы xls. Если формат *.xlsx то ставим соответствующий фильтр
For $i = 1 to $aExcelFiles6[0]
	$sFile = $sTarPath6 & '\' & $aExcelFiles6[$i]
	$oExcel = ObjCreate('Excel.Application'); Запускаем экземпляр Excel
	$oExcel.AskToUpdateLinks = False
	$oExcel.WorkBooks.Open($sFile); Открываем файл Excel'ем
	$oExcel.ActiveWorkBook.UpdateLinks; Обновляем ссылки
	$oExcel.ActiveWorkBook.Save; Сохраняем файл
	$oExcel.Application.Quit; Выходим из Excel
	$oExcel = 0; Освобождаем переменную
Next

$aExcelFiles7 = _FileListToArray($sTarPath7, '*.xlsx', 1); Фильтр на файлы xls. Если формат *.xlsx то ставим соответствующий фильтр
For $i = 1 to $aExcelFiles7[0]
	$sFile = $sTarPath7 & '\' & $aExcelFiles7[$i]
	$oExcel = ObjCreate('Excel.Application'); Запускаем экземпляр Excel
	$oExcel.AskToUpdateLinks = False
	$oExcel.WorkBooks.Open($sFile); Открываем файл Excel'ем
	$oExcel.ActiveWorkBook.UpdateLinks; Обновляем ссылки
	$oExcel.ActiveWorkBook.Save; Сохраняем файл
	$oExcel.Application.Quit; Выходим из Excel
	$oExcel = 0; Освобождаем переменную
Next
Могли бы вы его подправить так, чтобы он искал эксели во всех папках что находятся на одном уровне с самим скриптом, и вложенных в этих папках папки? Сейчас выскакивает ошибка, если в какой либо папке, прописанной в скрипте, нет экселя.

-------
Жизни вглядись в глаза: Это то, что ты всегда искал? Это то, что ты всегда хотел? Да или нет?


Отправлено: 19:05, 05-04-2011 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Запуск файлов и их сохранение

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Сохранение графических файлов umnik Хочу все знать 4 29-11-2010 15:23
Запрет на сохранение файлов вне профиля. sinchro Microsoft Windows NT/2000/2003 8 16-11-2007 12:11
Сохранение файлов и папок с HTML ksan Microsoft Windows 2000/XP 1 11-03-2007 03:35
Сохранение файлов Kasper Microsoft Windows NT/2000/2003 7 18-10-2003 03:06
Сохранение файлов из Интернета SL Microsoft Windows 2000/XP 6 03-06-2003 20:54




 
Переход