VBA批量修改文件夹里所有文件

计算机语言、软件、硬件
回复
peng
Site Admin
帖子: 199
注册时间: 周五 11月 01, 2019 9:06 am

VBA批量修改文件夹里所有文件

帖子 peng »

VBA批量修改文件夹里所有文件

Private Sub CommandButton1_Click()
On Error Resume Next
文件目录 = ThisWorkbook.Path & "\Excel\"
Set fso = CreateObject("Scripting.FileSystemObject")
Set fldr = fso.GetFolder(文件目录)
For Each s In fldr.Files
With GetObject(文件目录 & s.Name)
.Sheets(1).Cells.Replace What:=" ", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False '随便做一点改动
.SaveAs ThisWorkbook.Path & "\Excel_修改后\" & s.Name '保存
.Windows(1).Visible = True '工作表可见
.Close (True) '保存改动
End With
Next
End Sub

peng
Site Admin
帖子: 199
注册时间: 周五 11月 01, 2019 9:06 am

Re: VBA批量修改文件夹里所有文件

帖子 peng »

For n = 1 To UBound(f)
        With GetObject(f(n))   'getobject是隐藏的
            .Sheets("121").UsedRange.Copy ActiveSheet.Range("a" & Rows.Count).End(xlUp).Offset(1)
            .Close  '关闭的是vbe窗口里不显示工作簿
         End With
Next

peng
Site Admin
帖子: 199
注册时间: 周五 11月 01, 2019 9:06 am

Re: VBA批量修改文件夹里所有文件

帖子 peng »

通过getobject打开的Excel文件只要被修改(写)并保存后,就只能在VBE中看到,但用户界面却看不到。
就算重启Excel,再去手动打开此文件,也是什么都看不到。不保存就没有这个问题!
如果要解决这个问题,必须在wb.close 前加一句
Application.Windows(wb.name).Visible = True

回复