如何将选定数据从 50 Excel 个工作簿传输到单个工作簿?

How to transfer selected data from 50 Excel workbooks to a single workbook?

文件夹中的循环有效,但单元格中的循环无效。我有一个包含 50 Excel 个文件和一个目标 Excel 文件的文件夹。数据应该从文件夹到目标 Excel 文件:

#include <file.au3>
#include <Excel.au3>
opt("WinTitleMatchMode", 2)
$path = "C:\Users\User\Desktop\Nezavisimai\Papka2\"
$FileListShort = _FileListToArray($path, "*.xlsx", 1, True)
$ProgExcel = _Excel_Open()
$workbookDestiny = _Excel_BookNew($ProgExcel)

$LineDestiny = 1
_Excel_RangeWrite($workbookDestiny, $workbookDestiny.Activesheet, "Sample type", "A" & $LineDestiny)
_Excel_RangeWrite($workbookDestiny, $workbookDestiny.Activesheet, "Sample name", "B" & $LineDestiny)
_Excel_RangeWrite($workbookDestiny, $workbookDestiny.Activesheet, "Result", "C" & $LineDestiny)

For $i = 1 to $FileListShort[0]

$workbookSource =  _Excel_BookOpen($ProgExcel, $FileListShort[$i], False, False)
For $LineSource = 2 to 30
$sampletype = _Excel_RangeRead($workbookSource, "Данные", "A" & $LineSource)
$samplename = _Excel_RangeRead($workbookSource, "Данные", "B" & $LineSource)
$sampleresult = _Excel_RangeRead($workbookSource, "Данные", "C" & $LineSource)
$sampleobs = _Excel_RangeRead($workbookSource, "Данные", "D" & $LineSource)
If $sampletype = "Sample"  Then
    If $sampleobs <> "Over limit" Then
        $LineDestiny = $LineDestiny + 1
        _Excel_RangeWrite($workbookDestiny, "Лист1", $sampletype, "A" & $LineDestiny)
        _Excel_RangeWrite($workbookDestiny, "Лист1", $sampletype, "B" & $LineDestiny)
        _Excel_RangeWrite($workbookDestiny, "Лист1", $sampletype, "C" & $LineDestiny)
     EndIF
EndIF
Next
_Excel_BookClose($workbookSource, False)
Next

问题可能出在这里:

If $sampletype = "Sample"  Then
        If $sampleobs <> "Over limit" Then
           $LineDestiny = $LineDestiny + 1

这可能是一个很好的起点。让我知道它是否对您有帮助,或者是否有遗漏。

; Combine Excel files
#include <Excel.au3>
#include <Array.au3>
#include <File.au3>
#include <MsgBoxConstants.au3>

$allFiles_A = _FileListToArray(@ScriptDir & '\files\', '*.xlsx', $FLTA_FILES, True)
;~ _ArrayDisplay($allFiles_A)

; Create application object
Local $oExcel = _Excel_Open()
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_BookOpen Example", "Error creating the Excel application object." & @CRLF & "@error = " & @error & ", @extended = " & @extended)

Local $oWorkbook_result = _Excel_BookNew($oExcel)
If @error Then
    MsgBox($MB_SYSTEMMODAL, "@error = " & @error & ", @extended = " & @extended)
    _Excel_Close($oExcel)
    Exit
EndIf

For $i = 1 To $allFiles_A[0]
    $end = $i * 35 + 1
    $start = $end - 35

    Local $sWorkbook_source = _Excel_BookOpen($oExcel, $allFiles_A[$i])
    If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF Error", "Error opening '" & $sWorkbook_source & "'." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    _Excel_RangeCopyPaste($sWorkbook_source.Activesheet, $sWorkbook_source.Activesheet.Range("A1:D35"))
    _Excel_RangeCopyPaste($oWorkbook_result.Activesheet, Default, $oWorkbook_result.Activesheet.Range('A' & $start & ':D' & $end), False, Default, Default, True)
    _Excel_BookClose($sWorkbook_source)
Next

;Autofit
$oWorkbook_result.ActiveSheet.Columns("A:E").AutoFit