2016-05-10 4 views
0

Попытка значений из одной книги в другуюТип Несовпадение для Workbook декларации VBA

Sub CopyValues() 

    'Current Workbook 1 
    Dim B As Worksheet: Set bun = Sheets("Workbook1Sheet1") 

    'Since Workbook 2 is open 
    'Getting a type mismatch error on this line, please note the workbook is open 
    Dim wkb2 As Workbook: Set wkb2 = "Workbook2.xls" 


    Dim x As Integer 
    x = 3 
    B.Range("E" & x).Value = "=vlookup(D3,'wkb2'A!$D:$F,3,0)" 

End Sub 
+2

'Set wkb2 = Рабочие книги (« Workbook2 »)' – Ambie

+0

Спасибо за тонну за быстрый ответ :) –

+0

Также я думаю, что 'bun' должен быть' B' в 'Dim B As Worksheet: Set bun = Sheets ("Workbook1Sheet1") '. Я бы рекомендовал вам добавить «Option Explicit» поверх вашего кода –

ответ

2

Попробуйте присваивание формулу, как,

B.Range("E" & x).Formula = "=vlookup(D" & x & ", [Workbook2.xls]Sheet1!$D:$F, 3, false)" 

После того, как вы назначили вторую книгу с Set wkb2 = Workbooks("Workbook2.xls") вы не можете использовать wkb2 внутри строки с кавычками и вам нужен рабочий лист, а также диапазон ячеек.

4

Когда вы используете Set x = ...., вы устанавливаете объект. Так что Set Wkb2 = "..." не работает, потому что вы назначаете строку. Ambie ответил на ваш вопрос. Это работает, потому что WorkBooks("...") дает объект

0
B.Range("E" & x).Value = "=vlookup(D3,'wkb2'A!$D:$F,3,0)" 

С, что вы хотите быть

B.Range("E"&x).Value = "=vlookup(D3,'" & wkb2 & "'A!$D:$F,3,0)" 

Убедившись wkb2 объявляет книгу и лист тоже.