Excel:ExecuteExcel4Macro&更新值对话框

再一次,我需要你们的帮助!

我目前正在编写一个小的vba工具,以便根据里面的一些数据快速sorting文件。 作为一个例子,我有一个“待sorting”文件夹中的一些文件,可以说“File1.xls,File2.xls”等…

要读取“FileX.xls”中的数据,我使用ExecuteExcel4Macro(范围和文件名设置正确),然后我可以使用这些数据应用filter和移动文件在其他目录。

我的代码对本地文件工作正常,但是当我尝试在我的服务器上运行它(该工具旨在对存储在服务器上的文件进行sorting时),当使用ExecuteExcel4Macro时会出现一个对话框“更新值”。

从这里,我必须select:

  • 在运行macros之前手动打开每个文件(我有250个文件来sorting,所以…. meh)
  • 按下取消导致插件崩溃的对话框(types不匹配错误)

这是困扰我的那部分代码

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 

所以我的问题是,你可以想象:我怎样才能禁用这个对话框,或者,如果这是一个坏主意,是否有其他干净的方法(我不想打开每个工作簿,即使screenupdateclosures),可以解决我的问题 ?

DisplayAlerts = false不能解决问题:/ …再次,程序运行正常,没有这个对话框…

我当然试图谷歌我的问题之前张贴在这里,但即使这样的主题不是我的问题的解决scheme。

像往常一样,任何forms的帮助真的很感激!

Thx,再见:)!

使用服务器映射到的驱动器号将UNCpath更改为path:

所以例如,改变你的string产生:

 [P:\Some_Folder\myfile.xls]Sheet1!A1 

代替:

 [\\my-server\Some_Folder\myfile.xls]Sheet1!A1 

你可以尝试使用replace函数来实现这一点:

 strRef = "'[" & Replace(fsoFile.Name, "\\", "P:\") & "]" & "Sheet1" & "'!" 

我会使用更像这样的代码:

 projectName = Workbooks.Open("\\srv1\folder\Book1.xlsx").Sheets("Sheet1").Range("a1") Workbooks("Book1.xlsx").Close 

这也适用于映射的networking驱动器。