|  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").ValueF3 = "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, то такой вызов ф-ции вызвал бы ошибку на этапе компиляции. | 
|  |