Спарклайн Печать в PDF - PullRequest
       11

Спарклайн Печать в PDF

1 голос
/ 27 июля 2011

У меня есть проблема, когда при экспорте в PDF через VBA мои спарклайн-графики не печатаются. Я просмотрел ваш сайт и несколько других, пытаясь найти решение. К сожалению, я не могу заставить его работать.

Я единственный, кто использует приложение, поэтому процесс полностью виден. Я попытался сделать все следующее перед строкой экспорта, чтобы спарклайны «обновились»:

  1. application.screenupdating = false, затем application.screenupdating = true

  2. application.visible = true (на основе форума, хотя он никогда не был скрыт) * ​​1011 *

  3. выберите ячейку, в которой находится спарклайн

  4. выбрать весь лист, где расположены спарклайн (ы)

  5. выберите. Скопируйте ячейку, в которой находится спарклайн

  6. application.подождать, будет ли оно обновлено

  7. application.calculate, чтобы увидеть, обновится ли оно

Я действительно не могу придумать, что еще можно попробовать. Электронная таблица предназначена для создания отчета по одной сущности, печати отчета, а затем перехода к созданию следующего отчета для другой сущности (извлекает данные из Access, создает более 200 отчетов на 10 страниц).

Любая помощь приветствуется.

Спасибо - Крис.

Ответы [ 2 ]

2 голосов
/ 21 ноября 2012

У меня была такая же проблема, и я попробовал все ваши перечисленные идеи так же, как и DoEvents, но после тестирования строки кода для строки я обнаружил, что код ошибки:

.Axes.Vertical.MinScaleType = xlSparkScaleGroup

По какой-то причине xlSparkScaleGroup помешал обновлению спарклайнов на странице, а когда я попытался обновить-распечатать-обновить-распечатать --- лист спарклайнов отсутствовал. Мое решение состояло в том, чтобы просто удалить этот код и затем вручную установить весы. Как то так:

.Axes.Vertical.MinScaleType = xlSparkScaleCustom

.Axes.Vertical.CustomMinScaleValue = Application.WorksheetFunction.Min(Range(SLAddress))

.Axes.Vertical.MaxScaleType = xlSparkScaleCustom

.Axes.Vertical.CustomMaxScaleValue = Application.WorksheetFunction.Max(Range(SLAddress))

, где SLAddress - адрес данных спарклайна, которые я использовал. Я надеюсь, что это поможет решить вашу проблему, и, возможно, Microsoft действительно решит эту проблему.

1 голос
/ 28 июля 2011

Пришлось использовать временный файл, чтобы это произошло.Сохраните текущий файл как временный файл, используя команду «savecopyas», затем откройте временный файл (что позволило ему обновить спарклайны), распечатайте, закройте временный файл и снова запустите процесс.

Надеюсь, они исправят это в какой-то момент.

Крис.

...