VBA:如何删除具有不同文件的特定文件夹中的列“A”,其中工作表名称有所不同
我有一个文件夹在我的桌面有或多或less的2000个csv
文件。 这些文件只有1个“图纸”,但图纸名称有所不同。 唯一类似的是,它以“Tankard”开头。
在这张表中,我只需要删除Column A
并保存所有2000个文件。 它只是我的第二个月在工作中探索vba自动化。 如果有人能帮助我,我将不胜感激。 提前致谢。
脚本:
Sub Tank() Dim wb As Workbook Dim myPath As String Dim myfile As String Dim myExtension As String Dim SheetName As String 'Optimize Macro Speed Application.ScreenUpdating = False Application.EnableEvents = False Application.Calculation = xlCalculationManual SheetName = "Tankard*" myPath = "\\ph00winfdfs01p\shares\JoeyC\documents\Roaming\Windows\Desktop\Tank\" If myPath = "" Then GoTo ResetSettings 'Target File Extension (must include wildcard "*") myExtension = "Tankard*.csv" 'Target Path with Ending Extention myfile = Dir(myPath & myExtension) 'Loop through each Excel file in folder For i = 1 To 201 Set wb = Workbooks.Open(Filename:=myPath & myfile) ';;;;;;;;;;;;;;WRITE YOUR CODE HERE Sheets("SheetName").Select Columns("A").Select Selection.Delete wb.Close SaveChanges:=True Next i 'Get next file name myfile = Dir 'Message Box when tasks are completed MsgBox "Task Complete!" ResetSettings: 'Reset Macro Optimization Settings Application.EnableEvents = True Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True End Sub
试着了解发生了什么。 这个小组目前做的是打开Dir
find的第一个工作簿,打开它201次,并删除第一列表“Sheetname”每次。
Sheets("SheetName").Select
这将select名称为"Sheetname"
,而不是将名称设置为stringSheetname
的名称。 如果有的话,应该是Sheets(Sheetname)
但是通配符在这里不起作用。
现在让我们看看你正在努力实现的过程。
myfile = Dir(myPath & myExtension)
将myfile
设置为与您的模式匹配的第一个文件...\Tankard*.csv
Set wb = Workbooks.Open(Filename:=myPath & myfile)
打开文件,现在可以通过wb
访问工作簿
要删除工作表上的第一列,我build议select所有的东西,但直接删除范围:
wb.Sheets(1).Columns(1).Delete 'If you want to actually delete the column wb.Sheets(1).Columns(1).Clear 'If you want to just remove the values
正如你所看到的,根本不需要表格的名字。 现在保存工作簿:
wb.Close SaveChanges:=True
现在您可以使用Dir
将myfile
设置为下一个文件名:
myfile = Dir
然后重复,直到没有更多的文件(在这一点上, Dir
将返回""
。最好的办法是使用一个While
循环,例如像这样
While myfile <> "" 'Do stuff here Wend '(While End)
For
循环的优点是不需要知道文件夹中文件的确切数量。
我会把它留给你,一起打补丁。