2016-04-15 11 views
-2

Я хочу скопировать ряд ячеек из Excel, вставить его в Word и отформатировать, используя AutoFit для столбца. Как я могу это сделать? Это может быть сделано с ListObject, но Я не хочу форматировать его как таблицу в Excel.Копирование диапазона ячеек, вставка в слово и формат - Excel VBA

ответ

2

Нельзя назначить ссылку Range объекту ListObject - они не то же самое!

Создайте новый лист, с этими значениями в $A$1:$C$2:

A B C 
1 2 3 

Хит «записи макросов», и выберите «Формат как таблицы» из ленты; остановите макросъемку. Этот код генерируется получает:

Sub Macro1() 
    ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$1:$C$2"), , xlYes).Name = _ 
     "Table1" 
    Range("Table1[#All]").Select 
    ActiveSheet.ListObjects("Table1").TableStyle = "TableStyleLight1" 
End Sub 

Вы должны AddListObject путем доступа ListObjects коллекцию листа, и указав диапазон источника.

+0

Но я не хочу отформатировать его как таблицу. Я просто хочу скопировать диапазон ячеек, вставить его в документ Word и отформатировать его. – Dombey

+0

Вы хотите 'ListObject' - это * точно *, что такое« таблица »... –

+0

Извините, я не хочу отформатировать его как таблицу. – Dombey

2

(я бы разместил это как комментарий к @ mats-mug, но пока не могу). В дополнение к ответу @ mats-mug и общей хорошей практике, не используйте ActiveSheet в своем коде. Объявите лист как объект листа.

Dim wbSLA as Workbook 
Dim wsDetailSLA as Worksheet 
    Set wbSLA = ThisWorkbook 
    Set wsDetailSLA = wbSLA.Sheets("SLA Details") 

'use @mats-mug code here using the worksheet objects instead of ActiveSheet 
Смежные вопросы