2016-01-05 1 views
0

Еще раз, мне нужна помощь от вас, ребята!Excel: ExecuteExcel4Macro & update values ​​диалоговое окно

В настоящее время я кодирую небольшой инструмент vba, чтобы быстро сортировать файлы в соответствии с некоторыми данными внутри. В качестве примера у меня есть папка «Будет отсортирована» с некоторыми файлами в ней, скажем «File1.xls, File2.xls» и т. Д. ...

Для чтения данных в «FileX.xls», Я использую ExecuteExcel4Macro (правильно заданный диапазон и имя файла), затем я могу использовать эти данные для применения фильтров и перемещения файлов в другие каталоги.

Мой код отлично работает с локальными файлами, но когда я пытаюсь запустить его на своем сервере (инструмент предназначен для сортировки файлов, хранящихся на сервере), при использовании ExecuteExcel4Macro появляется диалоговое окно «Обновить значения».

Отсюда, я должен вариантов:

  • вручную открывать каждый файл перед запуском макроса (у меня есть как 250 файлов для сортировки так .... Мех)
  • нажав кнопку Отмена в диалоговом окне который вызывает плагин к сбою (ошибка несоответствия типа)

Вот часть кода, который беспокоит меня

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   

Итак, мой вопрос заключается в том, как вы можете себе представить: как я могу отключить этот диалог или, если это плохая идея, существуют другие чистые методы (я не хочу открывать каждую книгу, даже при выключенном выключении экрана), что может решить мою проблему?

DisplayAlerts = ложь не решает проблемы:/... и снова, программа прекрасно работает без этого диалога ...

Я, конечно, пытался Google моей проблемы, прежде чем отправлять сюда, но даже такие темы, как this one, не являются решением моей проблемы.

Как обычно, любая помощь действительно ценится!

Thx, bye :)!

+0

Вы используете UNC-путь или фактическую букву диска? –

+0

Привет! Я использую UNC-путь – MrVonKitty

+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

Thx! Это решило мою проблему :)! – MrVonKitty

0

Я хотел бы использовать код больше, как это:

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

Это работает с сетевым диском тоже.

+0

Thx за ваш ответ! Я думаю, что пойду с этим решением, если не найду другого ... using executeExcel4Macro казался мне чище:/ – MrVonKitty

Смежные вопросы