Показать сообщение отдельно
Старый 17.01.2013, 17:03   #1  
JBOS is offline
JBOS
Участник
Аватар для JBOS
 
34 / 17 (1) ++
Регистрация: 18.08.2008
Excel - проверить существование Range
- если в шаблоне Excel есть range с именем "zzz", записать туда значение.
- если такого range в шаблоне нет - не записывать туда ничего, и при этом не падать (!)

Пробую решать :


X++:
public void insertValueSafeMode(Bookmark _bookmark, anytype _anyVal, int _workSheet = 1, NoYes _diagnostics = NoYes::No)
  {
      COM         comApplication;
      COM         comWorkSheet;
      COM         comRange;
   
      int         curInfoLine;
   
      if (! m_comDocument)
          throw error(strfmt("@GEE6401", this.getApplicationName()));
   
      try
      {
          curInfoLine = infolog.line();
   
          comWorkSheet   = this.getWorkSheet(_workSheet);
          comApplication = m_comDocument.application();
          comWorkSheet.activate();
   
          if (comWorkSheet && comApplication)
          {
              comRange = comApplication.range(_bookMark);
          }
   
          if (comRange)
          {
              this.insertValueInRange(comRange, _anyVal);
          }
      }
   
      catch
      {
          infolog.clear(curInfoLine);
   
          if (_diagnostics)
          {
              setPrefix('Отсутствует поле в шаблоне Excel');
              warning(strfmt('insertValueSafeMode(%1, %2, %3) failed', _bookmark, _anyVal, _workSheet));
          }
      }
  }
Все очень здорово до тех пор, пока все это не попадает внутрь другого try() - catch(). Тогда, естественно, отрабатывает внешний catch(), и отчет работать перестает..

Any idea?