17.04.2012, 14:26 | #1 |
Участник
|
Всем привет!
Возник вопрос - как в excel скопировать значение ячейки Код примерно следующий (xlWorkSheet Automation.Worksheet) .... xlWorkSheet.Range('A1').Value := 'Абракадабра'; xlWorkSheet.Range('B1').Formula := '=A1'; xlWorkSheet.Range('B1').Copy; xlWorkSheet.Range('C1').PasteSpecial(5); {вставка значений из буфера, я так думаю...} ..... В получившемся excel видно, что ячейка C1 пустая. Как сделать, чтобы там было значение то, что видно в B1. Сам excel подобное копирование со вставкой значений делает через переменную Selection Может кто знает как можно здесь использовать Automation Selection? Спасибо! |
|
17.04.2012, 15:18 | #2 |
Участник
|
Напишите вместо последней строчки
xlWorkSheet.Range('C1').Select; xlWorkSheet.Paste; |
|
17.04.2012, 15:19 | #3 |
Участник
|
вместо "5" нужно подставить "-4163"
нашел в справке по VBA метода PasteSpecial объекта Range. Значение "5" там кста нету. Юр, только засорять буфер в темную это моветон, имхо. И селектион трогать не советую! |
|
17.04.2012, 15:39 | #4 |
Участник
|
Цитата:
Спасибо за подсказку ))) А разве можно без засорения буфера это сделать? |
|
17.04.2012, 15:41 | #5 |
Участник
|
|
|
17.04.2012, 15:54 | #6 |
Участник
|
|
|
17.04.2012, 16:03 | #7 |
Участник
|
Значения ячеек:
E3 "=D3+D4" D3 = "2250" D4 = "99" Код: a.Range("F3").Value = a.Range("E3").Value F3 = "2349" |
|
17.04.2012, 16:03 | #8 |
Участник
|
Цитата:
Кстати новым эмпирическим путем выяснил, что нужно все таки значение параметра = 3! Тогда копируется именно значение |
|
17.04.2012, 16:09 | #9 |
Участник
|
|
|
17.04.2012, 16:24 | #10 |
Участник
|
Только боюсь с большими значениями может все равно неувязочка выйти.
Если формула не вычислилась, то нужно вызвать calculate для ячейки. А еще вопрос чисто педогагический. у ф-ции PasteSpecial аж целых 4 параметра, все необязательные. Тот который был нужен оказался 2 по счету, и у него действительно есть значения 3,5, а -4163 относилось к первому параметру. Так вот мне кажется, что не обязательные параметры для внешних компонент в навике отсутствуют, вызвать такие ф-ции без указания всех параметров не удается. Как удалось запустить этот код Код: xlWorkSheet.Range('C1').PasteSpecial(5) |
|
17.04.2012, 16:31 | #11 |
Участник
|
Цитата:
Сообщение от InTacto
Только боюсь с большими значениями может все равно неувязочка выйти.
Если формула не вычислилась, то нужно вызвать calculate для ячейки. А еще вопрос чисто педогагический. у ф-ции PasteSpecial аж целых 4 параметра, все необязательные. Тот который был нужен оказался 2 по счету, и у него действительно есть значения 3,5, а -4163 относилось к первому параметру. Так вот мне кажется, что не обязательные параметры для внешних компонент в навике отсутствуют, вызвать такие ф-ции без указания всех параметров не удается. Как удалось запустить этот код Код: xlWorkSheet.Range('C1').PasteSpecial(5) с "5" - вываливалась ошибка С "4" ошибки уже не было |
|
17.04.2012, 16:40 | #12 |
Участник
|
Она могла быть вызвана другими причинами. Я думаю дело в другом.
Я даже не совсем правильно описал ситуацию, нельзя указать второй параметр без того, чтобы не указать первый. А тут это возможно прокатило, потому как доступ к ней осуществлен через аутомайшен листа и компилятору уже не доступны описания этой ф-ции. Если завести аутомайшен для range, то такой вызов ф-ции вызвал бы ошибку на этапе компиляции. |
|