乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 242|回复: 14

将初始打开目录设置为具有给定名称的文件夹

[复制链接]

48

主题

277

帖子

5

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
481
发表于 2007-3-21 15:29:35 | 显示全部楼层 |阅读模式
好的,让我解释一下大局,这样它就有意义了。我们有一个例程,它会更新多个文件中的属性。当打开的对话框出现时,它会转到下面的文件夹。我在想我希望它从图纸文件夹中开始,因为我们都有一个文件夹,其中包含我们的图纸。问题是我们并不都在同一个驱动器上有这个文件夹。对于一些人来说,它在他们的C:中,而另一些人在他们的D:中。有没有一种方法我可以指定图纸,它会在C:或D:中找到它?
myOpen.InitDir="I:\HOME\cadfiles\ACAD\LSP"'设置初始文件夹

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

154

主题

1274

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1936
发表于 2007-3-21 15:40:17 | 显示全部楼层
如果路径相同,您可以简单地遍历所有驱动器
  1. For X = 65 to 90
  2.    rVal = Dir(chr(X) & ":\Mypath\MyFile.ext")
  3.    If rVal  "" Then
  4.      X = 91
  5.    End If
  6. Next X

这将需要一些错误检查,因为如果驱动器不存在或未准备好,它将失败。但它将在所有驱动器A-Z上找到它。
回复

使用道具 举报

48

主题

277

帖子

5

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
481
发表于 2007-3-21 15:57:38 | 显示全部楼层
Keith 我做了一些询问,每个人的D上都有这个文件夹:除了1谁在他们的E上有它:
这个棘手的事情,我忘了提到,因为它刚刚出现在我身上。
我们不是在服务器上工作,而是作为一个工作组工作。
我们每个人都映射到彼此的图纸文件夹,所以有没有办法只查找和在特定的驱动器号中查找?
回复

使用道具 举报

154

主题

1274

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1936
发表于 2007-3-21 16:07:01 | 显示全部楼层
当然…
  1. For X = 67 to 69
  2.    rVal = Dir(chr(X) & ":\Mypath\MyFile.ext")
  3.    If rVal  "" Then
  4.      X = 70
  5.    End If
  6. Next X

回复

使用道具 举报

48

主题

277

帖子

5

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
481
发表于 2007-3-21 16:25:35 | 显示全部楼层
keith 我试图在我这边解决这个问题,但是遇到错误
,私有函数行被突出显示,它一直突出显示x,所以我认为我可以将所有事件更改为getfiles,但现在它突出显示了rVal。我在这里搞砸了什么?
  1. 'Display an open dialog, adds selected files to an array
  2. Private Function GetFiles() As Variant
  3.   'Stores the object created by the CommonDialog class
  4.   Dim myOpen As CommonDialogProject.CommonDialog
  5.   Set myOpen = CommonDialogProject.Init 'Create the object
  6.   
  7.   myOpen.DialogTitle = "Select drawings" 'Change the title
  8.   myOpen.Filter = "AutoCAD Drawing files (*.dwg)|*.dwg|" & _
  9.                           "AutoCAD Drawing template files (*.dwt)|*.dwt"
  10.     myOpen.DefaultExt = "dwg"
  11.   'Set flags to limit behavior of the dialog box
  12.   myOpen.Flags = OFN_ALLOWMULTISELECT + _
  13.                  OFN_EXPLORER + _
  14.                  OFN_FILEMUSTEXIST + _
  15.                  OFN_HIDEREADONLY + _
  16.                  OFN_PATHMUSTEXIST
  17.   For GetFiles = 67 To 69
  18.    rVal = Dir(Chr(GetFiles) & ":\Drawings")
  19.    If rVal  "" Then
  20.      GetFiles = 70
  21.    End If
  22. Next GetFiles

回复

使用道具 举报

154

主题

1274

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1936
发表于 2007-3-21 16:37:07 | 显示全部楼层
你不能那样做....
将我提供的代码放入一个函数中,无论 rVal 的值是什么,都将是默认目录位置的路径。在浏览文件夹 API 中将该值设置为默认目录
回复

使用道具 举报

48

主题

277

帖子

5

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
481
发表于 2007-3-22 08:37:53 | 显示全部楼层
基思:对不起,但我是这方面的新手,不知道该怎么做。我想我所要做的就是在底部创建一个新的函数“defaultfolder ”,然后说initdir=defaultfolder,但是它不起作用。你或其他人能帮我解决这最后一点吗?谢谢
回复

使用道具 举报

154

主题

1274

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1936
发表于 2007-3-22 09:02:54 | 显示全部楼层
将此函数作为一个单独的函数
  1. Private Function FindPath (ByVal path As String) As String
  2. Dim X As Integer
  3. For X = 67 to 69
  4.    rVal = Dir(Chr(X) & ":" & path & "\*.*")
  5.    If rVal  "" Then
  6.      FindPath = Chr(X) & ":" & path
  7.      X = 70
  8.    Else
  9.      FindPath = "C:"
  10.    End If
  11. Next X
  12. End Function

现在,在您的Common Dialog函数中,添加(在显示表单之前的最开始)
  1. MyOpen.InitDir = FindPath ("path\to\files\no\leading\or\trailing\backslashes")

回复

使用道具 举报

48

主题

277

帖子

5

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
481
发表于 2007-3-22 10:11:02 | 显示全部楼层
yikes keith 我仍然没有得到它。这个例程利用了CommonDialog.dvb,所以这就是我把你给我的位放在哪里(见下文)。第二点是我不清楚的。此行最初位于另一个名为 Updateattribute 的文件中。我试着把它放在开头,但我不确定我是否理解你的意思
“在显示表单之前最开始”
我很困惑
  1. Option Explicit
  2. Public Function Init() As CommonDialog
  3. Set Init = New CommonDialog
  4. End Function
  5. Private Function FindPath(ByVal path As String) As String
  6. Dim X As Integer
  7. For X = 67 To 69
  8.    rVal = Dir(Chr(X) & ":" & path & "\*.*")
  9.    If rVal  "" Then
  10.      FindPath = Chr(X) & ":" & path
  11.      X = 70
  12.    Else
  13.      FindPath = "C:"
  14.    End If
  15. Next X
  16. End Function

回复

使用道具 举报

154

主题

1274

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1936
发表于 2007-3-22 10:21:16 | 显示全部楼层
哦..所以它们在不同的模块中..将FindPath函数与公共对话框的代码放在同一个模块中...也就是你将要调用它的同一个模块。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-7 14:06 , Processed in 1.753707 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表