刚才试了一下,如果WritePrivateProfileString里面的路径参数用到了不存在的文件夹,似乎是不会自动生成文件夹的,从而导致写入文件失败。我的问题是,如果想让程序生成一个文件夹并对其命名,应该用什么函数呢?
网上一搜一大把,摘抄部分如下
(1)创建文件夹
- Dim fso, f
- '如果指定的文件夹已经存在,则会出现错误。
- Set fso = CreateObject("Scripting.FileSystemObject")
- Set f = fso.CreateFolder("c:\New Folder")
复制代码
(2)删除文件夹
- Dim fso,filespec
- filespec="D:\电影" '要删除的文件夹路径
- Set fso = CreateObject("Scripting.FileSystemObject")
- fso.DeleteFolder(filespec)
- '若删除只读文件夹则将上一行改为fso.DeleteFolder(filespec,true)
复制代码
(3)判断文件夹是否存在
- Dim fso,msg,tt
- Set fso = CreateObject("Scripting.FileSystemObject")
- fldr="C:\Documents and Settings" '文件夹路径和名字
- tt = fso.FolderExists(fldr) '存在返回true;不存在返回false
- If tt=true Then
- msg = fldr & " 存在。"
- Else
- msg = fldr & " 不存在。"
- End If
- Msgbox msg
复制代码
(4)获取指定目录下所有文件的文件名(不包含文件夹名)
- Dim a
- a="D:\文件夹1" '目标文件夹完整路径
- Msgbox ShowFolderList(a)
- Function ShowFolderList(folderspec)
- Dim fso, f, f1, fc, s '定义变量
- Set fso = CreateObject("Scripting.FileSystemObject") '创建对象
- Set f = fso.GetFolder(folderspec) '得到文件夹下folder对象
- Set fc = f.Files
- For Each f1 in fc '查找所有符合条件的文件名
- s = s & f1.name
- s = s & vbcrlf '得到结果并换行
- Next
- ShowFolderList = s
- End Function
复制代码
(5)分离路径中的文件名(不带扩展名)
- Msgbox GetTheBase("C:\tt.txt") 'GetTheBase返回值tt
- Function GetTheBase(filespec)
- Dim fso
- Set fso = CreateObject("Scripting.FileSystemObject")
- GetTheBase = fso.GetBaseName(filespec)
- End Function
谢谢了!
网上搜到的用vba创建文件夹的方法是使用MkDir函数,金字塔里面好像没有这个函数