VBA - метод или элемент данных не найден при открытии файла Excel из доступа - PullRequest
0 голосов
/ 05 августа 2020

У меня есть небольшое приложение, которое подключается к серверу SQL и загружает некоторые данные в Excel. Он отлично работает на моем компьютере, но на компьютере одного из моих коллег я получаю ошибку «Метод или элемент данных не найден» при попытке изменить содержимое ячейки в электронной таблице Excel.

Это код, который не работает на моем компьютере коллеги, строка с ошибкой является последней строкой:

Public Function ExportRequest(strSupplier As String, intSupplier As Integer, _
    strOutPath As String, iEmpty As Integer, strManager As String, _
    ichkVolume As Integer, iframeVolume As Integer, ichkMatNum As Integer) As String

   On Error GoTo err_Handler
   
   ' Excel object variables
   Dim appExcel As Excel.application
   Dim wbk As Excel.Workbook
   Dim wks As Excel.Worksheet
   Dim wksvol As Excel.Worksheet
   Dim wsRange As Excel.Range
   Dim wksvolRange As Excel.Range
   
   Dim sTemplate As String
   Dim sTempFile As String
   Dim sOutput As String
      
   Dim dbs As DAO.Database
   Dim rst As DAO.Recordset
   Dim sSQL As String
   Dim sDateFrom As String
   Dim sDateTo As String
   Dim lRecords As Long
   Dim iRow As Integer
   Dim iCol As Integer
   Dim iFld As Integer
   Dim intYear As Integer
   
   Const cStartRow As Byte = 3
   Const cStartColumn As Byte = 1
      
   intYear = year(Now)
      
   DoCmd.Hourglass True
   
   ' set to break on all errors
   application.SetOption "Error Trapping", 0
   
   ' start with a clean file built from the template file
   
   sTemplate = ap_GetConfig("NegTemplatePath") & ap_GetConfig("NegTemplate")
   
   sOutput = strOutPath & "\Price Template " & strSupplier & "-2020" & ".xlsm"
   
   If Dir(sOutput) <> "" Then Kill sOutput
   FileCopy sTemplate, sOutput
   
   ' Create the Excel Applicaiton, Workbook and Worksheet and Database object
   Set appExcel = Excel.application
   Set wbk = appExcel.Workbooks.Open(sOutput)
   wbk.Sheets("Price List").Visible = xlSheetVisible
   Set wks = appExcel.Worksheets("Price List")
   wks.UnProtect Password:="irishstout"
   wks.Cells(1, 2) = strSupplier

Надеюсь, кто-то столкнулся с чем-то похожим?

1 Ответ

1 голос
/ 05 августа 2020

В объектной модели MS Office все методы, свойства и события имеют иерархическую структуру. Обычно объект Application обычно инициализирует элементы верхнего уровня. Все остальные произошли от его потомков. Следовательно, Excel.Application не будет содержать свойств для листов или диапазонов. См. Примеры ниже.

Excel

  • Методы : Приложение> Книги> Добавить / открыть ...

  • Свойства : Приложение> Рабочая книга> Рабочие листы / Запросы / Путь ...

  • События : Приложение> Рабочая книга> Активировать / Перед закрытием ...

    Set appExcel = New Excel.Application
    Set wbk = appExcel.Workbooks.Open("C:\Path\MyWorkbook.xlsx")
    Set wks = wbk.Worksheets("My Sheet")
    
    wks.Name = "My New Name"
    

Word

  • Методы : Приложение> Добавить / Открыть ...

  • Свойства : Приложение> Документ> Абзацы / Таблица / Закладки ...

    Set wdApp = New Word.Application
    Set wdDoc = wdApp.Documents.Open("C:\Path\MyDocument.docx")
    Set wdPara = wdDoc.Paragraphs(1)
    
    wdDoc.Tables.Add(NumRows=3, NumColumns=3)
    

Доступ

  • Методы :

    • Приложение> OpenCurrentDatabase> CurrentDb ...
    • Приложение> DoCmd> OpenForm / OpenReport ...
  • Свойства:

    • Приложение> CurrentDb> TableDefs / QueryDefs ...
    • Приложение> CurrentPro ject> AllForms / AllReports ...
  • События : Приложение> CurrentProject> AllForms> Form> AfterUpdate / BeforeClose ...

    Set appAccess = New Access.Application
    Set accFile = appAccess.OpenCurrentDatabase("C:\Path\MyDatabase.accdb")
    Set db = accFile.CurrentDb()
    
    appAccess.DoCmd.OpenForm("My Form")
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...