当前位置:编程学习 > VB >>

VBA创建多级文件夹问题

请问用VBA创建文件夹时,用下面的这中写法,运行的时候找不到路径.请问是什么原因.如果只建立"D:\test"就没问题.
f = Dir("D:\test\aa", vbDirectory)   
If f = "" Then MkDir ("D:\test\aa")   --------------------编程问答-------------------- 一层层建咯

mkdir "d:\test"
mkdir "d:\test\aa" --------------------编程问答--------------------
引用 1 楼 supergreenbean 的回复:
一层层建咯 

mkdir "d:\test" 
mkdir "d:\test\aa"


...... --------------------编程问答-------------------- 目录总是一层一层健的,即使是DOS也是这样的 --------------------编程问答-------------------- 纠正一下,DOS可以一次建立多层 --------------------编程问答-------------------- 晕了................... 多看点书吧.

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

--------------------编程问答-------------------- 楼主高人! ^_^
--------------------编程问答-------------------- 学习了,不过,dll文件的确需要学习很多,资源的确强大。 --------------------编程问答-------------------- 路过学习
--------------------编程问答-------------------- 在EXCEL中用VBA创建文件夹
考虑到可能出现的错误。如在光盘中建立文件夹 --------------------编程问答-------------------- 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就行了。具体自己测试下就知道了 --------------------编程问答-------------------- 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)  --------------------编程问答-------------------- shell "md d:\test\aa",vbHide
补充:VB ,  VBA
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,