#include <Array.au3>
#include <Excel.au3>
#include <FileOperations.au3>
$uArray = _Find()
$oExcel = _ExcelBookNew()
_ExcelSheetWriteFromArray($oExcel, $uArray, 1, 1, 1)
Func _Find()
Local $aFind1[1], $aFind2, $oDOC, $doc, $sText
Local $aFileList = _FO_FileSearch(@ScriptDir, '*doc')
For $i = 1 To $aFileList[0]
$oDOC = ObjCreate('Word.Application')
$doc = $oDOC.Documents.Open($aFileList[$i])
$sText = $doc.Content.Text
$oDOC.quit(0)
$aFind2 = StringRegExp($sText, '\D+(\d{11})\D+', 3)
If IsArray($aFind2) Then
For $j = 0 To UBound($aFind2) - 1
$aFind2[$j] = $aFind2[$j] & '|||' & $aFileList[$i]
Next
_ArrayConcatenate($aFind1, $aFind2)
EndIf
Next
Local $uArray[UBound($aFind1)][2]
For $i = 1 To UBound($aFind1) - 1
Local $aSplit = StringSplit($aFind1[$i], '|||', 1)
$uArray[$i][0] = $aSplit[1]
$uArray[$i][1] = $aSplit[2]
Next
Return ($uArray)
EndFunc ;==>_Find
Func _ExcelSheetWriteFromArray($oExcel, ByRef $aArray, $iExcelStartRow = Default, $iExcelStartCol = Default, $iArrayStartRow = Default, $iArrayStartCol = Default, $iArrayEndRow = Default, $iArrayEndCol = Default)
Local $iExcelEndRow = 1
Local $iExcelEndCol = 1
If Not IsObj($oExcel) Then Return SetError(1, 0, 0)
If UBound($aArray, 0) <> 2 Then Return SetError(2, 0, 0)
If $iExcelStartRow = Default Then $iExcelStartRow = 1
If $iExcelStartCol = Default Then $iExcelStartCol = 1
If $iArrayStartRow = Default Then $iArrayStartRow = 0
If $iArrayStartCol = Default Then $iArrayStartCol = 0
If $iArrayEndRow = Default Then $iArrayEndRow = UBound($aArray) - 1
If $iArrayEndCol = Default Then $iArrayEndCol = UBound($aArray, 2) - 1
If $iExcelStartRow < 1 Then $iExcelStartRow = 1
If $iExcelStartCol < 1 Then $iExcelStartCol = 1
If $iArrayStartRow < 0 Then $iArrayStartRow = 0
If $iArrayStartCol < 0 Then $iArrayStartCol = 0
If $iArrayEndRow < $iArrayStartRow Then Return SetError(3, 1, 0)
If $iArrayEndCol < $iArrayStartCol Then Return SetError(4, 1, 0)
$iExcelEndRow = $iExcelStartRow + $iArrayEndRow - $iArrayStartRow
$iExcelEndCol = $iExcelStartCol + $iArrayEndCol - $iArrayStartCol
; Check if only part of the array is to written to the speadsheet
If $iArrayStartRow <> 0 Or $iArrayStartCol <> 0 Or $iArrayEndRow <> UBound($aArray) - 1 Or $iArrayEndCol = UBound($aArray, 2) - 1 Then
;Copy specified array range to a temporary array
Local $aTemp[$iArrayEndRow - $iArrayStartRow + 1][$iArrayEndCol - $iArrayStartCol + 1]
Local $iRow = 0
Local $iCol = 0
For $i = $iArrayStartRow To $iArrayEndRow
$iCol = 0
For $j = $iArrayStartCol To $iArrayEndCol
$aTemp[$iRow][$iCol] = $aArray[$i][$j]
$iCol += 1
Next
$iRow += 1
Next
With $oExcel.ActiveSheet
.Range(.Cells($iExcelStartRow, $iExcelStartCol), .Cells($iExcelEndRow, $iExcelEndCol)).Select
.Range(.Cells($iExcelStartRow, $iExcelStartCol), .Cells($iExcelEndRow, $iExcelEndCol)).value = $oExcel.Application.WorksheetFunction.Transpose($aTemp)
EndWith
Else
With $oExcel.ActiveSheet
.Range(.Cells($iExcelStartRow, $iExcelStartCol), .Cells($iExcelEndRow, $iExcelEndCol)).Select
.Range(.Cells($iExcelStartRow, $iExcelStartCol), .Cells($iExcelEndRow, $iExcelEndCol)).value = $oExcel.Application.WorksheetFunction.Transpose($aArray)
EndWith
EndIf
EndFunc ;==>_ExcelSheetWriteFromArray