【发布时间】:2023-04-11 05:56:01
【问题描述】:
我的代码可以将 .csv 文档合并到一个工作簿中并编辑一些小事。它创建一个工作簿,从“暂存文件夹”中随机播放文件,然后自动调整/隐藏一些列/使第 1 行变为粗体。
.csv 是 Python 程序的输出,可以包含 1-8 个文件。八个文件中的每一个都有一个唯一的名称,并且在每个输出中都保持不变。
例如:
几何错误总是会给出一个名为几何错误的输出。
根据发现的错误,输出将始终包含八个文件的某种组合。
如果我没有所有八个文件,则代码无法正常工作。
它会在名为“DVIEW Staging”的暂存文件夹中查找,如果找不到该文件,则我有 On Error Resume Next 行。
Application.DisplayAlerts = False
Set newbook = Workbooks.Add
ActiveWorkbook.SaveAs Filename:=Aname & "DVIEW Outputs.xlsx"
Environ ("USERPROFILE") + "\DVIEW Staging"
On Error Resume Next
Workbooks.Open Filename:= _
Environ("USERPROFILE") & "\Desktop\DVIEW Staging\Geometry_Errors_Table.csv"
On Error Resume Next
Sheets("Geometry_Errors_Table").Move After:=Workbooks("DVIEW Outputs.xlsx").Sheets(1)
Columns("A:Z").EntireColumn.AutoFit
Range("A:A,B:B,C:C,I:I,J:J,K:K,L:L").Select
Selection.EntireColumn.Hidden = True
Rows("1:1").Select
Selection.Font.Bold = True
Range("D1").Select
On Error Resume Next
Workbooks.Open Filename:= _
Environ("USERPROFILE") & "\Desktop\DVIEW Staging\Fiber_and_Splice_Relationship_Errors.csv"
On Error Resume Next
Sheets("Fiber_and_Splice_Relationship_E").Move After:=Workbooks("DVIEW Outputs.xlsx").Sheets(1)
Columns("A:Z").EntireColumn.AutoFit
Range("A:A,C:C").Select
Selection.EntireColumn.Hidden = True
Rows("1:1").Select
Selection.Font.Bold = True
Range("B1").Select
On Error Resume Next
因此,当它找不到它时,它会运行 CURRENT 表(它找到的那个)上的所有隐藏和自动调整命令。这意味着如果输出文件夹中有一张纸,它可能会再运行七次自动调整/隐藏/粗体。
如果找不到文档,我如何阻止一段代码跳过?
我希望文件搜索下的代码块在该文件上运行,或者根本不运行。
我不希望 Geometry Errors 代码块隐藏 Fiber_and_Splice_Relationship_Errors 表上的七列,然后在此之后运行 Fiber_and_Splice_Relationship_Errors 命令(因为我只希望为那一列隐藏两列)。
【问题讨论】:
-
那个答案说如果找不到文件就退出子,我不希望它完全退出宏的其余部分。如果文件存在,我希望它运行所有 8 个块,但如果该文件不存在,则跳过单个代码块。
-
您是否尝试过使用
If语句先查看.csv 文件是否存在,如果该文件在目录中不存在,请使用GoTo而不是On Error Resume Next来查找下一个 .csv 文件。On Error Resume Next将忽略错误并运行下一行代码。 -
@J.Wagner 考虑将您的过程分解为更小的子过程:您的宏正在做太多事情,这就是为什么 - 并且 它需要控制流语句,例如
If...Then...Else...End If。另请注意,重复运行On Error Resume Next不会做任何事情;一次就足够了——如果需要的话(很少需要)。 -
Zack E,我认为这将是一个很好的方法!不过,让我先看看其他答案选项。