VBA创建多级文件夹问题

zhfisking 2008-04-16 08:45:58
请问用VBA创建文件夹时,用下面的这中写法,运行的时候找不到路径.请问是什么原因.如果只建立"D:\test"就没问题.
f = Dir("D:\test\aa", vbDirectory)
If f = "" Then MkDir ("D:\test\aa")
...全文
2069 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
yrenyuan 2010-12-10
  • 打赏
  • 举报
回复
mkdir不能在不存在的文件夹上建立新的文件夹。
MakeSureDirectoryPathExists可以一次建立N多文件夹。
最多能生成几层文件夹”跟VB无关,只取决于操作系统。

MkDir 对‘不存在的文件夹’只能一级一级的创建。

如果想‘一次性创建多级文件夹’可以用这个 API :
Private Declare Function MakeSureDirectoryPathExists Lib "imagehlp.dll" (ByVal DirPath As String) As Long

Sub CreateDir()
MakeSureDirectoryPathExists basepath & "\" & "EM001_060" & "\" & path_path & "\" + subfolder0.Name
End Sub


如果是调用kernel32的函数的话,路径最长不超过260。在260个字符数中你喜欢弄几层是几层。但是如果是使用ntdll的函数的话,限制就要小些,只要目录名不长于256就行了。具体自己测试下就知道了
赵4老师 2010-12-10
  • 打赏
  • 举报
回复
shell "md d:\test\aa",vbHide
  • 打赏
  • 举报
回复
http://baike.baidu.com/view/4061614.htm
函数原型
  BOOL MakeSureDirectoryPathExists(   PCSTR Dirpath   );
函数作用
  该函数的作用是检查指定目录是否存在,如果不存在则创建整个Dirpath所表示的整个目录。
参数
  Dirpath:要检查的目录名。如果是路径不是文件名,需以 '\' 结尾。
返回值
  如果目录存在,返回TRUE;如果不存在但全部路径创建成功,返回TRUE;   如果不存在且创建失败,返回FALSE。
编辑本段函数使用
  一次性建立多级目录(用CreateDirectory只能一级一级的建立)。   如:   MakeSureDirectoryPathExists( "c:\\a\\b\\ ");   如果a文件夹不存在也可以创建成功。   这个函数并不存在于 Kernel32.dll 中,需要链接 dbghelp.lib。   该函数的实现如下,以供使用和学习。   LPTSTR _tCharAlloc(UINT uSize)
okexcel 2010-09-17
  • 打赏
  • 举报
回复
在EXCEL中用VBA创建文件夹
考虑到可能出现的错误。如在光盘中建立文件夹
Dlsongzhi1984 2010-08-10
  • 打赏
  • 举报
回复
路过学习
老幺啊 2010-08-10
  • 打赏
  • 举报
回复
学习了,不过,dll文件的确需要学习很多,资源的确强大。
cbm6666 2008-04-16
  • 打赏
  • 举报
回复
晕了................... 多看点书吧.

Private Declare Function MakeSureDirectoryPathExists Lib "imagehlp.dll" (ByVal DirPath As String) As Long
Private Sub Command1_Click()
MakeSureDirectoryPathExists "c:\0\1\2\3\"
End Sub

EdmundBull 2008-04-16
  • 打赏
  • 举报
回复
纠正一下,DOS可以一次建立多层
EdmundBull 2008-04-16
  • 打赏
  • 举报
回复
目录总是一层一层健的,即使是DOS也是这样的
舉杯邀明月 2008-04-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 supergreenbean 的回复:]
一层层建咯

mkdir "d:\test"
mkdir "d:\test\aa"
[/Quote]

......
supergreenbean 2008-04-16
  • 打赏
  • 举报
回复
一层层建咯

mkdir "d:\test"
mkdir "d:\test\aa"
舉杯邀明月 2008-04-16
  • 打赏
  • 举报
回复
楼主高人! ^_^

2,506

社区成员

发帖
与我相关
我的任务
社区描述
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
社区管理员
  • VBA
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