Использование «Application.DisplayAlerts = False приводит к ошибке компиляции« Метод или элемент данных не найден » - PullRequest
0 голосов
/ 13 апреля 2019

У меня есть модуль в Access для форматирования ячеек в электронной таблице Excel.

Sub FormatData()

Workbooks.Open FileName:="C:\Users\john.doe\Documents\scripts\apps\allow\Weekly_Cash_Trending"

Workbooks("Weekly_Cash_Trending.xlsx").Activate


Columns("C:C").Select
Selection.NumberFormat = "$#,##0"
Range("A1").Select

ActiveWorkbook.SaveAs FileName:="C:\Users\john.doe\Documents\scripts\apps\allow\Weekly_Cash_Trending"
End Sub

Работает, но выдает всплывающее окно для подтверждения сохранения файла.

Excel сообщение

Когда я изменяю код для использования «Application.DisplayAlerts»

Sub FormatData()

Application.DisplayAlerts = False
Workbooks.Open FileName:="C:\Users\john.doe\Documents\scripts\apps\allow\Weekly_Cash_Trending"

Workbooks("Weekly_Cash_Trending.xlsx").Activate


Columns("C:C").Select
Selection.NumberFormat = "$#,##0"
Range("A1").Select

ActiveWorkbook.SaveAs FileName:="C:\Users\john.doe\Documents\scripts\apps\allow\Weekly_Cash_Trending"
Application.DisplayAlerts = True
End Sub

Я получаю следующую ошибку: метод или элемент данных не найден

Метод или элемент данных не найден Ошибка

Я новичок в кодировании VBA (очевидно), может кто-нибудь помочь мне решить эту проблему? Спасибо!

1 Ответ

0 голосов
/ 14 апреля 2019
  • Вы кодируете это в Access, так что я понимаю, что Application в этом контексте - Access.Application (не Excel.Application) - и Access.Application не имеет DisplayAlerts члена (в отличие от Excel).
  • Вы, похоже, вызываете метод Workbook.SaveAs для сохранения поверх самой книги.При необходимости используйте Workbook.Save (это также означает, что вам не нужно переключать DisplayAlerts).В качестве альтернативы, Workbook.Close имеет параметр SaveChanges, в который можно передать True или False.

Я думаю, что приведенный ниже код (я писал и тестировал в Access) должен делать то, что выбыли после.

Option Compare Database
Option Explicit

Sub FormatData()
    With New Excel.Application ' Add reference to Excel Object Model for early binding
        '.Visible = True ' Uncomment if you want to see it happening

        With .Workbooks.Open(FileName:="C:\Users\john.doe\Documents\scripts\apps\allow\Weekly_Cash_Trending")
            .Worksheets(1).Range("C:C").NumberFormat = "$#,##0"
            .Close True ' Passing True here means we want to save changes as we close the workbook
        End With

        .Quit
    End With
End Sub

Исходя из вашего кода, я предполагаю, что вы уже добавили ссылку в библиотеку объектов Access for Excel.Если нет, в Access откройте VB Editor, затем Tools > References > Scroll down in the list to Microsoft Excel 16.0 Object Library (or something like that) > Tick it > OK.

Я предполагаю, что вы хотите изменить форматирование чисел ячеек на первом листе.Если у этого листа есть имя, лучше обратиться к нему по имени (чем по индексу, как я).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...