2013-03-26 1 views
3

Я пытаюсь запустить макрос в Excel, где пользователь выбирает файл для открытия, и макрос будет копировать диапазон из этой книги и вставить его в указанную пользователем ячейку в оригинальной книге. Моя попытка кода показана ниже. У меня есть «wbThis» как оригинальная рабочая книга, которую нужно вставить, и «wbTarget» в качестве рабочей книги, которая открывается и копируется. Когда я запускаю код, я могу выбрать, какой файл я хочу открыть, но он дает сообщение об ошибке «Требуемый объект» и не переходит далее к копированию и вставке.Открыть заданный пользователем рабочий стол Excel и скопировать диапазон данных в другую книгу

Есть ли способ использовать Workbook.Open вместо Application.GetOpenFilename, но все же у пользователя есть возможность выбрать, какой файл открыть?

Благодарим за помощь.

Dim wbTarget As Workbook 
Dim wbThis As Workbook 

Set wbThis = ActiveWorkbook 
Set wbTarget = Application.GetOpenFilename(FileFilter:="Excel workbook (*.xls),*.xls", Title:="Open data") 

wbThis.Activate 
Set rDest = Application.InputBox(Prompt:="Please select the Cell to paste to", Title:="Paste to", Type:=8) 
On Error GoTo 0 
wbTarget.Activate 
Application.CutCopyMode = False 
wbTarget.Range("A1").Select 
wbTarget.Range("B6:B121").Copy 
wbThis.Activate 
rDest.PasteSpecial (xlPasteValues) 
Application.CutCopyMode = False 

wbTarget.Close False 

ответ

3

GetOpenFileName действительно не открывает файл, просто получает его имя. Попробуйте сделать Application.Workbooks.Open(TheResultOfGetOpenFileName)

dim FileName as string 
FileName = Application.GetOpenFilename(FileFilter:="Excel workbook (*.xls),*.xls", Title:="Open data") 

Set wbTarget = Application.Workbooks.Open(FileName) 
+0

Большое вам спасибо за помощь! Мне пришлось изменить еще одну вещь в коде, чтобы она работала правильно, что я показал ниже. Диапазон («A1»). Выберите Диапазон («B6: B121»). – user2033485

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