`
阅: 1938 | 回: 3
发表于2015/7/30 15:31:56 楼主 
头像 等级:初学者
积分:1
财富值:1.0
身份:普通用户

用VBA实现批量删除指定文件夹下工作表表头,如图所示,删除前与删除后效果。






但在运行时出错


(文件夹内工作薄模拟了上报的数据,只能保证结构相同,数据质量得不到保证,要求在这种情况下运行),请各位高手帮我看看代码错在哪儿?

补充内容(2015-7-30 15:32:23):
Sub deleteheadline()
Dim Fso As Object, Folder As Object
Dim i&, n&, a, b, Wb As Workbook, p$
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = ThisWorkbook.Path & "\"
If .Show = False Then Exit Sub
p = .SelectedItems(1)
End With
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set Fso = CreateObject("Scripting.FileSystemObject")
With ThisWorkbook
For Each File In Fso.GetFolder(p).Files
If File.Name Like "*.xls" Then
n = n + 1
Set Wb = Workbooks.Open(File)
Application.DisplayAlerts = False
If ThisWorkbook.MultiUserEditing Then
ThisWorkbook.UnprotectSharing ("")
End If
Application.DisplayAlerts = True
Wb.Unprotect
Wb.Sheets("基本情况(填表)").Unprotect
Wb.Sheets("基本情况(填表)").Rows("1:4").delete
Wb.Close False
End If
Next
End With
Set Fso = Nothing
Application.ScreenUpdating = True
MsgBox "表头已删除!"
End Sub

补充内容(2015-7-30 15:33:13):
求助Excel
没有Excel文件
奖赏:0 财富值
问题已过期
方案1
没有Excel文件
无人认领
方案2
没有Excel文件
无人认领
我的个性签名
发表于 2015/7/30 15:48:02
头像 等级:高手
积分:117
财富值:1
身份:普通用户

首先,如果你的工作簿设置了共享,是不可以用代码解除工作簿的保护的,所以当然会出错;

其次,你的代码当中wb.close false   设置成不保存关闭,当然不能成功删除表头

所以,必须改为wb.close true;

不懂能否解决你的问题??

我的个性签名
发表于 2015/7/30 15:56:38
头像 等级:学者
积分:88
财富值:2
身份:普通用户
顶楼上
我的个性签名
发表于 2019/5/9 15:15:18
头像 等级:学有小成
积分:17
财富值:2
身份:普通用户

快速回复

目前不允许游客发表,请 登录 注册 后再发贴。