Я пытаюсь написать скрипт VBA, который импортирует все файлы Excel в папке в таблицу Access 2003, сначала проверяя, есть ли у них были импортированы или нет. Эта часть в порядке. Проблема, с которой я сталкиваюсь, - это очистить некоторые из формул, которые не используются в электронной таблице, что создает трудности при попытке Access импортировать диапазон. при запуске кода as-is появляется ошибка «Определенный пользователем тип не определен».«Определенный пользователем тип не определен» для диапазона Excel Использование позднего связывания в Access 2003
Я использую позднюю привязку, так как я разрабатываю сайт, который использует несколько версий Office и therfore, не может ссылаться на одну и ту же библиотеку, используя раннее связывание. Код ошибки ниже:
Private Sub Command2_Click()
'Declare Variables
Dim xlApp As Object
Dim xlBook As Object
Dim LSQL As String
Dim SkippedCounter As Integer
Dim ImportedCounter As Integer
Dim BUN As Long
Dim SubmitDate As Date
Dim LSQL2 As String
Dim LSQL3 As String
'Start counters for final notice
SkippedCounter = 0
ImportedCounter = 0
Dim myDir As String, fn As String
'Set directory for importing files
myDir = "U:\Five Star\Operations\restore\Surveys\My InnerView - 2010\Action plans\Action plans - input for DB\"
'Function for selecting files in folder
fn = Dir(myDir & "*.xls")
'Determine if there are files in side the folder
If fn = "" Then
MsgBox "Folder is Empty!"
Else
'Begin cycling through files in the folder
Do While fn <> ""
'Create new Excel Object
Set xlApp = CreateObject("Excel.Application")
'Make it appear on the screen while importing
xlApp.Visible = True
'Open the workbook at hand
Set xlBook = xlApp.Workbooks.Open(myDir & fn)
'Check to see if it has been imported already
If xlBook.Sheets("Action plan form").Range("A1").Value = "Imported" Then
'If it has been imported, add 1 to the counter, close the file and close the instance of Excel
SkippedCounter = SkippedCounter + 1
xlBook.Close
xlApp.Quit
Set xlBook = Nothing
Set xlApp = Nothing
Else
'Otherwise, unprotect the worksheet
xlBook.UnProtect Password:="2010"
Dim c As Range
'Unhide worksheet needed and clean it up
xlBook.Sheets("Action plan DB data").Visible = True
xlBook.Sheets("Action plan DB data").Range("B10:O10").ClearFormats
xlBook.Sheets("Action plan DB data").Range("N11:N84").ClearFormats
For Each c In xlBook.Sheets("Action plan DB data").Range("DB_import")
If c.Value = "" Or c.Value = 0 Then c.Clear
Next c
...
Остальная часть кода должна работать нормально, то есть этого нужно просто вопрос с декларацией «диапазона» и перекручивание через него. Спасибо за вашу помощь!
Несомненно, как объект? – Fionnuala
@Remou: «Как объект» строго не требуется, я верю, но да, это эффект. – grammar31