(MATLAB) ActiveX -> VBA -> самый быстрый способ заполнения / раскраски таблицы MS Word? - PullRequest
1 голос
/ 17 февраля 2012

Какой самый быстрый способ создать, заполнить и раскрасить по очереди таблицу MS Word поверх ActiveX -> VBA (в моем конкретном случае я делаю это через MATLAB)?

Прямо сейчас я использую это следующим образом

hdlActiveX = actxserver('Word.Application');
...
hdlActiveX.ActiveDocument.Tables.Add(hdlActiveX.Selection.Range, nbRows, nbCols, 1, 1).Rows.Alignment = 1;
...
% create dataCell{nbRows, nbCols}  containing the table values row- and columnwise
...
nrTable = ... % an integer selecting a table in the MS Word document 
...
for r = 1:nbRows
   for c = 1:nbCols
       % Write data into current cell
      hdlActiveX.ActiveDocument.Tables.Item(1).Cell(r,c).Range.Text = dataCell{r, c};

      % setting a different background color rowwise, if a condtion is met
      % this is even bigger performance reducer
      if condition
          for iCol = 1:nbCols
              hdlActiveX.ActiveDocument.Tables.Item(nrTable).Cell(r,iCol).Select;
              hdlActiveX.Selection.Shading.BackgroundPatternColor = color;
          end
      end

   end
end

но для заполнения, действительно, очень долго, особенно для раскрашивания таблицы MS Word (ActiveX) по строкам ... Итак, как можно улучшить производительность заполнения таблицы?

Заранее спасибо,

Ответы [ 2 ]

0 голосов
/ 22 февраля 2012

Я ищу ответ на этот вопрос сам.

Делаем приложение Word невидимым

wordApp.Visible = 0;                
wordApp.ScreenUpdating = 0;

Сокращает время создания моего документа с 50 минут (правда ..таблиц) до 13.

0 голосов
/ 21 февраля 2012

Я мог бы решить вышеупомянутый вопрос с очень простой стратегией:

1) create a tab-delimitered text file with the table entries (simulate the table)
2) open over activex the text file, and copy its contents
3) create the table rows/cows
4) paste the contents of the whole table.

Это решило проблему заполнения.

Проблема затенения фона могла бы быть ускорена по заранее определенным форматам таблицыи выборка и затенение строк (не по ячейкам).

С уважением,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...