在用户选择的路径中创建一个文件夹并像我想要的那样命名该文件夹
Posted
技术标签:
【中文标题】在用户选择的路径中创建一个文件夹并像我想要的那样命名该文件夹【英文标题】:Create a folder in the path the user chose and name the folder like i want 【发布时间】:2020-01-21 19:18:13 【问题描述】:我没有使用 VBA 的经验,但我试图让用户选择一个文件夹的路径,如果该文件夹不存在则需要创建,然后提取将放入文本文件中的三列 Excel在创建的文件夹中。
在你们的帮助下,我的代码现在可以运行了!!
我应该做什么样的改变?如果你知道一种方法来简化我的代码,那就太好了!
Sub register_formated_data()
'
' register_formated_data Macro
'
Dim order As Object
Dim Folder As Object
Dim Folder_path As String
Dim lastrow As Long
FolderName = "Formated Files"
Filename = "formated" & Right(File_path, InStr(File_path, "\"))
Dim FL As String ' FL is for file location
Sheets(8).Cells(12, 12).Value = ""
With Application.FileDialog(msoFileDialogFolderPicker) '
.Title = "Select the folder" 'Open the file explorer
.InitialFileName = ThisWorkbook.path & "\" 'for you to select
.InitialView = msoFileDialogViewDetails 'the file you want
.AllowMultiSelect = True 'to format
.Show '
On Error GoTo PROC_EXIT
If Not .SelectedItems(1) = vbNullString Then FL = .SelectedItems(1)
End With
Sheets(8).Cells(12, 12).Value = FL
Folder_path = FL + "\" + FolderName
Set fso = CreateObject("Scripting.FileSystemObject")
If Not fso.FolderExists(Folder_path & FolderName) Then
fso.CreateFolder(Folder_path).Name = FolderName
End If
PROC_EXIT: 结束子
【问题讨论】:
您可能需要查看MkDir
以创建目录或文件夹。
@alexilas 用户如何选择不存在的文件夹的路径?用户可以选择父文件夹并检查其中的文件夹。例如,用户选择 c:\temp\,如果文件夹 c:\tenp\Formated Files\ 不存在,则创建它。你是这个意思吗?
@CDP1802 是的,这就是我想说的。从我在“mkdir”上看到的内容来看,这似乎是我应该考虑的事情! ...我不确定我应该如何实现 mkdir,但我会搜索一下
@Cyril 我找到了一种让我的代码工作的方法,但我对mkdir
methode 很感兴趣!!有关于***的例子吗??
@alexilas 如果您在帖子中使用 FileSystemObject,您可以在同一对象上使用 CreateTextFile 方法来创建转储文件。
【参考方案1】:
fso.Name
不是 FSO 的方法或属性。您只需要CreateFolder
,但请确保路径以所需的文件夹名称结尾。所以它应该是:
fso.CreateFolder FFolder_Path
还在这里指出您说的是Folder_path
而不是ffolder_path
。我会将您的文件夹路径命名为更有意义的名称,以避免将来出现此错误。特别是考虑到它以 2 个重复字符开头。
刚刚再次查看您的代码,不知道为什么您有一个从 1 到 1 的 For
循环,除非您希望它在那里以便将来可能循环(尽管如果它循环,它只会不断覆盖 @ 987654329@ 直到集合中的最后一项):
For lngCount = 1 To 1
'MsgBox .SelectedItems(lngCount)
On Error GoTo PROC_EXIT
If .SelectedItems(lngCount) <> "" Then 'if the file exist, folder_location take the value of the selected file
FL = .SelectedItems(lngCount)
Else
End
End If
'MsgBox "Text :" & previous_version_folder
Next lngCount
我只想说
On Error GoTo PROC_EXIT
If Not .SelectedItems(1) = vbNullString Then FL = .SelectedItems(1)
【讨论】:
添加Option Expicit
hint!是什么阻止了so.CreateFolder Folder_path
andfolder.Name
上的错误可以像fso.CreateFolder(FFolder_path).Name = FolderName
一样使用
@jclasley 我认为你的意思是 Option Explicit
@ComputerVersteher 我不确定为什么要添加Option explicit
。因为我是一个完全的“菜鸟”,有隐式 var 应该可以帮助我......对吗??
@alexilas。啊,欢迎来到SO!请收下tour 并阅读How to Ask!向搜索引擎询问“vba option explicit”的结果是什么?如果您不理解部分结果,您可以提问,但始终表现出自己的努力(并且将问题放入搜索引擎是最低限度的!)。
@ComputerVersteher 我搜索了option explicit
,但我想我的最后一条评论在option explicit
的微软页面上不够明确(没有双关语意图),他们说如果打开,我必须声明我使用的每个 var!据我了解,如果我尝试实现一些即兴的 var,它会向我发送一个错误,除非必须声明使用的每个 var 是一件好事?哦,顺便说一句,谢谢你的旅游链接!!我虽然没有具体的提问方式!我会读的!以上是关于在用户选择的路径中创建一个文件夹并像我想要的那样命名该文件夹的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法在javascript中创建hashmap并像添加和删除值一样操作它