ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
12
返回列表 发新帖
楼主: haichuan5121

[求助] 求助大神 按查找条件批量插入表格求助 [

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-5-11 14:35 | 显示全部楼层
ykcbf1100 发表于 2023-5-11 14:22
代码应该没有啥问题,你如果无法执行,那我也帮不了你了。
让别的老师来吧。

谢谢 老师 我下班后 宿舍电脑在更新一版附件 ;您那多个文件一起都能执行吗?我这儿只能执行最新的文件呢;

TA的精华主题

TA的得分主题

发表于 2023-5-11 15:00 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
haichuan5121 发表于 2023-5-11 14:35
谢谢 老师 我下班后 宿舍电脑在更新一版附件 ;您那多个文件一起都能执行吗?我这儿只能执行最新的文件呢 ...

目前的代码只能处理单个文件。如果要处理多个文件,代码得修改。

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-5-12 17:09 | 显示全部楼层
ykcbf1100 发表于 2023-5-11 15:00
目前的代码只能处理单个文件。如果要处理多个文件,代码得修改。

辛苦老师有时间给研究研究怎么处理多个文件

TA的精华主题

TA的得分主题

发表于 2023-5-12 20:16 来自手机 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 zpy2 于 2023-5-12 20:20 编辑
haichuan5121 发表于 2023-5-11 14:12
我直接在你的答复里面下载执行的;单位电脑有域加密上传不了文件

新疆是华北?

分组合并 为啥不分到下一组 合并单元格?

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-5-15 10:13 | 显示全部楼层
zpy2 发表于 2023-5-12 20:16
新疆是华北?

分组合并 为啥不分到下一组 合并单元格?

这个是假设的例子 原始文件有域加密不能上传和编辑;内容条件区是合并的,插入后希望也是合并的但实际就就分行了不是想要的格式

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-5-24 09:18 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
ykcbf1100 发表于 2023-5-11 15:00
目前的代码只能处理单个文件。如果要处理多个文件,代码得修改。

下面的代码能完美执行想要的结果 ,但仅支持XLSX文件,XLS的不支持 大哥给看下怎么修改啊
<# :

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)
            Start-Sleep -Milliseconds 500
            break
        }
        $dwb.Close($true)
        Start-Sleep -Milliseconds 500
    }
if (!$found) {
    Write-Host "Pattern $pat not found in any file."
} else {
    $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 12100 -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

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-5-29 16:51 | 显示全部楼层
haichuan5121 发表于 2023-5-24 09:18
下面的代码能完美执行想要的结果 ,但仅支持XLSX文件,XLS的不支持 大哥给看下怎么修改啊
> files1.txt
...

顶一顶,大神帮忙看下怎么修改代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-16 08:18 , Processed in 0.030427 second(s), 5 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表