Сохраняет рабочую книгу Excel под новым именем/расположением или типом (инициализация «Сохранить как»)
Внимание!!! пересохранение книги без изменения каких либо параметров необходимо выполнять при помощи _ExcelBookSave
использование этой функции в таком случае вызовет ошибку.
См. также
; ***********************************************
; Пример 1 — Сохранение рабочей книги под другим именем, без каких либо оповещений Excel
; ***********************************************
#include <Excel.au3>
$oExcel = _ExcelBookNew(1) ; Создаем новую рабочую книгу Excel
_ExcelBookSaveAs($oExcel, @TempDir & «SaveAsExample», «xls», 0, 1) ; Сохраняем книгу в директории временных файлов с именем «SaveAsExample.xls», при необходимости перезаписывая, без оповещений
_ExcelBookClose($oExcel)
If Not @error Then MsgBox(4096, «_ExcelBookSaveAs | Пример 1», «Файл успешно сохранен!», 3)
_ExcelBookClose($oExcel, 1, 0) ; Этот метод при указанных параметрах закрывает рабочую книгу сохраняя изменения без каких либо оповещений Excel
; **********************************************
; Пример 2 — Перезапись файла установлением пароля: «Password», Открытие книги для проверки защиты
; **********************************************
#include <Excel.au3>
$oExcel = _ExcelBookNew(1) ; Создаем новую рабочую книгу Excel
_ExcelBookSaveAs($oExcel, @TempDir & «SaveAsExample», «xls», 0, 1, «Password») ; Сохраняем книгу в директории временных файлов с именем «SaveAsExample.xls», при необходимости перезаписывая, без оповещений, защищая паролем «Password»
_ExcelBookClose($oExcel)
If Not @error Then MsgBox(4096, «_ExcelBookSaveAs | Пример 2», «Файл успешно сохранен!»)
_ExcelBookClose($oExcel, 1, 0) ; Этот метод при указанных параметрах закрывает рабочую книгу сохраняя изменения без каких либо оповещений Excel
If Not @error Then MsgBox(4096, «_ExcelBookSaveAs | Пример 2», «Попытаемся открыть сохраненную книгу для того чтобы проверить созданный пароль»)
$oExcel = _ExcelBookOpen(@tempdir & «saveasexample.xls», 1, False) ; Открывает сохраненную книгу для проверки защиты паролем
;*************************************************************************************************
;Пример 3 — Модификация Excel.au3, для использования в методе _ExcelBookSaveAs форматов MS Office Excel 2007-2010
;*************************************************************************************************
;В данном коде описываются лишь некоторые из форматов доступных для сохранения рабочей книги в MS Office Excel 2007-2010
;Все остальные форматы вы можете описать по аналогии, для этого посетите MSDN в разделе Visual Basic for Applications
;найдите описания констант форматов и их числовые эквиваленты ( «http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.xlfileformat.aspx» )
;после чего добавьте константы с соответствующими числовыми значениями в Excel.au3, и используйте их в этом коде по аналогии
;Откройте Excel.au3, к описанию констант добавьте
Global Const $xlExcel12 = 50 ; расширение xlsb (Excel Binary Workbook in 2007-2010 with or without macro’s)
Global Const $xlOpenXMLWorkbook = 51 ; расширение xlsx (xlOpenXMLWorkbook without macro’s in 2007-2010)
Global Const $xlOpenXMLWorkbookMacroEnabled = 52 ; расширение xlsm (xlOpenXMLWorkbookMacroEnabled with or without macro’s in 2007-2010)
Global Const $xlExcel8 = 56 ;расширение xls (xlExcel8 97-2003 format in Excel 2007-2010)
;перейдите на строку № 339 и замените блок IF — Else — EndIf следующим кодом
If $sType = «xls» Or $sType = «csv» Or $sType = «txt» Or $sType = «template» Or $sType = «html» Or $sType = «xlsb» Or $sType = «xlsx» Or $sType = «xlsm» then
If $sType = «xls» Then $sType = $xlExcel8
If $sType = «csv» Then $sType = $xlCSVMSDOS
If $sType = «txt» Then $sType = $xlTextWindows
If $sType = «template» Then $sType = $xlTemplate
If $sType = «html» Then $sType = $xlHtml
If $sType = «xlsx» Then $sType = $xlOpenXMLWorkbook
If $sType = «xlsm» Then $sType = $xlOpenXMLWorkbookMacroEnabled
If $sType = «xlsb» Then $sType = $xlExcel12
Else
Return SetError(2, 0, 0)
EndIf
;SciTE Script Editor может не дать вам перезаписать оригинальный Excel.au3, => сохраните его как Excel1.au3 а впоследствии
;удалите Excel.au3 через проводник , а Excel1.au3 переименуйте в Excel.au3, или импортируйте UDF как есть #include <Excel1.au3>
;Не используйте эти модификации если вы не используете MS Office Excel 2007-2010!!!
Autoit excel book saveas
Описание функции
Сохраняет рабочую книгу Excel под новым именем/расположением или типом (инициализация «Сохранить как»)
Внимание. пересохранение книги без изменения каких либо параметров необходимо выполнять при помощи _ExcelBookSave
использование этой функции в таком случае вызовет ошибку.
#include
_ExcelBookSaveAs ( $oExcel , $sFilePath [, $sType = «xls» [, $fAlerts = 0 [, $fOverWrite = 0 [, $sPassword = «» [, $sWritePassword = «» [, $iAccessMode = 1 [, $iConflictResolution = 2 ]]]]]]])
$oExcel | Ссылка на COM-объект «Excel.Application» полученная ранее вызванными _ExcelBookOpen () , _ExcelBookNew () , или _ExcelBookAttach () |
$sFilePath | Путь + имя сохраняемого файла (н/п C:Docunentsmyworkbook) Внимание. имя указывается без расширения, расширение сохраняемого файла определяется параметром $sType |
$sType | [необязательный] Формат сохраняемого файла предусмотренный версией Excel = «xls|csv|txt|template|html», по умолчанию «xls» Внимание. см.Примечание |
$fAlerts | [необязательный] Флаг определяющий наличие оповещений/запросов Excel (0=отключены, 1=включены) (по умолчанию = 0) |
$fOverWrite | [необязательный] Флаг определяющий состояние перезаписи, если указанный файл уже существует (0=не перезаписывать,1=перезаписывать) |
$sPassword | [необязательный] Пароль к защищенной паролем книге Excel (по умолчанию = «») |
$sWritePassword | [необязательный] Пароль защиты от редактирования в рабочей книге (по умолчанию=»») |
$iAccessMode | [необязательный] Признак совместного использования у рабочей книги (sharing), для определения этого параметра используются следующие константы: $xlNoChange — Принять значение исходного файла (по умолчанию) (числовой эквивалент = 1) $xlExclusive — Отключает признак совместного использования у рабочей книги (числовой эквивалент = 3) $xlShared — Включает признак совместного использования у рабочей книги (числовой эквивалент = 2) |
$iConflictResolution | [необязательный] Для документов с признаком совместного использования, определяет как разрешать конфликты совместного использования, для определения этого параметра используются следующие константы: $xlUserResolution — Вызывать диалоговое окно для выбора условий разрешения конфликта пользователем (числовое значение = 1) $xlLocalSessionChanges — Изменения локального пользователя(владельца) всегда принимаются (по умолчанию) (числовое значение = 2) $xlOtherSessionChanges — Изменения локального пользователя(владельца) всегда отклоняются (числовое значение = 3) |
Успех: | Возвращает 1 |
Ошибка: | Возвращает 0, Устанавливает значение флага ошибки @error : |
@error : | 0 — Скрипт завершил работу без ошибок |
1 — Ошибка OLE/COM ( $oExcel ), возможно указанный объект не существует | |
2 — Не верно указан тип файла ( $sType ) | |
3 — Файл открыт только для чтения |
В MS Office 2007-2010 доступен более расширенный список форматов «xlsx|xlsb|xlsm и т.д.»,
«по умолчанию» используется формат «xlsx»
В базовой UDF «Excel.au3» использование в этой функции таких форматов не предусмотрено,
это можно исправить модифицированием «Excel.au3»;
Инструкции и внедряемый код переведены на этой странице (см.Пример 3)
$oExcel = _ExcelBookNew ( 1 ) ; Создаем новую рабочую книгу Excel
_ExcelBookSaveAs ( $oExcel , @TempDir & «SaveAsExample» , «xls» , 0 , 1 ) ; Сохраняем книгу в директории временных файлов с именем «SaveAsExample.xls», при необходимости перезаписывая, без оповещений
_ExcelBookClose ( $oExcel )
If Not @error Then MsgBox ( 4096 , «_ExcelBookSaveAs | Пример 1» , «Файл успешно сохранен!» , 3 )
_ExcelBookClose ( $oExcel , 1 , 0 ) ; Этот метод при указанных параметрах закрывает рабочую книгу сохраняя изменения без каких либо оповещений Excel
$oExcel = _ExcelBookNew ( 1 ) ; Создаем новую рабочую книгу Excel
_ExcelBookSaveAs ( $oExcel , @TempDir & «SaveAsExample» , «xls» , 0 , 1 , «Password» ) ; Сохраняем книгу в директории временных файлов с именем «SaveAsExample.xls», при необходимости перезаписывая, без оповещений, защищая паролем «Password»
_ExcelBookClose ( $oExcel )
If Not @error Then MsgBox ( 4096 , «_ExcelBookSaveAs | Пример 2» , «Файл успешно сохранен!» )
_ExcelBookClose ( $oExcel , 1 , 0 ) ; Этот метод при указанных параметрах закрывает рабочую книгу сохраняя изменения без каких либо оповещений Excel
If Not @error Then MsgBox ( 4096 , «_ExcelBookSaveAs | Пример 2» , «Попытаемся открыть сохраненную книгу для того чтобы проверить созданный пароль» )
$oExcel = _ExcelBookOpen ( @TempDir & «SaveAsExample.xls» , 1 , False ) ; Открывает сохраненную книгу для проверки защиты паролем
;*************************************************************************************************
;Пример 3 — Модификация Excel.au3, для использования в методе _ExcelBookSaveAs форматов MS Office Excel 2007-2010
;*************************************************************************************************
;В данном коде описываются лишь некоторые из форматов доступных для сохранения рабочей книги в MS Office Excel 2007-2010
;Все остальные форматы вы можете описать по аналогии, для этого посетите MSDN в разделе Visual Basic for Applications
;найдите описания констант форматов и их числовые эквиваленты ( «http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.xlfileformat.aspx» )
;после чего добавьте константы с соответствующими числовыми значениями в Excel.au3, и используйте их в этом коде по аналогии
;Откройте Excel.au3, к описанию констант добавьте
Global Const $xlExcel12 = 50 ; расширение xlsb (Excel Binary Workbook in 2007-2010 with or without macro’s)
Global Const $xlOpenXMLWorkbook = 51 ; расширение xlsx (xlOpenXMLWorkbook without macro’s in 2007-2010)
Global Const $xlOpenXMLWorkbookMacroEnabled = 52 ; расширение xlsm (xlOpenXMLWorkbookMacroEnabled with or without macro’s in 2007-2010)
Global Const $xlExcel8 = 56 ;расширение xls (xlExcel8 97-2003 format in Excel 2007-2010)
;перейдите на строку № 339 и замените блок IF — Else — EndIf следующим кодом
If $sType = «xls» Or $sType = «csv» Or $sType = «txt» Or $sType = «template» Or $sType = «html» Or $sType = «xlsb» Or $sType = «xlsx» Or $sType = «xlsm» then
If $sType = «xls» Then $sType = $xlExcel8
If $sType = «csv» Then $sType = $xlCSVMSDOS
If $sType = «txt» Then $sType = $xlTextWindows
If $sType = «template» Then $sType = $xlTemplate
If $sType = «html» Then $sType = $xlHtml
If $sType = «xlsx» Then $sType = $xlOpenXMLWorkbook
If $sType = «xlsm» Then $sType = $xlOpenXMLWorkbookMacroEnabled
If $sType = «xlsb» Then $sType = $xlExcel12
Else
Return SetError ( 2 , 0 , 0 )
EndIf
Источник
Autoit excel book saveas
Сохраняет рабочую книгу Excel под новым именем/расположением или типом (инициализация «Сохранить как»)
Внимание. пересохранение книги без изменения каких либо параметров необходимо выполнять при помощи _ExcelBookSave
использование этой функции в таком случае вызовет ошибку.
#include
_ExcelBookSaveAs ( $oExcel , $sFilePath [, $sType = «xls» [, $fAlerts = 0 [, $fOverWrite = 0 [, $sPassword = «» [, $sWritePassword = «» [, $iAccessMode = 1 [, $iConflictResolution = 2 ]]]]]]])
$oExcel | Ссылка на COM-объект «Excel.Application» полученная ранее вызванными _ExcelBookOpen () , _ExcelBookNew () , или _ExcelBookAttach () |
$sFilePath | Путь + имя сохраняемого файла (н/п C:Docunentsmyworkbook) Внимание. имя указывается без расширения, расширение сохраняемого файла определяется параметром $sType |
$sType | [необязательный] Формат сохраняемого файла предусмотренный версией Excel = «xls|csv|txt|template|html», по умолчанию «xls» Внимание. см.Примечание |
$fAlerts | [необязательный] Флаг определяющий наличие оповещений/запросов Excel (0=отключены, 1=включены) (по умолчанию = 0) |
$fOverWrite | [необязательный] Флаг определяющий состояние перезаписи, если указанный файл уже существует (0=не перезаписывать,1=перезаписывать) |
$sPassword | [необязательный] Пароль к защищенной паролем книге Excel (по умолчанию = «») |
$sWritePassword | [необязательный] Пароль защиты от редактирования в рабочей книге (по умолчанию=»») |
$iAccessMode | [необязательный] Признак совместного использования у рабочей книги (sharing), для определения этого параметра используются следующие константы: $xlNoChange — Принять значение исходного файла (по умолчанию) (числовой эквивалент = 1) $xlExclusive — Отключает признак совместного использования у рабочей книги (числовой эквивалент = 3) $xlShared — Включает признак совместного использования у рабочей книги (числовой эквивалент = 2) |
$iConflictResolution | [необязательный] Для документов с признаком совместного использования, определяет как разрешать конфликты совместного использования, для определения этого параметра используются следующие константы: $xlUserResolution — Вызывать диалоговое окно для выбора условий разрешения конфликта пользователем (числовое значение = 1) $xlLocalSessionChanges — Изменения локального пользователя(владельца) всегда принимаются (по умолчанию) (числовое значение = 2) $xlOtherSessionChanges — Изменения локального пользователя(владельца) всегда отклоняются (числовое значение = 3) |
Успех: | Возвращает 1 |
Ошибка: | Возвращает 0, Устанавливает значение флага ошибки @error : |
@error : | 0 — Скрипт завершил работу без ошибок |
1 — Ошибка OLE/COM ( $oExcel ), возможно указанный объект не существует | |
2 — Не верно указан тип файла ( $sType ) | |
3 — Файл открыт только для чтения |
В MS Office 2007-2010 доступен более расширенный список форматов «xlsx|xlsb|xlsm и т.д.»,
«по умолчанию» используется формат «xlsx»
В базовой UDF «Excel.au3» использование в этой функции таких форматов не предусмотрено,
это можно исправить модифицированием «Excel.au3»;
Инструкции и внедряемый код переведены на этой странице (см.Пример 3)
$oExcel = _ExcelBookNew ( 1 ) ; Создаем новую рабочую книгу Excel
_ExcelBookSaveAs ( $oExcel , @TempDir & «SaveAsExample» , «xls» , 0 , 1 ) ; Сохраняем книгу в директории временных файлов с именем «SaveAsExample.xls», при необходимости перезаписывая, без оповещений
_ExcelBookClose ( $oExcel )
If Not @error Then MsgBox ( 4096 , «_ExcelBookSaveAs | Пример 1» , «Файл успешно сохранен!» , 3 )
_ExcelBookClose ( $oExcel , 1 , 0 ) ; Этот метод при указанных параметрах закрывает рабочую книгу сохраняя изменения без каких либо оповещений Excel
$oExcel = _ExcelBookNew ( 1 ) ; Создаем новую рабочую книгу Excel
_ExcelBookSaveAs ( $oExcel , @TempDir & «SaveAsExample» , «xls» , 0 , 1 , «Password» ) ; Сохраняем книгу в директории временных файлов с именем «SaveAsExample.xls», при необходимости перезаписывая, без оповещений, защищая паролем «Password»
_ExcelBookClose ( $oExcel )
If Not @error Then MsgBox ( 4096 , «_ExcelBookSaveAs | Пример 2» , «Файл успешно сохранен!» )
_ExcelBookClose ( $oExcel , 1 , 0 ) ; Этот метод при указанных параметрах закрывает рабочую книгу сохраняя изменения без каких либо оповещений Excel
If Not @error Then MsgBox ( 4096 , «_ExcelBookSaveAs | Пример 2» , «Попытаемся открыть сохраненную книгу для того чтобы проверить созданный пароль» )
$oExcel = _ExcelBookOpen ( @tempdir & «saveasexample.xls» , 1 , False ) ; Открывает сохраненную книгу для проверки защиты паролем
;*************************************************************************************************
;Пример 3 — Модификация Excel.au3, для использования в методе _ExcelBookSaveAs форматов MS Office Excel 2007-2010
;*************************************************************************************************
;В данном коде описываются лишь некоторые из форматов доступных для сохранения рабочей книги в MS Office Excel 2007-2010
;Все остальные форматы вы можете описать по аналогии, для этого посетите MSDN в разделе Visual Basic for Applications
;найдите описания констант форматов и их числовые эквиваленты ( «http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.xlfileformat.aspx» )
;после чего добавьте константы с соответствующими числовыми значениями в Excel.au3, и используйте их в этом коде по аналогии
;Откройте Excel.au3, к описанию констант добавьте
Global Const $xlExcel12 = 50 ; расширение xlsb (Excel Binary Workbook in 2007-2010 with or without macro’s)
Global Const $xlOpenXMLWorkbook = 51 ; расширение xlsx (xlOpenXMLWorkbook without macro’s in 2007-2010)
Global Const $xlOpenXMLWorkbookMacroEnabled = 52 ; расширение xlsm (xlOpenXMLWorkbookMacroEnabled with or without macro’s in 2007-2010)
Global Const $xlExcel8 = 56 ;расширение xls (xlExcel8 97-2003 format in Excel 2007-2010)
;перейдите на строку № 339 и замените блок IF — Else — EndIf следующим кодом
If $sType = «xls» Or $sType = «csv» Or $sType = «txt» Or $sType = «template» Or $sType = «html» Or $sType = «xlsb» Or $sType = «xlsx» Or $sType = «xlsm» then
If $sType = «xls» Then $sType = $xlExcel8
If $sType = «csv» Then $sType = $xlCSVMSDOS
If $sType = «txt» Then $sType = $xlTextWindows
If $sType = «template» Then $sType = $xlTemplate
If $sType = «html» Then $sType = $xlHtml
If $sType = «xlsx» Then $sType = $xlOpenXMLWorkbook
If $sType = «xlsm» Then $sType = $xlOpenXMLWorkbookMacroEnabled
If $sType = «xlsb» Then $sType = $xlExcel12
Else
Return SetError ( 2 , 0 , 0 )
EndIf
Источник
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; Open an existing workbook and returns its object identifier. Then SaveAs the file under a new name, without any alerts. | |
#include <Excel.au3> | |
#include <MsgBoxConstants.au3> | |
Local $sFilePath1 = @ScriptDir & «Test.xls« ;This file should already exist | |
Local $oExcel = _ExcelBookOpen($sFilePath1) | |
If @error = 1 Then | |
MsgBox($MB_SYSTEMMODAL, «Error!«, «Unable to Create the Excel Object«) | |
Exit | |
ElseIf @error = 2 Then | |
MsgBox($MB_SYSTEMMODAL, «Error!«, «File does not exist — Shame on you!«) | |
Exit | |
EndIf | |
_ExcelBookSaveAs($oExcel, @TempDir & «SaveAsExample«, «xls«) | |
If Not @error Then MsgBox($MB_SYSTEMMODAL, «Success«, «File was Saved!«, 3) | |
_ExcelBookClose($oExcel, 1, 0) ;This method will save then Close the file, without any of the normal prompts, regardless of changes |
Основной сценарий, показывающий основные принципы создания / открытия, записи и сохранения электронной таблицы Excel. Использование функций библиотеки AutoIt Excel.
; Include definitions of the User Excel functions
#include <Excel.au3>
; Include Message Box codes for the error messages
#include <MsgBoxConstants.au3>
; Constants
$xlforce = True ; True = force new instance, False = use existing
$xlkeybrd = True ; True = allow keys, False = block keys
$xlscreen = True ; True = live screen, False = suppressed
$xlvisible = True ; True = visible, False = invisible
; Variables
$book = 0 ; The workbook
$excel = 0 ; The instance of Excel
$range = 0 ; Range object within a sheet
; Create an instance of Excel and attach this script to it
; Use the constants defined above to control visibility of the Excel window
$excel = _Excel_Open($xlvisible, False, $xlvisible, $xlkeybrd, $xlforce)
If ($excel = 0) Then HandleError("Excel creation failed ")
; Create a new workbook with one worksheet within the opened instance
$book = _Excel_BookNew($excel, 1)
If ($book = 0) Then HandleError("Workbook creation failed ")
; Example write to a single cell in the current sheet - writes 42 to cell B2
$range = _Excel_RangeWrite($book, Default, 42, "B2")
If ($range = 0) Then HandleError("Write cell failed ")
; Example write to a block in the current sheet - writes to cells D4:E5
Local $xy[2][2] = [[1, 2], [3, 4]]
$range = _Excel_RangeWrite($book, Default, $xy, "D4:E5")
If ($range = 0) Then HandleError("Write cell failed ")
; Save the created workbook - without a given path this will go to the temporary
; directory. The argument 'TRUE' forces an overwrite of any existing file
$err = _Excel_BookSaveAs($book, "test.xlsx", $xlWorkbookDefault, True)
If ($err = 0) Then HandleError("Workbook save failed ")
; Close the workbook. The argument 'TRUE' will save any changes
$err = _Excel_BookClose($book, True)
If ($err = 0) Then HandleError("Workbook close failed ")
; Close the created instance of Excel
; First argument 'TRUE' saves changes to any open worksheets
; Second argument 'FALSE' prevents closure if the instance was not new at _Excel_Open()
$err = _Excel_Close($excel, True, False)
If ($err = 0) Then HandleError("Excel close failed ")
Exit ; End of script
; Error handler function - very simple, just aborts
Func HandleError($message)
MsgBox($MB_SYSTEMMODAL + $MB_ICONERROR, "Excel Test", $message & @error, 5)
Exit
EndFunc
A windows application exports data into a new excel workbook.
I need to save that generated workbook using AutoIt.
I tried the below code.But it is not working.
Local $oExcel = ObjGet("","Excel.Application")
For $oWb in $oExcel.Workbooks
$oWb.Activate()
_Excel_BookSaveAs($oWb,"File name with full path",Default,True)
$oWb.Application.Quit
ExitLoop
Next
asked Jan 19, 2017 at 16:45
According to the documentation, you have to make sure your file extension and excel type match — i.e. Excel 2007 = xlsx
A valid path/file name, a valid type ( optional ) , overwrite = true.
Activate isn’t necessary.
#include <excel.au3>
#include <ExcelConstants.au3>
Local $oExcel = ObjGet("","Excel.Application")
if NOT @error then
for $Workbook in $oExcel.Workbooks
; optional type $xlExcel7
; optional overwrite = true
_Excel_BookSaveAs($Workbook,"c:driverskeeper3.xlsx" )
next
_Excel_Close($oExcel,false,true)
EndIf
ConsoleWrite("END" & @CRLF)
answered Jan 20, 2017 at 3:13