Board logo

标题: [文本处理] 求助Excel 批量查找插入数据 [打印本页]

作者: haichuan5121    时间: 2023-4-24 15:29     标题: 求助Excel 批量查找插入数据

本帖最后由 haichuan5121 于 2023-5-6 23:12 编辑

各位大哥大神们
            求教如何根据制定单元格内容批量插入指定数据行;
表格行数不一定,但C列每行都是唯一值
1)假如查找1009后在其后插入条件区黄色部分
2)假如查找1018后在其后插入条件区褐色部分
3)假如查找1023后在其后插入条件区紫色部分
4)填充后B列空白位置填充为上一行数据
[url=链接:https://pan.baidu.com/s/13nJ40KCHEVbxsmCvJ6ONlQ?pwd=8888  提取码:8888]附件[/url]
作者: haichuan5121    时间: 2023-4-24 15:35

本帖最后由 haichuan5121 于 2023-5-6 23:20 编辑

[img][/img]
作者: Batcher    时间: 2023-4-24 22:53

回复 1# haichuan5121


如果需要上传文件,可以用阿里云盘或百度网盘。

如果需要上传截图,可以找个图床,例如:
http://bbs.bathome.net/thread-60985-1-1.html
作者: mzzyb    时间: 2023-4-26 16:24

cmd不能实现打开和操作Excel文件吧~~只能用vba实现自动化~~~
作者: haichuan5121    时间: 2023-5-7 22:01

回复 3# Batcher


    已上附件
作者: czjt1234    时间: 2023-5-8 14:06

回复 5# haichuan5121


    如果你愿意付费,可以加我QQ
作者: haichuan5121    时间: 2023-5-9 13:13

本帖最后由 haichuan5121 于 2023-5-12 16:11 编辑

有大神吗?顶一顶
作者: haichuan5121    时间: 2023-5-15 10:15

本帖最后由 haichuan5121 于 2023-5-12 16:11 编辑


有大神吗?顶一顶
作者: TAT    时间: 2023-5-15 20:44

用VBA就可以
作者: terse    时间: 2023-5-15 22:00

用PS吧 应该可以的
作者: terse    时间: 2023-5-16 09:07

本帖最后由 terse 于 2023-5-16 10:46 编辑

运行前 请备份文件
  1. <# :
  2. @echo off
  3. powershell -noprofile -NoLogo "iex (${%~f0} | out-string)"
  4. pause$exit
  5. #>
  6. function get-data([int]$startrow, [int]$startcol, [int]$endrow, [int]$endcol, [string]$pat, [string]$file1, [string]$file2) {
  7. $excel = New-Object -ComObject Excel.Application
  8. $excel.Visible = $false
  9. $wb = $excel.Workbooks.Open($file2)
  10. $ws = $wb.Sheets.Item(1)
  11. $sr = $ws.Range($ws.Cells.Item($startrow, $startcol), $ws.Cells.Item($endrow, $endcol))
  12. $sd = $sr.Value2
  13. $dwb = $excel.Workbooks.Open($file1)
  14. $dws = $dwb.Sheets.Item(1)
  15. $fc = $dws.UsedRange.Find($pat)
  16. if ($fc -ne $null) {
  17. $rown = $fc.Row
  18. for ($i = 0; $i -le $endrow-$startrow; $i++) {
  19. $dws.Rows.Item($rown + 1).EntireRow.Insert()
  20. }
  21. $dsr = $dws.Range($dws.Cells.Item($rown + 1, $startcol), $dws.Cells.Item($rown + 1 + ($endrow - $startrow), $endcol))
  22. $dsr = $dsr.Resize($sr.Rows.Count, $sr.Columns.Count)
  23. $dsr.Value2 = $sd
  24. $sr.Copy()
  25. $dsr.PasteSpecial(-4122)
  26. for ($i = 1; $i -le $dsr.Rows.Count; $i++) {
  27. $val = $dsr.Cells.Item($i, 1).Offset(-1, 0)
  28. $dsr.Cells.Item($i, 1).Value2 = $val.Value2
  29. }
  30. }
  31. $excel.DisplayAlerts = $false
  32. $wb.Close($false)
  33. $dwb.Close($true)
  34. $excel.Quit()
  35. }
  36. $path=$PWD.Path
  37. $file1 = "$path\元数据.xlsx"
  38. $file2 = "$path\插入内容.xlsx"
  39. get-data -startrow 1 -startcol 2 -endrow 4 -endcol 9  -pat 1009 -file1 $file1 -file2 $file2
  40. get-data -startrow 6 -startcol 2 -endrow 8 -endcol 9  -pat 1018 -file1 $file1 -file2 $file2
  41. get-data -startrow 10 -startcol 2 -endrow 11 -endcol 9  -pat 1023 -file1 $file1 -file2 $file2
复制代码
加一个,换为复制对象
  1. <# :
  2. @echo off
  3. powershell -noprofile -NoLogo "iex (${%~f0} | out-string)"
  4. pause$exit
  5. #>
  6. function get-data([int]$startrow, [int]$startcol, [int]$endrow, [int]$endcol, [string]$pat, [string]$file1, [string]$file2) {
  7. $excel = New-Object -ComObject Excel.Application
  8. $excel.Visible = $false
  9. $wb = $excel.Workbooks.Open($file2)
  10. $ws = $wb.Sheets.Item(1)
  11. $sr = $ws.Range($ws.Cells.Item($startrow, $startcol), $ws.Cells.Item($endrow, $endcol))
  12. $dwb = $excel.Workbooks.Open($file1)
  13. $dws = $dwb.Sheets.Item(1)
  14. $fc = $dws.UsedRange.Find($pat)
  15. if ($fc -ne $null) {
  16. $rown = $fc.Row
  17. for ($i = 0; $i -le $endrow-$startrow; $i++) {
  18. $dws.Rows.Item($rown + 1).EntireRow.Insert()
  19. }
  20. $dsr = $dws.Range($dws.Cells.Item($rown + 1, $startcol), $dws.Cells.Item($rown + 1 + ($endrow - $startrow), $endcol))
  21. $dsr = $dsr.Resize($sr.Rows.Count, $sr.Columns.Count)
  22. $sr.Copy()
  23. $dsr.PasteSpecial(-4104)
  24. for ($i = 1; $i -le $dsr.Rows.Count; $i++) {
  25. $val = $dsr.Cells.Item($i, 1).Offset(-1, 0)
  26. $dsr.Cells.Item($i, 1).Value2 = $val.Value2
  27. }
  28. }
  29. $excel.DisplayAlerts = $false
  30. $wb.Close($false)
  31. $dwb.Close($true)
  32. [Runtime.Interopservices.Marshal]::ReleaseComObject($excel) | Out-Null
  33. }
  34. $path=$PWD.Path
  35. $file1 = "$path\元数据.xlsx"
  36. $file2 = "$path\插入内容.xlsx"
  37. get-data -startrow 1 -startcol 2 -endrow 4 -endcol 9  -pat 1009 -file1 $file1 -file2 $file2
  38. get-data -startrow 6 -startcol 2 -endrow 8 -endcol 9  -pat 1018 -file1 $file1 -file2 $file2
  39. get-data -startrow 10 -startcol 2 -endrow 11 -endcol 9  -pat 1023 -file1 $file1 -file2 $file2
复制代码

作者: haichuan5121    时间: 2023-5-17 15:12

@echo off
setlocal enabledelayedexpansion

set "file1=excel1.xlsx"
set "file2=excel2.xlsx"
set "file3=excel3.xlsx"

for %%f in ("%file1%" "%file2%" "%file3%") do (
    echo Processing "%%~nxf"...
    set "foundA=false"
    set "foundB=false"
    for /f "tokens=1,4 delims=," %%a in ('type "%%~f" ^| findstr /r /c:",[ABCD]$"') do (
        if "%%b"=="A" (
            set "foundA=true"
            set "insertRow=%%a"
        ) else if "%%b"=="B" (
            set "foundB=true"
            set "replaceCell=%%a"
        )
    )
    if !foundA! (
        echo Inserting rows in "%%~nxf"...
        powershell -Command "$excel = New-Object -ComObject Excel.Application; $workbook = $excel.Workbooks.Open('%%~ff'); $worksheet = $workbook.Worksheets.Item(1); $row = $worksheet.Cells.Item($insertRow).EntireRow; $row.Insert(); $worksheet.Cells.Item($insertRow+1,1).Value = 'New row 1'; $worksheet.Cells.Item($insertRow+2,1).Value = 'New row 2'; $worksheet.Cells.Item($insertRow+3,1).Value = 'New row 3'; $workbook.Save(); $workbook.Close(); $excel.Quit();"
    )
    if !foundB! (
        echo Replacing cell in "%%~nxf"...
        powershell -Command "$excel = New-Object -ComObject Excel.Application; $workbook = $excel.Workbooks.Open('%%~ff'); $worksheet = $workbook.Worksheets.Item(1); $cell = $worksheet.Cells.Item(!replaceCell!); $cell.Value = 'New value'; $workbook.Save(); $workbook.Close(); $excel.Quit();"
    )
)
这个怎么改
作者: terse    时间: 2023-5-17 15:41

$insertRow !insertRow!
作者: haichuan5121    时间: 2023-5-17 16:11

本帖最后由 haichuan5121 于 2023-5-17 17:45 编辑

回复 12# haichuan5121
。另外批次文件插入怎么修改呀!现单文件可以修改;如果EXCEL 里面俩Sheet的话,怎么插入到第二个Sheet
是不是这个代码对XLS 文件不适用啊 怎么修改能兼容XLS文件的;如果不想替换4)填充后B列空白位置填充为上一行数据 这个功能怎么修改啊
作者: haichuan5121    时间: 2023-5-17 17:03

