Может ли кто-нибудь проверить мой текущий код, чтобы убедиться, что он правильно написан?
Короче говоря, в настоящее время я стажируюсь в компании, которая отвечает за рассылку счетов клиентам. Я создал макрос, который будет помещать счета клиентов в их папку, которая хранится в том году, в котором был создан этот счет. Учитывая, что это январь 2020 года, все счета будут храниться в папке 2020, а затем по имени клиента. Я обеспокоен тем, что после окончания 2020 года и что папка 2021 еще не создана. Будет ли мой текущий код обрабатывать это соответствующим образом?
Текущий код определяет, существует ли папка клиента, и если нет, то создаст папку в текущем году с именем этого клиента в качестве папки. И так как у меня уже есть созданная папка 2020 года, я предполагаю, что в течение следующих лет будут какие-то ошибки, потому что эти папки еще не созданы.
Моя текущая надежда состоит в том, что, если на самом деле эта годовая папка не была создана, вместо ошибки времени выполнения, то она будет go к 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
Я надеюсь, что этого достаточно, чтобы помочь решить эту проблему.
Любая помощь приветствуется!