- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我相当熟悉使用 VBA Dir
过程循环访问文件夹中的文件。通常,我没有问题,但在我正在处理的项目中,DIR 正在拾取一个文件,据我所知,该文件不存在。这最终会导致我的代码调试错误。
然而,当代码尝试执行打开时,它会出错(总是在先成功打开一个文件之后)并指出问题是由于某个名为 Documents.XLSX
的文件引起的。我很少使用 xlsx 类型,所以我不知道这个名字是从哪里来的。
奇怪的是,如果我将 VBA 设置为 debug.print
,它会将名称打印为“..”,而不是 Document.xlsx 名称。
有人知道为什么会这样吗?
我确定它与打开和关闭文件有关,因为如果我删除此操作,代码 Debug.Prints
将正确地包含三个文件名。我考虑到关闭文件可能会挂起它,所以我在关闭后包含了 DoEvents
,但没有改变。在运行下一行 myFile = Dir
之前,我什至在关闭文件后将宏停止了大约一分钟,但仍然没有解决问题。
关于为什么会这样或如何进一步解决问题的任何建议都将非常有帮助。
不幸的是,我什至没有解决方法。如果我设置为仅在 myFile <> ".."时执行,则可以跳过,但对于 ".."的消失和重新出现,会丢弃 "next"选项,导致循环无限期重复。代码非常标准。
Dim myFile, WB as Workbook
myFile = Dir(dirPath)
Do While (myFile <> "")
'I included this for my own research
Debug.Print myFile
'Opens workbook
'This next line is where the error happens
Set WB = Workbooks.Open(Filename:=dirPath & myFile)
'Macro does stuff
'Closes
WB.Close savechanges:=False
DoEvents
myFile = Dir
Loop
由于评论中的吉普车而更新我没有想到在不同的模块中提及,我有一个自定义函数,旨在确保用户在 Cell 中输入了有效的文件路径。我还应该提到我的 VBA 代码 'do Something
正在更新单元格,并且可能导致此自定义函数重新计算。
这段代码是....
Public Function isValidPath(FilePATH as String) as Boolean
If Right(FilePATH,1) <> "\" Then FilePATH = FilePATH & "\"
If Dir(FilePath, vbDirectory) <> vbNullString then isValidPath = True
End Function
谁想免费获得 ✔️?
最佳答案
一个文件夹总是¹包含两件事。 .
代表它自己,..
代表它的父级。
如果您将 Dir 与 vbDirectory 参数一起使用,并像您所做的那样用反斜杠作为路径后缀,那么您将返回两个结果;一个 .
和一个 ..
。不需要循环;要么存在,要么不存在。
如果您将 Dir 与不带反斜杠后缀的 vbDirectory 参数一起使用,那么您将返回一个结果;文件夹的名称。不需要循环;要么存在,要么不存在。
虽然可以将一个没有扩展名的文件命名为您要查找的文件夹,但在同一父文件夹中不能有一个文件夹和一个没有扩展名的文件。虽然不是万无一失,但这是一个合理的结论,如果它有误,那么无论如何您都应该仔细研究一下。
总而言之,如果您查找带或不带尾随反斜杠的文件夹,您将收到一个非零长度字符串作为结果,除非您有非常特殊的情况。
您的“助手”功能代码“按原样”应该没问题。
Public Function isValidPath(FilePATH as String) as Boolean
isValidPath = cbool(len(Dir(FilePath, vbDirectory)))
End Function
顺便说一句,如果您热衷于跳过错误,那么不管有没有尾部反斜杠,这都可以完成同样的事情(即保证文件夹存在于单个子文件夹级别)。
on error resume next
mkdir FilePATH
on error goto 0
¹ 如果我没记错我的 ms-dos 3.3,即使 c:\也有一个 .. 但我不记得它指向哪里。
关于excel - VBA Dir 在名为 ".."或 Documents.xlsx 的目录中提取 Ghost 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51889881/
这个问题在这里已经有了答案: What's the difference between html[lang="en"] and html:lang(en) in CSS? (4 个答案) 关闭 6
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 9 年前。 Improve t
来自 ./configure --help: --with-zlib=DIR Include ZLIB support (requires zlib >= 1.0.9) --with-zlib-
我正在尝试检查我的 pod 规范并收到以下错误。 [!]“Classes”存储库中的“Classes”Pod 遇到意外版本目录“ios”。 我的源文件夹设置如下: 类 - iOS - 操作系统 Pod
在 Python 中有一个名为 dir 的内置函数。这用于获取对象所有属性的列表。 我了解它的作用,但我对为什么将其称为 dir 感到困惑。这个名称与从对象中获取属性有什么关系? 最佳答案 IIRC
我正在使用以下方法遍历文件夹: Dim file As Variant file = Dir(myFolder) While (file <> "" ) mySub file '
在 Python 的交互式 shell 中,执行 dir() 会打印一个名称列表。但是在脚本中 dir() 不直接提供任何输出,我必须使用 print(dir())。 不仅仅是dir(),其他内置函数
我明白它的作用,并且一直在使用它。但有趣的是,我还没有找到说明“DIR”的实际含义 的文档。 “目录”似乎不对。 这不是“console.log() 和 console.dir() 之间有什么区别?”
我正在尝试使用字符向量在我的工作目录中创建一系列目录。没有递归,只是迭代。没有什么花哨。例如,我可以很容易地做到这一点: lapply(state.name, dir.create) 它在我的工作目录
dir(x) 和 dir(x.__class__) 有什么区别?后者返回不同的属性列表,但与前者重叠。 例如,SQLAlchemy 的 sqlalchemy.create_engine() 函数创建一
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 6 年前。 Improve t
我正在尝试使用 Dir[] 和/或使用 Dir.foreach 对目录进行 glob: files = Dir["#{options[:dir]}/**/*"].reject { |file| Fil
Git 存储库中.gitignore 文件中的/dir 和/dir/ 有区别吗? 以下有何不同? /dir /dir/ /dir/* 最佳答案 是的,这些规则是不同的。 /dir 将匹配文件、目录、链
我正在尝试编译Bootstrap 5.3以及定制的sass文件。。这就是我的东西。奇怪的是,最后一节生成了下面的css。我预计会看到下面的css。它在开头添加了[dir]。为什么要添加[dir]?我怎
我正在尝试编译Bootstrap 5.3以及定制的sass文件。。这就是我的东西。奇怪的是,最后一节生成了下面的css。我预计会看到下面的css。它在开头添加了[dir]。为什么要添加[dir]?我怎
我正在尝试编译Bootstrap 5.3以及定制的sass文件。。这就是我的东西。奇怪的是,最后一节生成了下面的css。我预计会看到下面的css。它在开头添加了[dir]。为什么要添加[dir]?我怎
你可以找到各种文档来指定 XML 文档内容的语言,使用 xml:lang,如下所示: ... HTML 和 XHTML 具有 dir 属性,可让您指定文本在默认情况下应被视为从左到右,还是默认从右到左
当我 echo 时,输出似乎相同编辑它。 我还测试了其他命令,例如 open ,但两者的结果是一样的。 最佳答案 在传统 sh -style 模式匹配,*匹配文件名中的零个或多个字符,因此 * 之间没
我想在不同时间将一个目录复制到另一个目录中。每次,我都希望新名称比以前高一个数字/我希望能够获取该数字并将其存储到变量中。 所以如果我有一个: mymaindir /home/user/dirs/ST
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我是一名优秀的程序员,十分优秀!