Перекинуть данные, чуть обработав, из одной книги в другую

Программирование на Visual Basic for Applications
alpha_beta
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 13.05.2008 (Вт) 19:51

Перекинуть данные, чуть обработав, из одной книги в другую

Сообщение alpha_beta » 13.05.2008 (Вт) 20:03

Имеется книга Book1, в ней некоторый диапазон, напр "B2:C3"
Хотелось бы в перенести данные в другую открытую книгу Book2: если в исходной Book1 в ячейке текст, то в Book2 в соотв ячейке выставить этот текст, если же число, то добавить значение к уже имеющемуся в Book2, если что то другое то ничего не делать.

У меня такая идея: цикл по диапазону в Book1, а в Book2 вставляем данные. Только вот никак не получается сослаться на нужную ячейку :( Если подставлять ...Range.Address, то WScript падает с ошибкой. С остальным проблем вроде нет.

Пишу на Windows Script Host, не совсем VBA, но очень похоже.
Код: Выделить всё

Set objXL = WScript.CreateObject("Excel.Application")
objXL.Visible = True
Set objWB = objXL.Workbooks.Add
Set objWB2 = objXL.Workbooks.Open ("D:\Книга1.xls")
For Each cl In objWB2.ActiveSheet.Range("B2:С3")
' Тут падает; если жестко прописать ячейку, то все ок
objWB.ActiveSheet.Range(cl.Address).Value = cl.Value
Next

HandKot
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 28.06.2006 (Ср) 13:34
Откуда: Sergiev Posad

Сообщение HandKot » 14.05.2008 (Ср) 7:07

попробуйте указать нужный лист

Код: Выделить всё
For Each cl In objWB2.Worksheets("МойЛист").Range("B2:С3").Cells
  objWB.Worksheets("МойЛист").Range(cl.Address).Value = cl.Value
Next
I Have Nine Lives You Have One Only
THINK!

alpha_beta
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 13.05.2008 (Вт) 19:51

Сообщение alpha_beta » 14.05.2008 (Ср) 18:55

Уф, нашел способ попроще - мне достаточно оказалось .SpecialPaste воспользоваться с параметром "Сложить". Единственная засада, которая там была, то что VBScript LONG и INT путает, потому параметры пришлось задавать числами
Код: Выделить всё
objWB.ActiveSheet.Range("B2:С3").PasteSpecial -4104, 2, False, False


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

    TopList