o___o___o 发表于 2008-5-26 20:55

又是VB的问题?

vb如何创建多个文件夹?
例如点command1按钮,会在当前目录建立temp目录,下面含有30个子目录,目录1,目录2一直到目录30?
本人新手,请高手贴源码,我会加分的!谢了。

multiple1902 发表于 2008-5-26 21:08

[code]Dim i As Byte
For i=1 to 30
Shell "cmd.exe /c md " & App.Path & "\temp\" & Trim(CStr(i))
Next[/code]其实你问的无非就是怎么创建文件夹,多个不多个,1到30还是别的什么都不影响问题的本质(所以请尽量精简您的问题),上面的代码执行效率是比较低的,如果你的i要上百就别用了,vb里创建文件夹有如下方法:
1. 调用VB自带的MkDir函数,按说看书的都应该知道
[quote]Sub MkDir(Path As String)
    Member of VBA.FileSystem
    Creates a new directory or folder
[/quote]
2.使用FSO创建文件夹[code]
Dim fso
Set fso=CreateObject("Scripting.FileSystemObject")
fso.CreateFolder path
Set fso=Nothing
[/code][quote]  脚本运行时库   
CreateFolder 方法
请参阅
CopyFolder 方法 | DeleteFolder 方法 | MoveFolder 方法
应用于:FileSystemObject 对象
语言
JScript

VBScript

显示所有语言
创建文件夹。

object.CreateFolder(foldername)
参数
object
必选项。应为 FileSystemObject 的名称。
foldername
必选项。字符串表达式,标识所要创建的文件夹。
说明
如果指定的文件夹已经存在则出错。

下面的代码说明了如何使用 CreateFolder 方法来创建一个文件夹。

[JScript]
var fso = new ActiveXObject("Scripting.FileSystemObject");
var a = fso.CreateFolder("c:\\new folder");
[VBScript]
Function CreateFolderDemo
   Dim fso, f
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.CreateFolder("c:\New Folder")
   CreateFolderDemo = f.Path
End Function
请参阅
CopyFolder 方法 | DeleteFolder 方法 | MoveFolder 方法
应用于:FileSystemObject 对象
--------------------------------------------------------------------------------
© 2001 Microsoft Corporation. 保留所有权利。[/quote]
3. 调用外部程序,即系统内部命令md(当然也可以写作mkdir)[code]
shell "cmd.exe /c md " & path
[/code]

multiple1902 发表于 2008-5-26 21:09

"我会加分的"

您打算怎么加分?

o___o___o 发表于 2008-5-26 21:59

谢谢,第一个代码虽然效率不高,但代码精简,我喜欢。我代表党和人民感谢你。

multiple1902 发表于 2008-5-26 22:03

[quote][bo][un]o___o___o[/un] 在 2008-5-26 21:59 的发言:[/bo]

谢谢,第一个代码虽然效率不高,但代码精简,我喜欢。我代表党和人民感谢你。 [/quote]
MkDir函数更简洁呀

o___o___o 发表于 2008-5-26 22:07

为什么不能这样写?
Dim i As Byte
For i = 1 To 30
MkDir " & App.Path & " \ temp \ " & Trim(CStr(i))"
Next

o___o___o 发表于 2008-5-26 22:08

你留个QQ号吧。我还有很多不明呢。[tk01]

tig2 发表于 2008-5-27 03:16

Dim i As Integer
For i = 1 To 30
MkDir App.Path & "\temp" & Trim(CStr(i))
Next

这个貌似也是可以的

o___o___o 发表于 2008-5-28 08:46

谢谢楼上的,你太了不起了。

flyue 发表于 2008-5-28 18:21

CreateDirectoryEx及CreateDirectory是Win32标准的创建文件夹的API函数,如下定义:
Declare Function CreateDirectory& Lib "kernel32" Alias "CreateDirectoryA" (ByVal lpNewDirectory As String, lpSecurityAttributes As SECURITY_ATTRIBUTES)

Declare Function CreateDirectoryEx& Lib "kernel32" Alias "CreateDirectoryExA" (ByVal lpTemplateDirectory As String, ByVal lpNewDirectory As String, lpSecurityAttributes As SECURITY_ATTRIBUTES)

  Public   Type   SECURITY_ATTRIBUTES   
  nLength   As   Long   
  lpSecurityDescriptor   As   Long   
  bInheritHandle   As   Long   
  End   Type

[[it] 本帖最后由 flyue 于 2008-5-28 18:22 编辑 [/it]]

multiple1902 发表于 2008-5-28 18:35

[quote][bo][un]o___o___o[/un] 在 2008-5-26 22:08 的发言:[/bo]

你留个QQ号吧。我还有很多不明呢。[tk01] [/quote]
嗯,你是不是想表达因为我笨所以你在我个人资料里看不到QQ号?

要说多少遍那些新手们还是那么懒,点下鼠标都不愿意,上来就要代码。
是我论坛资料里没写QQ号吗?不是!那是我笨吗?

flyue 发表于 2008-5-28 18:59

我不喜欢QQ,整天叫个不停,好吵,会打乱思路

lzn3303768 发表于 2008-5-28 21:20

回复 12# flyue 的帖子

基本无视QQ消息

页: [1]

编程论坛