吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1183|回复: 16
收起左侧

[求助] 不打开表格 批量替换单元格中的数据,求VBA代码

[复制链接]
zhenghm1104 发表于 2023-7-16 21:42
各位大神,如图1,prog文件夹中有100多个表格,表格模式一样(如图2)A3格多是2023/2/1。问题:不打开excel表格的情况下,批量替换A3单元格中的数据,全部替换成2023/7/8。求VBA代码,谢谢
图1.jpg
图2.jpg

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

wyw6813 发表于 2023-7-16 22:07
[Visual Basic] 纯文本查看 复制代码
Sub ModifyCellContent()
    ' 设置目录路径
    Dim folderPath As String
    folderPath = "D:\Prog\" '修改为你的目录路径
    
    ' 创建一个 Excel 应用例
    Dim excelApp As Object
    Set excelApp = CreateObject("Excel.Application")
    
    ' 遍历目录下的所有 .xlsx 文件
    Dim fileName As String
    fileName = Dir(folderPath & "*.xlsx")
    
    Do While Len(fileName) > 0
        ' 打开工作簿
        Dim workbook As Object
        Set workbook = excelApp.Workbooks.Open(folderPath & fileName)
        
        ' 获取第一个工作表
        Dim worksheet As Object
        Set worksheet = workbook.Worksheets(1)
        
        ' 修改单元格内容
        worksheet.Range("A3").Value = "2023/7/8"
        
        ' 保存工作簿
        workbook.Save
        
        ' 关闭工作簿
        workbook.Close
        
        ' 继续遍历下一个文件
        fileName = Dir
    Loop
    
    ' 关闭 Excel 应用程序
    excelApp.Quit
    
    ' 释放 Excel 对象
    Set excelApp = Nothing
End Sub

免费评分

参与人数 1吾爱币 +2 热心值 +1 收起 理由
星星相惜d + 2 + 1 太细了,对轻度使用者极度友好

查看全部评分

Caraciold_Jr 发表于 2023-7-16 22:15
本帖最后由 Caraciold_Jr 于 2023-7-16 22:42 编辑

[Visual Basic] 纯文本查看 复制代码
Sub ReplaceA3InAllFiles()
    Dim folderPath As String
    Dim fileName As String
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim targetCell As Range
    Dim newDate As Date
    
    ' 指定文件夹路径
    folderPath = "C:\path\to\your\prog\folder\"
    
    ' 设置新的日期值
    newDate = DateSerial(2023, 7, 8)
    
    ' 检查路径末尾是否有反斜杠
    If Right(folderPath, 1) <> "\" Then folderPath = folderPath & "\"
    
    ' 获取文件夹中的第一个Excel文件名
    fileName = Dir(folderPath & "*.xls*")
    
    ' 遍历文件夹中的所有Excel文件
    Do While fileName <> ""
        ' 打开工作簿
        Set wb = Workbooks.Open(folderPath & fileName)
        
        ' 遍历工作簿中的所有工作表
        For Each ws In wb.Worksheets
            ' 设置目标单元格
            Set targetCell = ws.Range("A3")
            
            ' 替换目标单元格的数据
            targetCell.Value = newDate
        Next ws
        
        ' 保存并关闭工作簿
        wb.Close SaveChanges:=True
        
        ' 获取文件夹中的下一个Excel文件名
        fileName = Dir
    Loop
End Sub

免费评分

参与人数 1吾爱币 +2 热心值 +1 收起 理由
星星相惜d + 2 + 1 太细了,对轻度使用者极度友好

查看全部评分

Oldikeyo 发表于 2023-7-16 22:17
浪漫的老板 发表于 2023-7-16 22:23
学习学习!!!
罗萨 发表于 2023-7-16 22:29
Set objFSO = CreateObject("Scripting.FileSystemObject") ' 创建文件系统对象
Set objExcel = CreateObject("Excel.Application") ' 创建 Excel 应用程序对象
objExcel.Visible = False ' 不显示 Excel 窗口

' 获取当前目录下的所有 Excel 文件
Set objFolder = objFSO.GetFolder(".")
For Each objFile In objFolder.Files
    If LCase(objFSO.GetExtensionName(objFile.Path)) = "xls" Or LCase(objFSO.GetExtensionName(objFile.Path)) = "xlsx" Then
        
        ' 构建连接字符串
        strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & objFile.Path & ";Extended Properties='Excel 12.0;HDR=YES;IMEX=1;'"
        
        ' 建立连接
        Set objConn = CreateObject("ADODB.Connection")
        objConn.Open strConn
        
        ' 执行更新语句,替换指定单元格内容(F2为格子位置)
        strSQL = "UPDATE [Sheet1$] SET F2='替换后的内容'"
        objConn.Execute strSQL
        
        ' 关闭连接
        objConn.Close
    End If
Next

' 退出 Excel 应用程序
objExcel.Quit

' 释放对象
Set objConn = Nothing
Set objExcel = Nothing
Set objFolder = Nothing
Set objFSO = Nothing
江河宁夏 发表于 2023-7-17 07:13
这有些高难度
WAfslove 发表于 2023-7-17 07:22
学习一下,有用
wjbg2022 发表于 2023-7-17 07:57
关闭屏幕刷新?真的可以不打开表格吗?
haduke 发表于 2023-7-17 08:16
不打开估计不行,用第三方的组件,后台打开,100多个文件,也就1秒的事。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 21:57

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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