У меня есть 8 документов в папке, и я намерен создать 2 отдельных документа. 1-й документ с именем файла "содержит" '_B'; другие 4 документа без "_B". Я создаю код для объединения всех файлов, но необходимо реализовать это условие. Срочное требование, пожалуйста, помогите.

Кодовый файл

strPathSrc = "D:\testing pleae delete\test" ' Source files folder
strMaskSrc = "*.xlsx " ' Source files filter mask
iSheetSrc = 1 ' Sourse sheet index or name
strPathDst = "C:\Users\Admin\Desktop\sample1.xlsx" ' Destination file
iSheetDst = 1 ' Destination sheet index or name

Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Set objWorkBookDst = objExcel.Workbooks.Open(strPathDst)
Set objSheetDst = objWorkBookDst.Sheets(iSheetDst)
Set objShellApp = CreateObject("Shell.Application")
Set objFolder = objShellApp.NameSpace(strPathSrc)
Set objItems = objFolder.Items()
' objItems.Filter 64 + 128, strMaskSrc
objExcel.DisplayAlerts = False
' For Each objItem In objItems
'     Wscript.Echo objItem.Path
'     Wscript.Echo objItem.type
' Next
For Each objItem In objItems
    If objItem.type = "Microsoft Excel 97-2003 Worksheet" Or objItem.type = "Microsoft Office Excel 97-2003 Worksheet" Or objItem.type = "Microsoft Excel Worksheet" Or objItem.type = "Microsoft Excel Macro-Enabled Worksheet" Then
        Set objWorkBookSrc = objExcel.Workbooks.Open(objItem.Path)
        Set objSheetSrc = objWorkBookSrc.Sheets(iSheetSrc)
        GetUsedRange(objSheetSrc).Copy
        Set objUsedRangeDst = GetUsedRange(objSheetDst)
        iRowsCount = objUsedRangeDst.Rows.Count
        objWorkBookDst.Activate
        objSheetDst.Cells(iRowsCount + 2, 1).Select
        objSheetDst.Paste
        objWorkBookDst.Application.CutCopyMode = False
        objWorkBookSrc.Close
    End If
Next

Function GetUsedRange(objSheet)
    With objSheet
        ' Wscript.Echo ".UsedRange.Row"
        ' Wscript.Echo .UsedRange.Row
        ' Wscript.Echo ".UsedRange.Rows.Count"
        ' Wscript.Echo .UsedRange.Rows.Count
        ' Wscript.Echo ".UsedRange.Column"
        ' Wscript.Echo .UsedRange.Column
        ' Wscript.Echo ".UsedRange.Columns.Count"
        ' Wscript.Echo .UsedRange.Columns.Count
        Set GetUsedRange = .Range(.Cells(2, 1), .Cells(.UsedRange.Row + .UsedRange.Rows.Count - 1, .UsedRange.Column + .UsedRange.Columns.Count - 1))
    End With
    Wscript.Echo "============================"
End Function
objSheetDst.Rows("1:3").EntireRow.Delete

1 ответ1

0
$files = get-childitem 'path-to-folder-with-8-files'

$files | % {
   if ($_.Name -like "*_B*") { 
      $_.Name >> files_with_b.txt 
   } else {
      $_.Name >> files_without_b.txt 
   }
}

VBScript умер с PowerShell ... все еще можно использовать его ... просто, почему вы ...

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .