#include <Excel.au3>
#include <File.au3>
#include <Array.au3>
Opt('MustDeclareVars', 1)
Opt('TrayMenuMode', 1)
Global $aTemplate, $aArrayExcelFiles, $iCountError = 0, $iCountSuccess = 0, $aArrayErrorsFiles[1], _
$sFileTemplate = @ScriptDir & '\Template\РеестрШаблон.xls', _ ;файл Excel с шаблоном заголовка.
$sDirControlExcel = @ScriptDir & '\Books' ;Папка с проверяемыми файлами Excel.
$aArrayExcelFiles = _FileListToArray($sDirControlExcel, '*.xls', 1)
If @error Then
MsgBox(16, 'Error', '_FileListToArray')
Exit
EndIf
_Get_Template_Array($sFileTemplate, $aTemplate)
If @error Then
MsgBox(16, 'Error', '_Get_Template_Array')
Exit
EndIf
For $i = 1 To $aArrayExcelFiles[0]
_Del_Or_Hidden_Columns($sDirControlExcel & '\' & $aArrayExcelFiles[$i], $aTemplate)
If @error Then
$iCountError += 1
ReDim $aArrayErrorsFiles[$iCountError + 1]
$aArrayErrorsFiles[$iCountError] = $sDirControlExcel & '\' & $aArrayExcelFiles[$i]
Else
$iCountSuccess += 1
EndIf
Next
MsgBox(64, 'Info', 'Файлов всего: ' & $aArrayExcelFiles[0] & @LF & _
'Успешно обработано: ' & $iCountSuccess & @LF & 'Ошибок при обработке: ' & $iCountError)
If $iCountError Then
$aArrayErrorsFiles[0] = $iCountError
_ArrayDisplay($aArrayErrorsFiles, 'Файлы с ошибкой обработки')
EndIf
Func _Del_Or_Hidden_Columns($s_File_Excel, $a_Array_Template, $i_Flag = 0)
;$i_Flag = 0 - скрыть колонки (по умолчанию), $i_Flag <> 0 - удалить колонки
Local $o_Excel, $a_Temp_Array, $f_Yes, $i_Error = 1
If Not FileExists($s_File_Excel) Then Return SetError(1)
If Not IsArray($a_Array_Template) Then Return SetError(1)
$o_Excel = _ExcelBookOpen($s_File_Excel, 0)
If @error Then Return SetError(1)
For $j = 1 To 1
$a_Temp_Array = _ExcelReadSheetToArray($o_Excel, 1, 1, 1, 0)
If @error Then ExitLoop
If Not $a_Temp_Array[0][1] Then ExitLoop
For $i = $a_Temp_Array[0][1] To 1 Step -1
$f_Yes = True
For $q = 1 To $a_Array_Template[0]
If StringStripWS($a_Temp_Array[1][$i], 7) == StringStripWS($a_Array_Template[$q], 7) Then
$f_Yes = False
ExitLoop
EndIf
Next
If $f_Yes Then
If $i_Flag Then
_ExcelColumnDelete($o_Excel, $i)
If @error Then ExitLoop 2
Else
$o_Excel.Columns($i).Hidden = True
EndIf
EndIf
Next
$i_Error = 0
Next
_ExcelBookClose($o_Excel)
Return SetError($i_Error)
EndFunc ;==>_Del_Or_Hidden_Columns
Func _Get_Template_Array($s_File_Template, ByRef $a_Array)
Local $o_Excel, $a_Temp_Array, $i_Count, $i_Error = 1
If Not FileExists($s_File_Template) Then Return SetError(1)
If IsArray($a_Array) Then $a_Array = 0
$o_Excel = _ExcelBookOpen($s_File_Template, 0)
If @error Then Return SetError(1)
For $j = 1 To 1
$a_Temp_Array = _ExcelReadSheetToArray($o_Excel, 1, 1, 1, 0)
If @error Then ExitLoop
If Not $a_Temp_Array[0][1] Then ExitLoop
Dim $a_Array[$a_Temp_Array[0][1] + 1] = [$a_Temp_Array[0][1]]
For $i = 1 To $a_Temp_Array[0][1]
If $a_Temp_Array[1][$i] <> '' Then
$i_Count += 1
$a_Array[$i_Count] = $a_Temp_Array[1][$i]
EndIf
Next
$i_Error = 0
Next
_ExcelBookClose($o_Excel)
Return SetError($i_Error)
EndFunc ;==>_Get_Template_Array