本帖最后由 haichuan5121 于 2023-5-17 18:23 编辑

回复 11# terse


   大神怎么批量处理EXCEL;咱代码能单个插入,另外如果EXCEL是多Sheet组成怎么插到第二个sheet
$dws = $dwb.Sheets.Item(1)改成$dws = $dwb.Sheets.Item(2)?  是这样的 可以了。。。


第 1 行的 <# 和第 20 行的 #> 是注释的开始和结束标记,表示这段代码是一个注释块。在代码执行时,这个注释块会被忽略掉。这种写法可以让这段代码既可以作为注释,又可以作为 PowerShell 脚本来执行。

第 2 行的 @echo off 表示关闭命令行窗口的回显功能。

第 3 行的 powershell -noprofile -NoLogo "iex (${%~f0} | out-string)" 表示在 PowerShell 中执行代码。其中,-noprofile 表示不加载 PowerShell 的配置文件;-NoLogo 表示不显示 PowerShell 的标志;${%~f0} 表示获取当前脚本的完整路径;out-string 表示将输出转换为字符串;iex 表示执行字符串作为 PowerShell 脚本。

第 4 行的 pause 表示在代码执行完毕后暂停,等待用户按下任意键继续。

第 5 行的 $exit 表示退出 PowerShell。

第 7~28 行是一个名为 get-data 的函数,用来查找指定内容并插入数据。该函数接受 7 个参数:$startrow、$startcol、$endrow、$endcol、$pat、$file1 和 $file2。其中,$startrow、$startcol、$endrow 和 $endcol 表示要查找的单元格范围;$pat 表示要查找的内容;$file1 表示要插入数据的 Excel 文件;$file2 表示要查找内容的 Excel 文件。

