フォームを使用して、ディレクトリ、親フォルダー名を入力し、一連のチェックボックスを使用して、親フォルダー内で機能するサブフォルダーをタブで選択しようとしています。
ドライブ、プロジェクト名、プロジェクト番号を入力すると、最初に親フォルダーが存在するかどうかがチェックされ、存在しない場合は作成されます。
次に、[Use Online] チェックボックスがアクティブかどうかを確認し、アクティブな場合は、[Online] タブ内の他のすべてのチェックボックスの名前の配列を作成します。各チェックボックス名をループして、それぞれがアクティブかどうかを確認し、そうであれば、各チェックボックスの「キャプション」を取得して、それを使用して親ディレクトリ内にサブフォルダーを作成するため、注意が必要です。 (まだ存在しない場合)。
現在のコードを実行すると、「実行時エラー '424' オブジェクトが必要です」という行が表示されます
If itm.Value = True Then
黄色で強調表示されました。
このユーザー フォームの「フォルダーの作成」部分に使用されるすべてのコードは、次のとおりです。
Private Sub create_folders_button_Click()
'Create a variable for the drive letter
Dim driveLetter As String
driveLetter = drive_list.Value
'Create a variable for the project name
Dim projectName As String
projectName = p_name_textbox.Value
'Create a variable for the project number
Dim projectNumber As String
projectNumber = p_number_textbox.Value
'Create a variable for the constructed BasePath
Dim BasePath As String
'Create a new file system object for handling filesystem manipulation
Set fs = CreateObject("Scripting.FileSystemObject")
'Populate an array with the online subfolders
Dim onlineSubfolders As Variant
onlineSubfolders = Array("online_progCosts", "online_exports")
'Compile the basePath
BasePath = driveLetter & projectName & " (" & projectNumber & ")"
'Check if the project folder already exists and if so, raise an error and exit
If Dir(BasePath, vbDirectory) <> "" Then
MsgBox BasePath & " already exists", , "Error"
Else
'Create the project folder
MkDir BasePath
MsgBox "Parent folder creation complete"
If online_toggle.Value = True Then
Dim online As String
online = "Online"
MkDir BasePath & "\" & online
Dim itm As Variant
For Each itm In onlineSubfolders
If folder_creator_window.Controls(itm).Value = True Then
Dim createFolder As String
createFolder = folder_creator_window.Controls(itm).Caption
NewFolder = BasePath & "\" & online & "\" & createFolder
If fs.folderexists(NewFolder) Then
'do nothing
Else
MkDir NewFolder
End If
Else
'do nothing
End If
Next itm
Else
MsgBox "The online folder was not created because it was not checked"
End If
End If
End Sub