Импорт файла Excel в таблицу доступа Ошибка времени выполнения '-2147352565 (8002000b)' - PullRequest
2 голосов
/ 03 ноября 2010

Сценарий: пользователь попросил меня предоставить ему кнопку, где он может выбрать .xls, и он импортирует данные в соответствующие столбцы таблицы.

Вопрос. Я приведу приведенный ниже код, но в основном, как только он пытается открыть рабочую книгу, он выдает ошибку ниже. Я нашел несколько решений, но все еще получаю эту ошибку. alt text

    Private Sub Command20_Click()
     Dim fdg As FileDialog, vrtSelectedItem As Variant
Dim strSelectedFile As String

Set fdg = Application.FileDialog(msoFileDialogFilePicker)

With fdg
  .AllowMultiSelect = False
  .ButtonName = "Select"
        .InitialView = msoFileDialogViewList
        .Title = "Select Input Files"

        'add filter for excel
        With .Filters
            .Clear
            .Add "Excel Spreadsheets", "*.xls"
        End With
        .FilterIndex = 1
    If .Show = -1 Then
      For Each vrtSelectedItem In .SelectedItems    'onby be 1
      Dim app As New Excel.Application

      app.Workbooks.Open (vrtSelectedItem)
      app.Worksheets(1).Activate
      For Each rwRow In ActiveWorkbook.Worksheets(1).Rows
        ' Do things with the rwRow object
        Next rwRow
        strSelectedFile = vrtSelectedItem
      Next vrtSelectedItem
      Me![txtSelectedFile] = strSelectedFile
    Else     'The user pressed Cancel.
    End If
End With

Set fd = Nothing
End Sub

Ответы [ 2 ]

2 голосов
/ 04 ноября 2010

Хммм .. работает от меня.

Я закомментировал четыре строки после app.Worksheets(1).Activate и Me![txtSelectedFile] = ...

set fd = Nothing Мне пришлось изменить на fdg

Интересно, что-то не так с файлом Excel. Вы пробовали один созданный с нуля?

2 голосов
/ 04 ноября 2010

Я не понимаю, почему app.Workbooks.Open вызывает эту ошибку. Однако я предложу некоторые изменения, которые могут помочь, а могут и не помочь вам определить проблему.

  1. добавьте Option Explicit в раздел объявлений вашего модуля; затем запустите Debug-> Compile из главного меню VBE, чтобы показать вам, какие переменные у вас нет Dim'd
  2. включают app.Visible = True после Dim app As New Excel.Application, чтобы вы могли отслеживать, что происходит с Excel
  3. добавьте app.Quit и Set app = Nothing до окончания вашей процедуры
...