Я буквально новичок в VBA, поэтому не очень разбираюсь в этом, но мне было поручено создавать папки на основе пользовательского ввода в пользовательскую форму VBA, которые выводятся на лист Excel.
У меня есть три столбца, в которые пользователь может вводить значения: Год, Тип и Имя файла
Год - это текстовое поле, в которое можно ввести год.Тип представляет собой список.Имя файла - это текстовое поле
У меня нет проблем с отображением пользовательского ввода на листе Excel, но я не могу понять, как создать папку.Вот мой код:
'create functions for checking if folder exists and creating folder
Function FolderExists(ByVal path As String) As Boolean
FolderExists = False
Dim fso As New FileSystemObject
If fso.FolderExists(path) Then FolderExists = True
End Function
Function FolderCreate(ByVal path As String) As Boolean
FolderCreate = True
Dim fso As New FileSystemObject
If Functions.FolderExists(path) Then
Exit Function
Else
On Error GoTo DeadInTheWater
fso.CreateFolder path
Exit Function
End If
DeadInTheWater:
MsgBox "A folder could not be created for the following path: " & path & ". Check the path name and try again."
FolderCreate = False
Exit Function
End Function
Function CleanName(strName As String) As String
'will clean part # name so it can be made into valid folder name
'may need to add more lines to get rid of other characters
CleanName = Replace(strName, "/", "")
CleanName = Replace(CleanName, "*", "")
End Function
Private Sub Label1_Click()
End Sub
Private Sub Label2_Click()
End Sub
Private Sub TotMktSeg_Click()
End Sub
Private Sub Label3_Click()
End Sub
Private Sub TextBox_Filename_Change()
End Sub
'create dropdown options in the listbox
Private Sub UserForm_Initialize()
'Me.ListBox_TotMktSeg.AddItem "Market"
'Me.ListBox_TotMktSeg.AddItem "Segment"
'Me.ListBox_TotMktSeg.AddItem "Total"
With Me.ListBox_TotMktSeg
.AddItem "Market"
.AddItem "Segment"
.AddItem "Total"
End With
End Sub
Private Sub Year_Change()
End Sub
'when button is clicked, output user input to excel sheet and create a folder
Private Sub Run_Click()
'Copy input values to sheet.
Dim lRow As Long
Dim ws As Worksheet
Dim strType As String
Dim strYear As String
Dim strPath As String
Dim strFile As String
Set ws = Worksheets("Sheet1")
lRow = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
With ws
.Cells(lRow, 1).value = Me.TextBox_Year.value
.Cells(lRow, 2).value = Me.ListBox_TotMktSeg.value
.Cells(lRow, 3).value = Me.TextBox_Filename.value
End With
strType = Me.TextBox_Year.value
strYear = Me.ListBox_TotMktSeg.value
strFile = Me.TextBox_Filename.value
strPath = "C:\Users\siope1kd\Documents\HD VB stuff\"
If Not FolderExists(strPath & strType) Then
FolderCreate (strPath & "\" & strType & "\" & strYear)
Else
If Not FolderExists(strPath & strType & "\" & strYear) Then
FolderCreate (strPath & strType & "\" & strYear)
End If
End If
'Clear input controls.
Me.TextBox_Year.value = ""
Me.ListBox_TotMktSeg.value = ""
Me.TextBox_Filename.value = ""
End Sub
Основная проблема заключается в том, что я получаю
ошибка времени выполнения 424 с указанием «Требуется объект»
для FolderExists Функция.
Я буквально собрал этот код воедино из других источников и не могу выяснить проблему здесь.
Большое спасибо за помощь.
Кит