Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA:如何删除列";A「;在具有不同文件且图纸名称不同的特定文件夹中_Vba_Excel_Csv_Macros - Fatal编程技术网

VBA:如何删除列";A「;在具有不同文件且图纸名称不同的特定文件夹中

VBA:如何删除列";A「;在具有不同文件且图纸名称不同的特定文件夹中,vba,excel,csv,macros,Vba,Excel,Csv,Macros,我的桌面上有一个文件夹,里面有大约2000个csv文件。这些文件只有1个“工作表”,但工作表名称不同。唯一相似的是,它以“Tankard”一词开头 在这一页中,我只需要删除列A并保存它,用于所有2000个文件。这是我在工作中探索vba自动化的第二个月。如果有人能帮助我,我将不胜感激。提前谢谢 脚本: Sub Tank() Dim wb As Workbook Dim myPath As String Dim myfile As String Dim myExtension As String D

我的桌面上有一个文件夹,里面有大约2000个
csv
文件。这些文件只有1个“工作表”,但工作表名称不同。唯一相似的是,它以“Tankard”一词开头

在这一页中,我只需要删除
列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
可以找到的第一个工作簿,将其打开201次,并每次删除工作表“Sheetname”的第一列

Sheets("SheetName").Select
这将选择名为“Sheetname”的工作表,而不是名为设置字符串“Sheetname的值的工作表。如果有的话,应该是
Sheets(Sheetname)
,但通配符在这里无论如何都不起作用

现在,让我们看看您试图实现的过程

myfile = Dir(myPath & myExtension)
myfile
设置为与模式匹配的第一个文件
..\Tankard*.csv

Set wb = Workbooks.Open(Filename:=myPath & myfile)
打开文件,现在您可以通过
wb

要删除工作表上的第一列,我建议选择所有内容,但直接删除范围:

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)
While myfile“”
“在这里做事
Wend'(结束时)
For
循环相比,它的优点是不需要知道文件夹中文件的确切数量


我将把这一切交给你来解决。

试着了解发生了什么。目前,此子任务是打开
Dir
可以找到的第一个工作簿,打开它201次,每次删除工作表“Sheetname”的第一列

Sheets("SheetName").Select
这将选择名为“Sheetname”的工作表,而不是名为设置字符串“Sheetname”的值的工作表。如果有的话,它应该是
工作表(Sheetname)
,但通配符在这里无论如何都不起作用

现在,让我们看看您试图实现的过程

myfile = Dir(myPath & myExtension)
myfile
设置为与模式匹配的第一个文件
..\Tankard*.csv

Set wb = Workbooks.Open(Filename:=myPath & myfile)
打开文件,现在您可以通过
wb

要删除工作表上的第一列,我建议选择所有内容,但直接删除范围:

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)
While myfile“”
“在这里做事
Wend'(结束时)
For
循环相比,它的优点是不需要知道文件夹中文件的确切数量


我将让您自己来解决这些问题。

打开csv文件时,工作表名称不就是文件名(没有扩展名)吗?(我没有csv文件和excel的经验,但这就是它为我做的)谢谢您的输入。我的问题解决了!工作表名称不就是文件名(没有扩展名)吗打开csv文件时?(我没有使用csv文件和excel的经验,但这正是它为我所做的)谢谢你的输入。我的问题解决了!我能够把你所有的建议放在一起。它工作了!谢谢。新的VBA,只是试图通过这个网站和其他网站了解概念。加上YouTube视频。谢谢Agaiglad我可以帮助。你可以考虑标记这是当时回答;我能把你所有的建议放在一起。它工作了!谢谢。新的VBA,只是试图通过这个网站和其他网站了解概念。再加上YouTube视频。谢谢Agaiglad我可以帮助。你可以考虑标记这是当时回答;