批量修改多个工作簿
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
]
发表于 2011-10-26 15:48:04 |只看该作者|倒序浏览
批量修改多个工作簿可同时对许多工作簿同时进行修改。
有时,我们有许多相同格式的数据文件,如果需要对这些数据文件进行相同格式或内容的修改,这时,如果一个一个打开工作簿再修改的话,那么操作起来即费时,又容易出错。
我们可以使用VBA来解决批量修改多个工作簿的问题。什么我不懂VBA。其实不难,不懂VBA也没关系。如果你不懂VBA,那么只要仔细看,只有一个地方是需要你自己改的。其它的只管照抄就行了。开始吧!
那么如何批量修改多个工作簿呢
我们整理这样的思路:
1、能不能让Excel自动打开每一个工作簿,修改完成后,再关闭保存
2、Excel如何知道我要修改的这些工作簿和修改内容呢
3、是同时打开这些工作簿修改呢;还是一次打开一个工作簿后,在每一个工作表中修改保存,然后再打开别一个修改保存
下面我们提供这样一种批量修改多个工作簿的办法:
1、一次提供给Excel所有要修改的工作簿
2、每次打开一个工作簿后,在每一个工作表中修改后保存关闭,再打开另一个修改,直至批量修改所有指定的多个工作簿。
批量修改多个工作簿的操作步骤如下:
1、打开VBE代码编辑器,打开的方法参照这两个页面的介绍Excel2003打开代码编辑器、Excel2007打开代码编辑器
2、在右侧的窗口中输入:
1.Public strPath(1000) As String
2.Public strBookName(1000) As String
复制代码
这两个数组用来保存要批量修改多个工作簿的路径和文件名称,因为我们在后面要用到,所以采用Public关键字,定义公用变量。
3、接着在右侧的窗口中输入:
1.Public Function OpenExcelFile(nFileNum As Integer) As String
2. Dim nCount As Integer
3. For nCount = 1 To nFileNum
4.strPath(nCount) = (fileFilter:="Microsoft
Excel(*.xls), *.xls,Microsoft Excel(*.xlsx), *.xlsx")
5.If strPath(nCount) = "False" Then
6. MsgBox "Excel文件错误", vbCritical
7. Exit Function
8.End If
9. Filename:=strPath(nCount), UpdateLinks:=0,
ReadOnly:=False
10.strBookName(nCount) =
11. Next nCount
12.End Function
复制代码
这个函数用来循环打开指定的Excel文件。
4、接着在右侧的窗口中输入:
1.Sub ModifyFiles()
2. Dim vFileNum As Variant
3. vFileNum = Trim(InputBox("请输入打开文件的数量(1-1000):
"))
4.If vFileNum < 1 Or vFileNum > 1000 Then
5.MsgBox "数量错误", vbCritical
6.Exit Sub
7.End If
8.
9. OpenExcelFile (vFileNum)
10. Dim nCountFile As Integer
11. For nCountFile = 1 To vFileNum
12.If strPath(nCountFile) = "False" Then
13.Exit Sub
14.End If
15. Next nCountFile
16.
17. = False
18. For nCountFile = 1 To vFileNum
19.Workbooks(strBookName(nCountFile)).Activate
20.Dim sht As Worksheet
21.For Each sht In Worksheets
22. '更改这一行代码在所有的工作表内修改。
23. sht.[A1] = 1
24.Next
25.Workbooks(strBookName(nCountFile)).Close True
26. Next nCountFile
27. = True
28.
29. MsgBox "完成!", vbInformation
30.End Sub
复制代码
这个函数用来批量修改多个工作簿,一次打开一个工作簿后,在每一个工作表中修改保存、然后再打开别一个修改保存,直至批量修改所有指定的多个工作簿,完成后提示。其中上面代码的第23行:
1.sht.[A1] = 1
复制代码
即是修改的代码,这个代码的意思是A1单元格的值是1。
其它的代码都不需要管,只需要把你要在每个工作簿的工作表中修改的内容,替换掉这个代码即可。比如B1单元格的内容是“Excel伙伴天下”,可以改成这样:
1.sht.[B1] = "Excel伙伴天下"
复制代码
那么所有的工作簿中工作表的B1单元格的内容就被批量修改为“Excel伙伴天下”。5、将光标定位在你已经替换好的要批量修改多个工作簿的代码处,按F5键,运行程序。Excel提示你要一次修改多少个文件,然后依次打开这些文件,如果你打开的文件数量和输入的数量相等,Excel就开始批量修改多个工作簿;否则Excel退出,什么也不做。
6、批量修改多个工作簿完成后,Excel给出完成提示,指定的文件即完成指量修改。
注意:代码中的汉字如果复制到VBA代码编辑器中是乱码,那么在对应代码处手工输入中文,这样在代码运行时,你可以看到Excel给出的提示。
批量修改多个工作簿的问题
关于上面批量修改多个工作簿代码,如果我要一次修改1000文件,我不是要打开1000次文件,这也是挺累人的
另外,如果我要修改的文件超过1000个呢
还有,从C5:C10的单元格区域要批量修改,我一个一个写么有没有更好的办法
还有,我只想在这些文件的第一个工作表中修改,也就是批量修改多个工作簿的第一个工作表,这个怎么改呢
......
相信这些都不是问题,当你把前面的都弄明白了,应该就知道了要改什么地方,才能达到你要批量修改多个工作簿的目的。
如何, 工作, 工作表, 多, 编辑器