如何从多个excel文件中删除多个名为Sheet+;数

如何从多个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

我有一个宏,我想对文件夹中的每个excel文件应用数据验证,保存并关闭它。 但是现在我发现这个宏将应用于第一个打开的工作表,而不是文件名为Name.LastName的工作表

这些文件中有多个具有类似的工作表

  • 表1
  • 表2
  • 表3
  • Name.LastName
如何卸下活页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
环
如果结束