再一次,我需要你们的帮助!
我目前正在编写一个小型的vba工具,以便根据内部的一些数据快速对文件进行排序。作为一个例子,我有一个“待分类”文件夹,里面有一些文件,比如说“File1.xls,File2.xls”等......
要读取“FileX.xls”中的数据,我使用ExecuteExcel4Macro(正确设置范围和文件名),然后我可以使用此数据应用过滤器并在其他目录中移动文件。
我的代码可以正常使用本地文件,但是当我尝试在我的服务器上运行它时(该工具旨在对存储在服务器上的文件进行排序),当我使用ExecuteExcel4Macro时会出现一个“更新值”对话框。
从这里开始,我必须选择:
以下是困扰我的代码部分
For Each fsoFile In fsoParentFol.Files
'I only want to sort .xls files
If Right(fsoFile.Name, 4) = ".xls" Then
'On active le workbook actuel
strRef = "'[" & fsoFile.Name & "]" & "Sheet1" & "'!"
'this is the data I want to retrieve ... and this is where the dialog pops up
projectName = ExecuteExcel4Macro(strRef & rngProjectName.Address(1, 1, xlR1C1))
'some more code goes here but is irrelevant
End If
Next fsoFile
所以我的问题是,你可以想象:如何禁用这个对话框,或者,如果这是一个坏主意,还有其他干净的方法(我不想打开每个工作簿,即使关闭了screenupdate)可以解决我的问题吗?
DisplayAlerts = false无法解决问题:/ ...再次,没有此对话框,程序运行正常......
我当然试图在发布此问题之前首先查看我的问题,但即使像this one这样的主题也无法解决我的问题。
像往常一样,非常感谢任何帮助!
谢谢,再见:)!
答案 0 :(得分:1)
使用服务器映射到的驱动器号将UNC路径更改为路径:
例如,更改字符串以生成:
[P:\Some_Folder\myfile.xls]Sheet1!A1
而不是:
[\\my-server\Some_Folder\myfile.xls]Sheet1!A1
您可以尝试使用替换功能来实现此目的:
strRef = "'[" & Replace(fsoFile.Name, "\\", "P:\") & "]" & "Sheet1" & "'!"
答案 1 :(得分:0)
我会使用更像这样的代码:
projectName = Workbooks.Open("\\srv1\folder\Book1.xlsx").Sheets("Sheet1").Range("a1")
Workbooks("Book1.xlsx").Close
这也适用于映射的网络驱动器。