2013-12-03 5 views
-1

В модуле доступа VBA я копирую набор записей на рабочий лист Excel (DoCmd.TransferSpreadsheet не предоставляет необходимый формат форматирования и форматирования формул).Ссылка на другой рабочий лист в Формуле ячейки Excel через доступ VBA

В одном диапазоне столбцов, пытаясь применить INDEX/MATCH или VLOOKUP в c.Value или c.Formula, я не могу ссылаться на другой рабочий лист в той же рабочей книге, над которой я работаю. С каждым выходом из Access Excel отображает #REF! ошибка. Однако, когда я копирую и вставляю формулу из окна VBA в ячейку и перетаскиваю ее в Excel, она отлично работает! И когда я изменяю ссылку рабочего листа на то же имя листа, нет #REF! ошибка.

Я знаю, что проблема - это экземпляр рабочего листа объекта Excel. Я попытался открыть другой объект рабочего листа (объект xlInv) и использовать функцию Excel .Address, но он указывает только на диапазоны ячеек активного рабочего листа. Смотрите мой код ниже (как ВПР и матч индекс делает то же самое):

Public Function SendReq2Excel(strTQName As String, strSheetName As String) 

Dim rst As DAO.Recordset 
Dim ApXL, xlWBk, xlWsh, xlInv As Object 
Dim fld As DAO.Field 
Dim strPath, allsheet, mostsheet, subtotalcell, othersheet As String 
Dim recordcount, avgprice, totalreq As Integer 

On Error GoTo err_handler 

strPath = Application.CurrentProject.Path & "\Requisition Form.xlsx" 

Set rst = CurrentDb.OpenRecordset(strTQName) 
Set ApXL = CreateObject("Excel.Application") 
Set xlWBk = ApXL.Workbooks.Open(strPath) 
ApXL.Visible = False 

Set xlWsh = xlWBk.Worksheets(strSheetName) 
Set xlInv = xlWBk.Worksheets("INVENTORY") 

... 

avgprice = 2 
For Each c In xlWsh.Range("O2:O" & recordcount + 1) 
    'c.Formula VLOOKUP(C" & avgprice & ", INVENTORY!$B$2:INVENTORY!$X$2000, 23, FALSE) 
    c.Formula = "=INDEX(INVENTORY!$X$3:INVENTORY!$X$2000, MATCH(C" & avgprice & ", INVENTORY!$B$3:INVENTORY!$B$2000, 0))" 
    avgprice = avgprice + 1 
Next 

Должен ли я закрыть один объект электронной таблицы Excel и открыть другой, но как я могу взаимодействовать с обоими рабочими листами, в то же время? Должен ли я выбирать диапазон другой рабочей таблицы Excel до определения формулы? Пожалуйста помоги. Любые предложения приветствуются. Благодаря!

ответ

0

Я нашел свою собственную ошибку. Я назвал ссылочный лист после активной рабочей таблицы, которая использовала формулу. Следовательно, не имея возможности обнаружить соответствующий рабочий лист, #REF! появился в клетках. Простое переупорядочение рабочих листов фиксировало выход ошибки.

Итак, формула работает правильно. MS Access может ссылаться на другой рабочий лист в формуле ячейки при выводе в Excel.

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