第 9~11 行创建一个 Excel 应用程序对象,并将其设置为不可见。

第 12~13 行打开要查找内容的 Excel 文件,并获取第一个工作表对象。

第 14 行使用 Range 方法获取指定的单元格范围。

第 15~16 行打开要插入数据的 Excel 文件,并获取第一个工作表对象。

第 17~18 行使用 UsedRange 属性获取已使用的单元格范围,并在其中查找指定内容。

第 19~27 行根据查找到的单元格位置,插入指定行数的数据。

第 29~32 行设置 Excel 的一些选项,包括关闭警告对话框和关闭工作簿时不保存更改。

第 33~34 表示释放 Com 对象,以释放 Excel 应用程序的资源。

第 36~38 表示调用 get-data 函数三次,分别查找不同的单元格范围,并在另一个 Excel 文件中插入指定行数的数据。

需要注意的是,这段代码使用了 PowerShell 的 COM 对象来操作 Excel 文件,因此需要在运行之前确保计算机上已安装 Microsoft Office。此外,如果你的计算机上安装的是 64 位的 Office,则需要使用 64 位的 PowerShell 来运行此脚本。
作者: haichuan5121    时间: 2023-5-17 18:24

回复 11# terse


    另外批次文件插入怎么修改呀!现单文件可以修改;如果EXCEL 里面俩Sheet的话,怎么插入到第二个Sheet
是不是这个代码对XLS 文件不适用啊 怎么修改能兼容XLS文件的;如果去掉“”4)填充后B列空白位置填充为上一行数据 这个功能“”怎么修改啊
作者: terse    时间: 2023-5-17 18:28

