如何从多个excel文件中删除多个名为Sheet+;数
我有一个宏,我想对文件夹中的每个excel文件应用数据验证,保存并关闭它。 但是现在我发现这个宏将应用于第一个打开的工作表,而不是文件名为Name.LastName的工作表 这些文件中有多个具有类似的工作表如何从多个excel文件中删除多个名为Sheet+;数,excel,vba,Excel,Vba,我有一个宏,我想对文件夹中的每个excel文件应用数据验证,保存并关闭它。 但是现在我发现这个宏将应用于第一个打开的工作表,而不是文件名为Name.LastName的工作表 这些文件中有多个具有类似的工作表 表1 表2 表3 Name.LastName 如何卸下活页1、2、3或有多少张活页。 只留下Name.LastName Sub LoopThroughFiles() Dim xFd As FileDialog Dim xFdItem As Variant Dim
- 表1
- 表2
- 表3
- Name.LastName
Sub LoopThroughFiles()
Dim xFd As FileDialog
Dim xFdItem As Variant
Dim xFileName As String
Set xFd = Application.FileDialog(msoFileDialogFolderPicker)
If xFd.Show = -1 Then
xFdItem = xFd.SelectedItems(1) & Application.PathSeparator
xFileName = Dir(xFdItem & "*.xls*")
Do While xFileName <> ""
With Workbooks.Open(xFdItem & xFileName)
'your code here
Columns("A:A").Select
With Selection.Validation
.Delete
.Add Type:=xlValidateInputOnly, AlertStyle:=xlValidAlertStop, Operator _
:=xlBetween
.IgnoreBlank = True
.InCellDropdown = True
.ShowInput = True
.ShowError = True
End With
ActiveWorkbook.Save
ActiveWorkbook.Close
End With
xFileName = Dir
Loop
End If
End Sub
Sub-LoopThroughFiles()
Dim xFd As文件对话框
Dim xFdItem作为变量
Dim xFileName作为字符串
设置xFd=Application.FileDialog(msoFileDialogFolderPicker)
如果xFd.Show=-1,那么
xFdItem=xFd.SelectedItems(1)和Application.PathSeparator
xFileName=Dir(xFdItem&“*.xls*”)
当xFileName“”时执行此操作
打开工作簿(xFdItem&xFileName)
'您的代码在这里
列(“A:A”)。选择
选择。验证
.删除
.Add类型:=xlValidateInputOnly,警报样式:=XLVALIDATALERTSTOP,运算符_
:=xlBetween
.IgnoreBlank=True
.InCellDropdown=True
.ShowInput=True
.ror=真
以
活动工作簿。保存
活动工作簿。关闭
以
xFileName=Dir
环
如果结束
端接头
如果该代码可以在此处以某种方式实现,则会更好您必须在活动工作簿上执行工作表循环。试试下面的方法
Sub LoopThroughFiles()
Dim xFd As FileDialog, xFdItem As Variant, xFileName As String, CrntWbk As Workbook, Ws As Worksheet
Set xFd = Application.FileDialog(msoFileDialogFolderPicker)
If xFd.Show = -1 Then
xFdItem = xFd.SelectedItems(1) & Application.PathSeparator
xFileName = Dir(xFdItem & "*.xls*")
Do While xFileName <> ""
Set CrntWbk = Workbooks.Open(xFdItem & xFileName)
With CrntWbk
For Each Ws In CrntWbk.Worksheets
If Ws.Name = "Name.LastName" Then
' If Worksheet Name is "Name.LastName", it applies the validation
With WS.Columns("A:A").Validation
.Delete
.Add Type:=xlValidateInputOnly, AlertStyle:=xlValidAlertStop, Operator _
:=xlBetween
.IgnoreBlank = True
.InCellDropdown = True
.ShowInput = True
.ShowError = True
End With
Else
'Deletes other sheets
Application.DisplayAlerts = False
Ws.Delete
Application.DisplayAlerts = True
End If
Next Ws
.Save
.Close
End With
xFileName = Dir
Loop
End If
Sub-LoopThroughFiles()
Dim xFd作为文件对话框,xFdItem作为变量,xFileName作为字符串,CrntWbk作为工作簿,Ws作为工作表
设置xFd=Application.FileDialog(msoFileDialogFolderPicker)
如果xFd.Show=-1,那么
xFdItem=xFd.SelectedItems(1)和Application.PathSeparator
xFileName=Dir(xFdItem&“*.xls*”)
当xFileName“”时执行此操作
设置CrntWbk=Workbooks.Open(xFdItem&xFileName)
使用CrntWbk
对于CrntWbk.工作表中的每个Ws
如果Ws.Name=“Name.LastName”,则
'如果工作表名称为“Name.LastName”,则应用验证
使用WS.Columns(“A:A”)。验证
.删除
.Add类型:=xlValidateInputOnly,警报样式:=XLVALIDATALERTSTOP,运算符_
:=xlBetween
.IgnoreBlank=True
.InCellDropdown=True
.ShowInput=True
.ror=真
以
其他的
'删除其他工作表
Application.DisplayAlerts=False
Ws.Delete
Application.DisplayAlerts=True
如果结束
下一个Ws
拯救
.结束
以
xFileName=Dir
环
如果结束