2015-05-13 1 views
0

У меня есть макро/vba в доступе, который сохраняет несколько книг excel после редактирования. Однако иногда другие пользователи могут использовать один из файлов excel в режиме чтения/записи.Доступ/Excel VBA - Удаление предупреждений и сообщений дисплея

появляется окно ниже сообщение, что я делаю, продолжайте нажимать не до того, как пользователь закончил с использованием Excel файл

enter image description here

После того как файл свободен ниже окне сообщения появляется, я нажимаю на «читать -Write»и мой код возобновляется с места остановки (пример изображения)

enter image description here

Вопрос - Как я могу получить доступ VBA или Excel VBA нажать„Нет“для меня?

Примечание: Я использовал Application.DisplayAlerts и DoCmd.SetWarnings оба по умолчанию был Yes. (Или, может быть, я не правильно их реализую).

Код:

Access/Excel VBA - Time delay

Function RefreshExcelTables() 

On Error GoTo Error 

Dim ExcelApp As Object 
Set ExcelApp = CreateObject("Excel.Application") 

ExcelApp.workbooks.Open "c:\test\Test_Sheet1.xlsb" 
ExcelApp.ActiveWorkbook.refreshall 
ExcelApp.ActiveWorkbook.Save 
ExcelApp.ActiveWindow.Close 


ExcelApp.workbooks.Open "c:\test\Test_Sheet2.xlsb" 
ExcelApp.ActiveWorkbook.refreshall 
ExcelApp.ActiveWorkbook.Save 
ExcelApp.ActiveWindow.Close 


ExcelApp.workbooks.Open "c:\test\Test_Sheet3.xlsb" 
ExcelApp.ActiveWorkbook.refreshall 
ExcelApp.ActiveWorkbook.Save 
ExcelApp.ActiveWindow.Close 

Error: 

If Err.Number = 1004 Then 

call pause(5) 

Resume 

End If 

Set ExcelApp = Nothing 


End Function 



Public Function Pause(intSeconds As Integer) 

Dim dblStart As Double 

If intSeconds > 0 Then 

dblStart = Timer() 

Do While Timer < dblStart + intSeconds 

Loop 

End If 

End Function 
+1

Какой код вызывает отображение вышеуказанных сообщений? Вы улучшили свой вопрос. –

+0

Maciej Los - я включил свой код – Elixir

ответ

1

Вы можете начать со следующей настройки опции.

DoCmd.SetWarnings False 

Больше на: DoCmd.SetWarnings Method (Access) и DoCmd.SetWarnings Method (Access Developer Reference).

Для объекта Excel.Application, возможно, придется использовать эквивалент этого экземпляра.

ExcelApp.DisplayAlerts = false 

справочной документации для DisplayAlerts Excel в находится в Application.DisplayAlerts Property.

+1

Плюс должен быть тест на то, открыт ли файл каким-то другим, я думаю, что это была основная проблема OP. – user3819867

+0

@ user3819867 - Хорошая точка. Для этого потребуется немного больше кода, чем одна строка. Знание того, что Excel 2013 с его специальным способом передачи экземпляров приложений и окон приложений будет полезен на этом фронте. – Jeeped

+0

Я просто контролирую, так как это будет helluva 'While ... Wend' loop. – user3819867

0

Вы можете попробовать с Docmd.setwarnings False

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