你这个是直接从PS里拿来的吧 变量改一下 多个Sheet就改这里是多少就改多少  $wb.Sheets.Item(2),文件不在同一个的话 就少一个文件 复制上一行数据的话 参照
....
$val = $dsr.Cells.Item($i, 1).Offset(-1, 0) 这里是上一行的值
$dsr.Cells.Item($i, 1).Value2 = $val.Value2 这里是赋值
....
作者: haichuan5121    时间: 2023-5-18 00:04

回复 17# terse


    1)同文件夹下数十个文件 怎么能批量插入啊,2)XLS文件怎么不能执行呢
作者: terse    时间: 2023-5-18 09:11

回复 18# haichuan5121
循环调用函数试试,xls文件问题也许是版本问题, 不知你那边为什么不行,环境不清楚,不好说
作者: haichuan5121    时间: 2023-5-22 12:07

回复 19# terse
大神 再看下;下面的代码能完美实现多个文件的整理;但是需要提前将文件路径写到Files1和Files2里面,每行一个文件路径;
  怎么修改可以实现当前文件夹下直接提取需要执行的文件路径生成Files1,需要插入的文件就是,插入内容.xsls


    <# :
echo on
powershell -noprofile -NoLogo "iex (${%~f0} | out-string)"
pause
#>
function get-data([int]$startrow, [int]$startcol, [int]$endrow, [int]$endcol, [string]$pat, [string[]]$files1, [string[]]$files2) {
        foreach ($file2 in $files2) {
                $excel = New-Object -ComObject Excel.Application
                $excel.Visible = $false
                $wb = $excel.Workbooks.Open($file2)
                $ws = $wb.Sheets.Item(1)
                $sr = $ws.Range($ws.Cells.Item($startrow, $startcol), $ws.Cells.Item($endrow, $endcol))
                $sd = $sr.Value2
                foreach ($file1 in $files1) {
                        $dwb = $excel.Workbooks.Open($file1)
                        $dws = $dwb.Sheets.Item(2)
                        $fc = $dws.UsedRange.Find($pat)
                        if ($fc -ne $null) {
                                $rown = $fc.Row
                                for ($i = 0; $i -le $endrow-$startrow; $i++) {
                                        $dws.Rows.Item($rown + 1).EntireRow.Insert()
                                }
                                $dsr = $dws.Range($dws.Cells.Item($rown + 1, $startcol), $dws.Cells.Item($rown + 1 + ($endrow - $startrow), $endcol))
                                $dsr = $dsr.Resize($sr.Rows.Count, $sr.Columns.Count)
                                $dsr.Value2 = $sd
                                $sr.Copy()
                                $dsr.PasteSpecial(-4122)
                                for ($i = 1; $i -le $dsr.Rows.Count; $i++) {
                                        # $val = $dsr.Cells.Item($i, 1).Offset(-1, 0)
                                        # $dsr.Cells.Item($i, 1).Value2 = $val.Value2
                                }
for ($i = 1; $i -le $dsr.Rows.Count; $i++) {
                        $val = $dsr.Cells.Item($i, 4).Offset(-5, 0)
                        $dsr.Cells.Item($i, 4).Value2 = $val.Value2
                        }
                        $dwb.Close($true)
                }
}
                $excel.DisplayAlerts = $false
                $wb.Close($false)
                $excel.Quit()
                [Runtime.Interopservices.Marshal]::ReleaseComObject($excel) | Out-Null
        }
}

$files1 = Get-Content "files1.txt"

$files2 = Get-Content "files2.txt"

get-data -startrow 1 -startcol 2 -endrow 4 -endcol 9 -pat 1004 -files1 $files1 -files2 $files2
get-data -startrow 6 -startcol 2 -endrow 8 -endcol 9 -pat 1011 -files1 $files1 -files2 $files2
get-data -startrow 10 -startcol 2 -endrow 11 -endcol 9 -pat 1013 -files1 $files1 -files2 $files2
作者: terse    时间: 2023-5-22 13:04

本帖最后由 terse 于 2023-5-22 15:07 编辑

这样?
$file1 = @(file1,file2,file3)
$file2 = '.\插入内容.xlsx'
作者: haichuan5121    时间: 2023-5-22 14:44

回复 21# terse

就是原先那个代码 多文件执行前需要把每个文件路径写到Files1文本内,插入的内容写到Files2里;

怎么实现,我不需要提前写Files1 他就可以自动读取列表执行,
    C:\Users\10000\Desktop\测试p1\元数据.xlsx
    C:\Users\10000\Desktop\测试p1\元数据-副本.xlsx
    C:\Users\10000\Desktop\测试p1\元数据-副本2.xlsx
