2012-06-21 2 views
3

У меня есть таблица Excel, которую я экспортировал из какой-либо другой программы.Транспонирование Excel через vbscript

У этого есть строки, которые окрашены в зависимости от нескольких условий ведения бизнеса.

Теперь мне нужно перенести весь лист Excel вместе с цветами и форматированием.

Обратите внимание, что я должен сделать это, используя только Vbscript.

Это код, который я написал до сих пор, но это переставляет без форматирования:

sub transpose 
On Error Resume Next 
Set objExcel = CreateObject("Excel.Application") 
objExcel.Visible = False 
objExcel.Workbooks.Add() 
set table = ActiveDocument.GetSheetObject("CH01") 
CellRect = ActiveDocument.GetApplication().GetEmptyRect() 
CellRect.Top = 0 
CellRect.Left = 0 
CellRect.Width = table.GetColumnCount 
CellRect.Height = table.GetRowCount 
set CellMatrix = table.GetCells(CellRect) 
for RowIter=CellRect.Top to CellRect.Width-1 
    for ColIter=CellRect.Left to CellRect.Height-1 
    ObjExcel.Cells(RowIter+1, ColIter+1).Value = CellMatrix(ColIter)(RowIter).Text 
    'msgbox(CellMatrix(ColIter)(RowIter).Text) 
    next 
next 
objExcel.ActiveWorkbook.SaveAs("C:\Documents and Settings\prasanna\Desktop\test3.xls") 
objExcel.Application.Workbooks.Open("C:\Documents and   Settings\prasanna\Desktop\test3.xls") 
objExcel.Application.Visible = True 
objExcel = Nothing 
end sub 
+0

Во-первых, объясните нам, почему вы можете использовать только VBScript (вы уверены, что не сбиваете с толку VBA?). Во-вторых, покажите нам [то, что вы уже пробовали] (http://whathaveyoutried.com) и где вы застряли, чтобы мы могли вам помочь. Как указано, ваш вопрос никуда не годится – JMax

+0

Мне нужно использовать vbscript только потому, что инструмент, о котором я говорю, позволяет мне использовать только Vbscript – user1472309

+1

Вы уверены, что не имеете в виду VBA? Версия Visual Basic встроена в Excel? VBScript не является частью Excel. – Orbling

ответ

0

Уф .., это стоило некоторое время и экспериментировать, здесь рабочее решение для офиса 2012

const xlPasteValuesAndNumberFormats = 12 'doesn't work with Excel 2010 ? 
const xlFormats =-4122 
Set objExcel = CreateObject("Excel.Application") 
objExcel.Visible = True 
objExcel.DisplayAlerts = false 

если вы Allready у вашей целевой XLS вы можете пропустить эти строки

Set wbkDest = objExcel.Workbooks.Add 
wbkDest.saveAs "c:\test2.xls" 
wbkDest.close 

и далее здесь

Set objWorkbook1= objExcel.Workbooks.Open("C:\test1.xls") 
Set objWorkbook2= objExcel.Workbooks.Open("C:\test2.xls") 
objWorkbook1.Worksheets("Sheet1").UsedRange.Copy 
'we have to do the paste twice, once for the values, once for the formats 
objWorkbook2.Worksheets("Sheet1").Range("A1").PasteSpecial xlPasteValuesAndNumberFormats 
objWorkbook2.Worksheets("Sheet1").Range("A1").PasteSpecial xlFormats 
objWorkbook1.save 
objWorkbook2.save 
objWorkbook1.close 
objWorkbook2.close 
set objExcel=nothing 
+0

Процедура 'PasteSpecial' имеет параметр Transpose, что означает, что транспонирование будет выполняться при вставке. –

+0

Спасибо, что он сделал трюк, который я хотел ... Это будет помощь gr8, если вы можете дать мне знать, hw u нашел значение -4122. – user1472309

+1

@ user1472309: Я записываю макрос, а затем переводим в vbscript. для получения значений констант вы выполняете поиск по Google, например, «const xlformats». Не могли бы вы принять ответ? – peter

Смежные вопросы