gpt4 book ai didi

excel - 用于创建新文件夹的数据验证

转载 作者:行者123 更新时间:2023-12-03 07:52:33 24 4
gpt4 key购买 nike

有人可以检查我当前的代码以确保正确编写了吗?

简而言之,我目前正在为一家负责向客户发送发票的公司进行实习。我创建了一个宏,该宏会将客户发票放入其文件夹中,该文件夹存储在该发票创建的年份下。鉴于现在是2020年1月,所有发票将存储在2020文件夹下,然后按客户名称存储。我担心的是,一旦2020年结束,并且尚未创建2021文件夹。我当前的代码可以正确处理吗?

当前代码确定客户文件夹是否已经存在,如果不存在,它将在当年下创建一个以该客户名称为文件夹的文件夹。并且由于我已经创建了2020文件夹,因此我假设接下来的几年会出现某种类型的错误,因为这些文件夹尚未创建。

我目前的希望是,如果实际上尚未创建年度文件夹,而不是运行时错误,它将进入ErrorHandlerCreateNewYearFolder,然后它将首先创建文件夹路径并创建该年份的新文件夹,然后从在那里,在新的一年下创建客户新文件夹。这是我当前的代码:

If fdObj.FolderExists("C:\Users\" & strInvoiceYear & "\ " & GroupID) Then 'if the Clients folder already exists....
Call EmailClient((EmailValue), (GroupID)) '...then the necessary data required is already availiable, so it calls to the EmailClient sub function
Else

On Error GoTo ErrorHandlerCreateNewYearFolder ' In the occation of a potential error, the code below will skip the run time error and try its best to handle this
fdObj.CreateFolder ("C:\Users\" & strInvoiceYear & "\ " & GroupID)
Exit Sub
' INSIGHT: THE LINE OF CODE BELOW CREATES A FOLDER THAT CONTAINS THE GROUPID OF A CLIENT WITHIN THAT YEAR. SO GIVEN THAT THE CURRENT YEAR IS 2020, IT WILL STORE ALL INVOICES WITHIN THAT FOLDER
' HOWEVER, THERE IS NO CURRENT 2021,2020, ETC FOLDERS, SO THIS LINE OF CODE WILL BE UNABLE TO DETERMINE THE CORRECT PATH OF strInvoiceYear BECAUSE THIS VARIABLE'S (THAT CURRENT YEAR) FOLDER HAS
' YET TO HAVE BEEN CREATED. SO THERE MAY BE A RUN TIME ERROR. HOWEVER, THIS CODE BELOW SHOULD HELP OVERCOME THIS POTENTIAL ISSUE

ErrorHandlerCreateNewYearFolder: 'THIS IS AN ERROR HANDLER, SO IF THE NEW YEAR STARTS, LIKE 2021, AND NO 2021 FOLDER HAS BEEN CREATED, THE PROGRAM WILL GO HERE
fdObj.CreateFolder ("C:\Users\" & strInvoiceYear) ' IN WHICH THE PROGRAM WILL THEN CREATE THE NEW YEAR FOLDER
fdObj.CreateFolder ("C:\Users\" & strInvoiceYear & "\ " & GroupID) ' AND THEN CREATE THE NEW CLIENT FOLDER OF THAT YEAR
Resume Next

MsgBox ("Folder created successfully."), vbInformation ' notifies user that a new folder has been created for the client
Call EmailClient((EmailValue), (GroupID)) ' This then calls to the EmailClient sub function where the data from that client will then be emailed to them
End If

我希望这足以帮助确定此问题。

任何帮助表示赞赏!

最佳答案

我看不到这里需要错误处理程序。这很简单。

我拉出了Call。无论如何,我们都在调用EmailClient,因此您不必将其嵌套在条件中。取而代之的是运行检查,必要时创建文件夹,然后使用已有的调用EmailClient

您的第一个条件检查文件夹是否存在。如果是这样,那就太好了,不再需要有条件的了。如果不是,它的 parent 吗?如果答案是否定的,请回答。如果答案是肯定的,请带 child 。然后发送。

If fdObj.FolderExists("C:\Users\" & strInvoiceYear & "\ " & GroupID) = True Then

'Check if the parent folder exists (returns true if it doesn't)
ElseIf fdObj.FolderExists("C:\Users\" & strInvoiceYear) = False Then
'Create parent
fdObj.CreateFolder ("C:\Users\" & strInvoiceYear)
'Create group folder
fdObj.CreateFolder ("C:\Users\" & strInvoiceYear & "\ " & GroupID)
Else
fdObj.CreateFolder ("C:\Users\" & strInvoiceYear & "\ " & GroupID)
End If

Call EmailClient((EmailValue), (GroupID))

End Sub

如果您真的想添加错误处理程序,可以将其放在 EmailClient调用之前或 EmailClient内部。使用正确的条件格式,您在这里所做的工作应该非常简单。

另外,作为注释,您的评论太长了。如果只是简短的注释,请继续并将其粘贴在代码之后。如果要发表较长的评论,请放在前面,然后将更长的评论分成多行。没有人喜欢横向滚动。

理想情况下,您将使用 If Not完全跳过第一个子句,但是鉴于您提供的代码已被注释掉,因此我希望对您保持可读性。

关于excel - 用于创建新文件夹的数据验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59827785/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com