2016-10-26 4 views
0

Я играю с vbscript и как сделать свою жизнь проще. Теперь я хочу запустить скрипт, который открывает файл excel. Скопируйте столбец C (неизвестные строки - длина) в столбец B и соедините его с чем-то.Как скопировать вставку и конкатенацию столбца Excel с помощью vbscript?

Пример:

------------------- 
||| A | B | C | 
------------------- 
|1|ONE | ANY | 11 | 
|2|TWO | ANY | 42 | 
|3|FOUR| ANY | 96 | 
|4|SIX | ANY | 42 | 
------------------- 

Для этого:


||| A | B | C | 
------------------- 
|1|ONE |*11* | 11 | 
|2|TWO |*42* | 42 | 
|3|FOUR|*96* | 96 | 
|4|SIX |*42* | 42 | 
------------------- 

До сих пор я попытался это:

Option Explicit 
Dim objExcel 

Set objExcel = CreateObject("Excel.Application") 
With objExcel 
    .Workbooks.Open ("Z:\1\one.xlsx") 
    .Visible = False 
    .Range("C:C").Copy 
    .Range("B1").Select 
    .ActiveSheet.Paste 
    .ActiveWorkbook.Close(True) 
    .Quit 
End With 

Во-первых, он дает мне ошибку, что буфер полон и лучше очистить в орде r для освобождения памяти. А во-вторых, я не нашел функцию concatenate в Интернете для vbscript.

+0

Примечания: Вы копируете весь столбец и размещение, что в 'B1'. Я считаю, что это вызовет ошибку. Я предлагаю сократить ваш диапазон до любого, что может быть, скажем, 'C1: C100', а затем вставить. Или измените '.Range (" B1 ")' на 'Range (" B: B ")' и посмотрите, поможет ли это. Также обратите внимание, что вы можете конкатенировать с '&': '= A1 & B1' совпадает с' = concatenate (A1, B1) '. – BruceWayne

+0

Замечу, что колонка excel имеет неизвестную длину! –

+0

Это неизвестно, когда вы начинаете, но вы всегда можете получить последнюю строку (http://www.rondebruin.nl/win/s9/win005.htm) из диапазона, а затем оттуда! – BruceWayne

ответ

1

С некоторыми исследованиями и справками Брюса, который работал для меня в случае, если кто-то интересуется:

Option Explicit 
Dim objExcel,LastRow 
Const xlUp = -4162 


Set objExcel = CreateObject("Excel.Application") 
With objExcel 
    .Workbooks.Open ("Z:\1\onest.xlsx") 
    .Visible = False 
    LastRow = .Range("A1048576").End(xlUp).Row 
    .Range("C1:" & "C" & LastRow).Copy 
    .Range("B1").Select 
    .ActiveSheet.Paste 
    Do While LastRow <>0 
     .Cells(LastRow,2)="*"&.Cells(LastRow,3)&"*" 
     LastRow = LastRow - 1 
    Loop 
    .ActiveWorkbook.Close(True) 
    .Quit 
End With 
Смежные вопросы