作者: terse    时间: 2023-5-22 15:22

回复 22# haichuan5121
不把文件路径写入文本,就把文件路径写入数组,然后传函数,这样吗,要不你就用Get-Content提取文件
作者: haichuan5121    时间: 2023-5-22 15:36

本帖最后由 haichuan5121 于 2023-5-22 17:50 编辑

回复 21# terse
大哥 给看下 这个为啥执行了三遍插入啊 怎么修改啊?
<# :

echo on & setlocal EnableDelayedExpansion

for /f "delims=" %%i in ('"dir /a/s/b/on 元数据*.*"') do (

set file=%%~fi

set file=!file:/=/!

echo !file! >> files1.txt

)
powershell -noprofile -NoLogo "iex (${%~f0} | out-string)"
pause
#>
function get-data([int]$startrow, [int]$startcol, [int]$endrow, [int]$endcol, [string]$pat, [string[]]$files1, [string[]]$files2) {
        foreach ($file2 in $files2) {
                $excel = New-Object -ComObject Excel.Application
                $excel.Visible = $false
                $wb = $excel.Workbooks.Open($file2)
                $ws = $wb.Sheets.Item(1)
                $sr = $ws.Range($ws.Cells.Item($startrow, $startcol), $ws.Cells.Item($endrow, $endcol))
                $sd = $sr.Value2
                foreach ($file1 in $files1) {
                        $dwb = $excel.Workbooks.Open($file1)
                        $dws = $dwb.Sheets.Item(2)
                        $fc = $dws.UsedRange.Find($pat)
                        if ($fc -ne $null) {
                                $rown = $fc.Row
                                for ($i = 0; $i -le $endrow-$startrow; $i++) {
                                        $dws.Rows.Item($rown + 1).EntireRow.Insert()
                                }
                                $dsr = $dws.Range($dws.Cells.Item($rown + 1, $startcol), $dws.Cells.Item($rown + 1 + ($endrow - $startrow), $endcol))
                                $dsr = $dsr.Resize($sr.Rows.Count, $sr.Columns.Count)
                                $dsr.Value2 = $sd
                                $sr.Copy()
                                $dsr.PasteSpecial(-4122)
                                for ($i = 1; $i -le $dsr.Rows.Count; $i++) {
                                        # $val = $dsr.Cells.Item($i, 1).Offset(-1, 0)
                                        # $dsr.Cells.Item($i, 1).Value2 = $val.Value2
                                }
for ($i = 1; $i -le $dsr.Rows.Count; $i++) {
                        $val = $dsr.Cells.Item($i, 4).Offset(-5, 0)
                        $dsr.Cells.Item($i, 4).Value2 = $val.Value2
                        }
                        $dwb.Close($true)
                }
}
                $excel.DisplayAlerts = $false
                $wb.Close($false)
                $excel.Quit()
                [Runtime.Interopservices.Marshal]::ReleaseComObject($excel) | Out-Null
        }
}

$files1 = Get-Content "files1.txt"

$files2 = Get-Content "files2.txt"

get-data -startrow 1 -startcol 2 -endrow 4 -endcol 9 -pat 1004 -files1 $files1 -files2 $files2
get-data -startrow 6 -startcol 2 -endrow 8 -endcol 9 -pat 1011 -files1 $files1 -files2 $files2
get-data -startrow 10 -startcol 2 -endrow 11 -endcol 9 -pat 1013 -files1 $files1 -files2 $files2
作者: haichuan5121    时间: 2023-5-22 18:32

回复 23# terse
添加判断语句后,只执行一个文件其余的就不执行了,怎么修改。。。。


    <# :

echo on & setlocal EnableDelayedExpansion

for /f "delims=" %%i in ('"dir /a/s/b/on 元数据*.*"') do (

set file=%%~fi

set file=!file:/=/!

echo !file! >> files1.txt

)
powershell -noprofile -NoLogo "iex (${%~f0} | out-string)"
pause
#>
function get-data([int]$startrow, [int]$startcol, [int]$endrow, [int]$endcol, [string]$pat, [string[]]$files1, [string[]]$files2) {
        foreach ($file2 in $files2) {
    $excel = New-Object -ComObject Excel.Application
    $excel.Visible = $false
    $wb = $excel.Workbooks.Open($file2)
    $ws = $wb.Sheets.Item(1)
    $sr = $ws.Range($ws.Cells.Item($startrow, $startcol), $ws.Cells.Item($endrow, $endcol))
    $sd = $sr.Value2
    $found = $false
    foreach ($file1 in $files1) {
        $dwb = $excel.Workbooks.Open($file1)
        $dws = $dwb.Sheets.Item(2)
        $fc = $dws.UsedRange.Find($pat)
        if ($fc -ne $null) {
            $found = $true
            $rown = $fc.Row
            for ($i = 0; $i -le $endrow-$startrow; $i++) {
                $dws.Rows.Item($rown + 1).EntireRow.Insert()
            }
            $dsr = $dws.Range($dws.Cells.Item($rown + 1, $startcol), $dws.Cells.Item($rown + 1 + ($endrow - $startrow), $endcol))
            $dsr = $dsr.Resize($sr.Rows.Count, $sr.Columns.Count)
            $dsr.Value2 = $sd
            $sr.Copy()
            $dsr.PasteSpecial(-4122)
            for ($i = 1; $i -le $dsr.Rows.Count; $i++) {
                # $val = $dsr.Cells.Item($i, 1).Offset(-1, 0)
                # $dsr.Cells.Item($i, 1).Value2 = $val.Value2
            }
            for ($i = 1; $i -le $dsr.Rows.Count; $i++) {
                $val = $dsr.Cells.Item($i, 4).Offset(-5, 0)
                $dsr.Cells.Item($i, 4).Value2 = $val.Value2
            }
            $dwb.Close($true)
            break
        }
    }
    if (!$found) {
        Write-Host "Pattern $pat not found in any file."
    }
    $excel.DisplayAlerts = $false
    $wb.Close($false)
    $excel.Quit()
    [Runtime.Interopservices.Marshal]::ReleaseComObject($excel) | Out-Null

        }
}

$files1 = Get-Content "files1.txt"

$files2 = Get-Content "files2.txt"

get-data -startrow 1 -startcol 2 -endrow 4 -endcol 9 -pat 1004 -files1 $files1 -files2 $files2
get-data -startrow 6 -startcol 2 -endrow 8 -endcol 9 -pat 1011 -files1 $files1 -files2 $files2
get-data -startrow 10 -startcol 2 -endrow 11 -endcol 9 -pat 1013 -files1 $files1 -files2 $files2
作者: terse    时间: 2023-5-22 18:53

回复 25# haichuan5121
这样行不
  1.     if (!$found) {
  2.         Write-Host "Pattern $pat not found in any file."
  3.         $excel.DisplayAlerts = $false
  4.         $wb.Close($false)
  5.         $excel.Quit()
  6.         [Runtime.Interopservices.Marshal]::ReleaseComObject($excel) | Out-Null
  7.         return
  8.     }
复制代码

作者: haichuan5121    时间: 2023-5-22 19:09

本帖最后由 haichuan5121 于 2023-5-22 19:11 编辑

回复 26# terse


    效果一样的呢;还是只插入一个excel后面的就不执行了;三遍插入的原因是在 PowerShell 脚本中使用了两个嵌套的 foreach 循环,这样会导致对每个文件都进行一次插入操作。如果需要对每个文件进行一次插入操作,可以将 foreach 循环改为 if 判断这个怎么修改
作者: terse    时间: 2023-5-22 19:41

回复 27# haichuan5121

晕了,以为你就只要操作一次文件插入,先说说加的$found意图是什么
作者: terse    时间: 2023-5-22 20:47

没有搜索到关键词 就不执行下面的
  1. if (!$found) {
  2.     Write-Host "Pattern $pat not found in any file."
  3. } else {
  4.     $excel.DisplayAlerts = $false
  5.     $wb.Close($false)
  6.     $excel.Quit()
  7.     [Runtime.Interopservices.Marshal]::ReleaseComObject($excel) | Out-Null
  8. }
复制代码

作者: haichuan5121    时间: 2023-5-23 08:57

回复 29# terse


    不好意思 24楼执行是对的;插入三遍是因为Files1文件没有清空,里面有三遍路径导致的;
作者: terse    时间: 2023-5-23 09:51

回复 30# haichuan5121
能处理就好,就是觉得有点乱,还不如直接让ps在函数外面处理好;数组在函数外面循环,然后传进函数是两个文件加关键词及行列数;
行列数从文件的单元表格的背景色来获取要增加代码,行列固定的话不如直接按数组一次性传进函数,你现在是一个文件替换三次的话,是不是要传三次;
当然,怎样方便怎样来吧




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2