четверг, 12 июля 2012 г.

Как подружить Canon LBP-1120 и Office 2010?


Данная проблема проявляет себя на операционной системе Windows Xp Sp3 и у обладателей принтеров Canon LBP-1120, LBP-800 (Может и с другими моделями Canon). Скажем у вас дошли руки обновить Office 2003 или Office 2007 на новый Office 2010 (офис) и после обновления вы попытались распечатать, из офиса, на вышеуказанный принтер, документ и получили сообщение о закрытие документа с восстановлением имеющейся информации. Так же печать из Adobe Reader может сопровождаться сообщением о закрытие PDF-файла. Первым же решением может прейти переустановка драйверов принтера на новые драйвера с сайта производителя. Но нет, не помогает. Не буду вас мучить, и скажу, что разработчики Canon о нас подумали, и выпустили файл-заплатку, которая устраняет данную проблемку. Кто страдает данным недугом, на сайт Canon по этой ссылке:
Качаем, ставим, радуемся жизни.
Все идеи взяты с нижеуказанных сайтов.

Проблема с принтером HP DeskJet 1280

Как-то столкнулся с проблемой в принтере HP DeskJet 1280, которая заключалась в том, что принтер отказывался печатать, выдавая пустую страницу из любого приложения, с которого была необходимость вывести документ на печать. Так вот, данная проблема не решалась даже переустановкой на свежую версию драйверов. Все это наблюдалось под управлением Windows XP на разных персональных компьютерах, на которых тестировался принтер. В Интернете наткнулся на ветку форума, в которой обсуждалась данная проблема. Причина по которой принтер ведет себя так, является загрязнившийся датчик определения краев бумаги, он находится на движущейся подложке, где устанавливаются картриджи, справой стороны. Что можно попробовать сделать в этом случае:

- Почистить (протереть) загрязненный датчик.

- Установить драйвера от принтера HP DeskJet 1220. Принтеры схожи между собой, в принтер HP DeskJet 1220 нет датчика определения краев бумаги.

Данные решения взяты http://ddriver.ru/kms_forumd+topic+forum-15+ids-2246.html

Удаление Office 2007 не через панель управления


В том случае если переустановка накатом или удаление через панель управления не работает. Можно воспользоваться двумя способами:

- Использовать специальную утилиту FixIt для конкретно установленного у Вас офисного пакета, поддерживаются пакеты 2003, 2007, 2010. Скачать их можно по следующему ссылке:


- Попробовать удалить вручную. Так же в этой статье можно найти ссылки на другие офисные пакеты. 

Установка Ogre3D в Ubuntu 10.04.

В этом посте мне бы хотелось рассказать как установить Ogre3D в Ubuntu. Ставить будем из исходных кодов. На момент написания поста на сайте Ogre, для скачивания, доступна версия 1.7.4. Скачать можно по этой ссылке http://www.ogre3d.org/download/source. Скаченный архив необходимо распаковать в любое удобное место, например ./src/ogre_src_v1-7-4/.
Для сборки исходников необходимо использовать Cmake. Установить его можно следующей командой в терминале:

sudo apt-get install cmake-gui

Узнать версию только что установленной системы cmake можно командой в терминале:
$ cmake - - version
Теперь нам необходимо установить все зависимые библиотеки для сборки Ogre.

sudo apt-get install libfreetype6-dev libboost-date-time-dev \
libboost-thread-dev nvidia-cg-toolkit libfreeimage-dev \
zlib1g-dev libzzip-dev libois-dev libcppunit-dev doxygen \
libxt-dev libxaw7-dev libxxf86vm-dev libxrandr-dev libglu-dev

Так, все готово для сборки. Запустите cmake-gui, с помощью данной программы мы укажем настройки конфигурации для сборки Ogre.


В поле 'Where is the source code' укажите путь к исходникам Ogre3d, у меня этот путь ./src/ogre_src_v1-7-4/. В поле 'Where to build the binaries' укажите путь куда будет собиратся Ogre, у меня этот путь ./src/ogre_bin/. Далее нажимаем Configure.
В диалоге выбора генератора установите 'Unix Makefiles' и нажмите Finish. Выберите нужные вам опции сборки, нажмите Configure потом Generate.
Далее переходим, в терминале, в каталог ogre_bin и выполняем команду make. Запустится процесс сборки. После этого, в этом же каталоге, выполняем make doc.


Окончательно установить Ogre, выполните команду sudo make install. Установка произойдет в каталог /usr/local/.

После этого идем по следующему пути /usr/local/bin/ и запускаем SampleBrowser. Мы увидим следующие окно.


На этом все.

Установка Ogre3D в Windows Vista.

В данном уроке мне бы хотелось описать компиляцию примеров поставляемых вместе с Ogre3D SDK, создание простого приложения с использованием данного движка. Также опишу решение проблем возникших в процессе сборки примеров.
Для начала необходимо скачать Ogre3D SDK под одну из сред компиляции представленные на официальном сайте проекта на ваш выбор. Идём на сайт Ogre3D в раздел Download http://www.ogre3d.org/download/sdk. Т.к. на компьютере установлена MS Visual Studio 2008 (среда) мне необходимо скачать для этой версии среды разработки соответствующую версию Ogre SDK 1.7.2 для Visual C++ .Net 2008 (далее просто Ogre).
Скаченный самораспаковывающийся архив установим в любое для вас удобное место на жестком диске, но желательно с коротким путём и названием каталога латинскими буквами. Я распаковал архив по следующему пути C:\Libs\OgreSDK_vc9_v1-7-2\.
Также для успешной компиляции примеров поставляемых вместе с OgreSDK необходимо скачать и установить СМаке. У меня используется версия CMake 2.8.4 и установлен по пути: C:\Program Files\CMake 2.8\.
Теперь взглянем на содержимое каталога с Ogre:

Все примеры лежат в каталоге Samples, а файл который объединяет все примеры в одном решение называется OGRE.sln. Вот этот файл и необходимо открыть в MS Visual Studio 2008.
После этого в обозревателе решений нашей среды будет отображено одно решение (OGRE) объединяющее в себе 34 проекта, т.е. сами примеры и браузер примеров (программа просмотра примеров).

Следующим нашим шагом будет сборка всех примеров. Для этого щелкаем правой кнопкой на решение с именем OGRE и выбираем Build Solution.
Если в процессе сборки появилось сообщение об ошибке линковщика (Project : error PRJ0019: A tool returned an error code from "Performing Pre-Link Event...") при сборке проекта SampleBrowser, то необходимо щелкнуть правой кнопкой на проекте SampleBrowser выбрать Properties (Свойства). В открывшемся окне выбираем Configuration Properties -> Build Events -> Pre-Link Event. Посмотрите правильно ли указано значение пути к CMake в свойстве Command Line. У меня прописано следующие:
"C:\Program Files\CMake 2.8\bin\cmake.exe" -E make_directory ../../lib/Debug
if errorlevel 1 goto VCReportError
Когда сборка всех примеров выполнено успешно перейдем в каталог bin\debug и найдем файл с именем SampleBrowser_d.exe. После запуска данного файла на дисплее вы увидите приложение OGRE Sample Browser позволяющие выбрать один из примеров и запустить его демонстрацию.
Если SampleBrowser_d.exe не запускается и выдается сообщение о том, что не найдена библиотека d3dx9_42.dll, то вам необходимо выполнить обновление DirectX SDK, последние обновления которого можно скачать в центре загрузок от microsoft.

В следующем посте мы попробуем создать простое приложение в Ogre.

Workout v.1.0.0



Workout – это программа выключит ваш компьютер в назначенное время и сообщит об этом за указанные минуты. Операционная система: Windows XP.

Скачать программу

Функция GetSystemMetrics

Я не люблю много времени тратить на поиски информации о какой либо функции. Это конечно же может задеть вас как человека в этом плане ответственного, делающего все до победного конца.
По этому я буду разбирать данную функцию методом тыка, т.е. попробовал применить, посмотрел результат.
Первым делом поискать описание данной функции в help файле Delphi 7. Открываем строку поиска, вводим GetSystemMetrics и ожидаем в предвкушение результата. Ну что, есть что нибудь? У меня есть, возможно у вас тоже что-то найдется. Видим что все написано на английском, если у вас на русском, то вы первый обладатель справки по Delphi 7 на русском языке. Попробуем понять и прочесть то, что до нас хотели довести по этой функции составители документации. Ни чего не понятно? Загоним это в Google Translator.

Стало чуть проще. Данная функция получает метрики и конфигурационные настройки системы. Слово метрики не совсем понятно, возможно имеют в виду размеры. Переведем следующую строчку.
Получает ширину и высоту элементов экрана Windows. Все возвращает в пикселях. Так, может на примерах попонятней будет.
int GetSystemMetrics(
  int nIndex // Указываются параметр того, что мы хотим получить
);


syntax highlighted by Code2HTML, v. 0.9.1
Что мы можем из этого заключить? Функция в качестве аргумента передается параметр того что мы хотим получить (Например размеры экрана по x или у, количество кнопок у мыши и т.д.) результатом функция возвратит нам эти значения. Если функция завершится с ошибкой, она вернет ноль.
Так, ну что продолжим изучение на примере.
Предполагается что вы знакомы со средой Delphi 7 и легко сможете разобраться куда писать соответствущий код для достижения нужного нам результата. Попробую расписать подробно, но могу забыть что-нибудь.
Создадим новый VCL проект File -> New -> VCL Forms Applicatio - Delphi for Win32
Сохраним проект под любым удобным для вас именем File -> Save Project As.. И имя тебе будет ex_p1, модуль формы назовем ex_p1_unit.
С именем определились, теперь необходимо решить что выводить на нашу форму. Для на нашего примера вполне достаточно вывести размеры экрана и количество кнопок мыши. Остальные параметры вы можете вывести самостоятельно.
Для это нам потребуется четыре Label, и одна кнопка закрытия окна. Четыре Label мы расположим на одной панели с включенным свойством Align := alClient, кнопку мы расположим на второй панели с включенным Align := alBottom. Это кнопка типа TBitBtn c установленным свойством Kind := bkClose. У нашей формы Form1 меняем одно свойство BorderStyle := bsDialog.
У вас должно получиться что-то в этом духе:

Переходим к реализации кода.
Начнем с обработчика событий OnCreate. В этом обработчике, в основном, и будут производится все страшные манипуляции с функцией GetSystemMetrics.
Заведем три переменных для хранения результата возвращаемого функцией GetSystemMetrics:
  • для количества кнопок мыши (MouseButtonCount)
  • для количества пикселей экрана по x (XScreenResolution)
  • для количества пикселей экрана по y (YScreenResolution)
Параметры которые мы должный передать в GetSystemMetrics следующие:
  • для количества кнопок мыши (SM_CMOUSEBUTTONS)
  • для количества пикселей экрана по x (SM_CXSCREEN)
  • для количества пикселей экрана по y (SM_CYSCREEN)

procedure TForm1.FormCreate(Sender: Tobject);
var
  MouseButtonCount: Integer;
  XScreenResolution: Integer;
  YScreenResolution: Integer;
begin
  MouseButtonCount := GetSystemMetrics( SM_CMOUSEBUTTONS);
  XScreenResolution := GetSystemMetrics(SM_CXSCREEN);
  YScreenResolution := GetSystemMetrics(SM_CYSCREEN);
  Label4.Caption := IntToStr(MouseButtonCount);
  Label2.Caption := IntToStr(XScreenResolution) + ' X ' + IntToStr(YScreenResolution);
end;


syntax highlighted by Code2HTML, v. 0.9.1

На этом примере можно посмотреть и другие параметры.

Смена курсора в Ubuntu 10.04.2

Не знаю как в KDE, но как-то была необходимость сменить вид курсора в Gnome 2. По-определению, в gnome, вид курсора меняется в пункте меню System(Система)->Preferences(Настройки)->Appearance(Внешний вид). Далее в выбранной теме нажимаем кнопку Customize(Настроить), выбираем вкладку Pointer(Указатель), выбираем понравившийся курсор и применяем все изменения. По идеи курсор должен сменится сразу, но этого не произошло, у меня в частности. Даже после перезапуска иксов и перезагрузки компьютера ничего не изменилось, курсор какой был изначально, такой и остался. Не знаю в чем причина, но, по-гуглив не много, мне встретилось альтернативное решение, которое помогло сменить вид курсора. В терминале пишем следующую команду:

sudo update-alternatives --config x-cursor-theme

Результатом выполнения команды будет список всех указателей. Из этого списка вводим номер указателя, который мы хотим использовать по-умолчанию. Вот и все. Если курсор после этого не изменился, попробуйте перезапустить иксы.

Данное решение было взято с этой ветки форума, также на нем можно поискать ответы на часто задаваемые вопросы по ОС Ubuntu.

Shutdown them all v.1.0.2


Shutdown them all v.1.0.2 — это программа, которая загружается вместе с Windows, располагаясь в системном трее, она позволяет иметь быстрый доступ к функциям выключения и перезагрузки вашего компьютера. Протестировано в Windows XP. В данной версии исправлена функциональная недоработка.

Проблема с кодировкой в Adobe Reader, распечатка иероглифами

Самым грубым вариантом решение данной проблемы, мне видится только в переустановки операционной системы Windows XP. Если вас не устраивает такой исход, можно попробовать придумать несколько костылей. В данном посте я представлю три из них, один из которых был проверен собственноручно.
  • Можно попробовать альтернативную программу чтения PDF формата, например Foxit Reader
Если принципиально не хотите отказываться от любимого Adobe Reader, то
  •  В данной программе поищите в диалоге печати, кнопку «Дополнительно», поставте галочку «Печатать как изображение» или что-то в этом роде, от версии к версии свои названия. Этот вариант опробован и он помог решить проблему с иероглифами.
Еще один вариант решение проблемы, это

Все идеи взяты с форума avsim.su

Простая заставка Color Changer на Delphi для Windows XP

Весь пример представленной заставки основан на фрагментах кода позаимствованных из сборника статей Dephi World 6. Наша заставка не будет иметь ни какого окна конфигурации и красивого графического эффекта, она просто будет менять заливку формы каждую секунду. Какие определенные требования должна иметь программа, по моиму мнению, чтобы её можно назвать заставкой?
  • В один и тот же момент должна быть запущина только одна копия
  • По реакции на движение мыши или нажатия клавиши прерывать свою работу
Начнем с того что, нам необходимо создать проект, идем в File > New > VCL Forms ApplicationDelphi. Сохраним проект под именем ScreenProject, а имя модуля Screen. Далее нам необходимо изменить свойства формы.

BorderIcons []
  biSystemMenu False
  biMinimize False
  biMaximize False
BorderStyle bsNone
Color clBlack
FormStyle fsStayOnTop
Name ScrnFrm
Visible False

Расположите на форме таймер и выстановите следующие значения свойств.

Enabled = False
OnTimer = tmrTickTimer
Left = 199
Top = 122

Напишим код, который будет выполнятся по наступлению события OnTimer.


procedure TScrnFrm.tmrTickTimer(Sender: TObject);
var
  ClrCh: TColor;
  R, G, B: Byte;
begin
  R := Random($FF);
  G := Random($FF);
  B := Random($FF);

  ClrCh := RGBToColor(R, G, B);
  ScrnFrm.Color := ClrCh;
end;


syntax highlighted by Code2HTML, v. 0.9.1

Данная процедура случайным образом получает значение красного, зеленого, синего от 0 – FF. Эти значения в совокупности и образуют цвет, которым закрашивается форма.
Деактивацией работы хранителя экрана будет отвечать следующая процедура, которая завершит работу программы по нажатию любой клавиши или по перемещению курсора мыши.


procedure TScrnFrm.DeactivateScrnSaver(var Msg: TMsg; var Handled: Boolean);
var
  done: boolean;
begin
  if Msg.message = WM_MOUSEMOVE then
   done := (Abs(LOWORD(Msg.lParam)-crs.X) > 5) or
   (Abs(HIWORD(Msg.lParam)-crs.Y) > 5)
  else
   done := (Msg.message = WM_KEYDOWN) or (Msg.message = WM_ACTIVATE) or
   (Msg.message = WM_ACTIVATEAPP) or (Msg.message = WM_NCACTIVATE);
  if done then
   Close;
end;


syntax highlighted by Code2HTML, v. 0.9.1

Данная процедура закрывает форму, если происходит перемещение курсора более чем на 5 пикселей по X или более чем на 5 пикселей по Y.
Так же создадим четыре события OnCreate, OnActivate, OnShow, OnHide для формы.


procedure TScrnFrm.FormCreate(Sender: TObject);
var
  hMutex: THandle;
begin
  hMutex := CreateMutex(0, true, 'ScrnFrm');
  if GetLastError = ERROR_ALREADY_EXISTS then
  begin
   CloseHandle(hMutex);
   Application.Terminate;
  end;
end;


syntax highlighted by Code2HTML, v. 0.9.1

При создание формы создается мьютекс и осуществляется проверка запущенна ли форма повторно, если запущенна, то приложение завершается.


procedure TScrnFrm.FormActivate(Sender: TObject);
begin
  WindowState := wsMaximized;
end;


syntax highlighted by Code2HTML, v. 0.9.1

При активации форма разварачивается на весь экран.


procedure TScrnFrm.FormHide(Sender: TObject);
begin
  Application.OnMessage := nil;
  tmrTick.Enabled := false;
  ShowCursor(true);
end;


syntax highlighted by Code2HTML, v. 0.9.1

Если форма исчезает, то прием сообщение прекращается, таймер отключается, отображается курсор.


procedure TScrnFrm.FormShow(Sender: TObject);
begin
  GetCursorPos(crs);
  tmrTick.Interval := 1000;
  tmrTick.Enabled := true;
  Application.OnMessage := DeactivateScrnSaver;
  ShowCursor(false);
end;


syntax highlighted by Code2HTML, v. 0.9.1

При отображение формы получаем координаты курсора, устанавливаем интервал таймера в одну секунду, включаем таймер, обработчику событий передаем процедуру деактивации хранителя экрана.

Ну, вот и все, нам осталось только собрать проект, переименовать бинарный файл в файл с расширением *.scr, скапировать файл в системную папку Windows XP.


Приложение А. Код проекта хранителя экрана Color Changer


{ Модуль Screen.pas }

unit Screen;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;

type
  TScrnFrm = class(TForm)
  tmrTick: TTimer;
  procedure FormCreate(Sender: TObject);
  procedure tmrTickTimer(Sender: TObject);
  procedure FormActivate(Sender: TObject);
  procedure FormHide(Sender: TObject);
  procedure FormShow(Sender: TObject);
  private
  { Private declarations }

  procedure DeactivateScrnSaver(var Msg: TMsg; var Handled: boolean);
  function RGBToColor(R, G, B: Byte): TColor;
  public
  { Public declarations }

end;

var
  ScrnFrm: TScrnFrm;
  crs: TPoint;

implementation

{$R *.dfm}
procedure TScrnFrm.DeactivateScrnSaver(var Msg: TMsg; var Handled: Boolean);
var
  done: boolean;
begin
  if Msg.message = WM_MOUSEMOVE then
   done := (Abs(LOWORD(Msg.lParam)-crs.X) > 5) or
   (Abs(HIWORD(Msg.lParam)-crs.Y) > 5)
  else
   done := (Msg.message = WM_KEYDOWN) or (Msg.message = WM_ACTIVATE) or
   (Msg.message = WM_ACTIVATEAPP) or (Msg.message = WM_NCACTIVATE);
  if done then
   Close;
end;

procedure TScrnFrm.FormActivate(Sender: TObject);
begin
  WindowState := wsMaximized;
end;

procedure TScrnFrm.FormCreate(Sender: TObject);
var
  hMutex: THandle;
begin
  hMutex := CreateMutex(0, true, 'ScrnFrm');
  if GetLastError = ERROR_ALREADY_EXISTS then
  begin
   CloseHandle(hMutex);
   Application.Terminate;
  end;
end;

procedure TScrnFrm.FormHide(Sender: TObject);
begin
  Application.OnMessage := nil;
  tmrTick.Enabled := false;
  ShowCursor(true);
end;

procedure TScrnFrm.FormShow(Sender: TObject);
begin
  GetCursorPos(crs);
  tmrTick.Interval := 1000;
  tmrTick.Enabled := true;
  Application.OnMessage := DeactivateScrnSaver;
  ShowCursor(false);
end;

function TScrnFrm.RGBToColor(R, G, B: Byte): TColor;
begin
  Result := B shl 16 or G shl 8 or R;
end;

procedure TScrnFrm.tmrTickTimer(Sender: TObject);
var
  ClrCh: TColor;
  R, G, B: Byte;
begin
  R := Random($FF);
  G := Random($FF);
  B := Random($FF);

  ClrCh := RGBToColor(R, G, B);
  ScrnFrm.Color := ClrCh;
end;

end.


{Модуль проекта  ScreenProject.dpr }

program ScreenProject;

uses
Forms, SysUtils,
Screen in 'Screen.pas' {ScrnFrm};

{$R *.res}
{$D SCRNSAVE Color Changer Screen Saver}

begin
  Application.Initialize;
  if (ParamCount > 0) and (UpperCase(ParamStr(1)) = '/S') then
  begin
   Application.CreateForm(TScrnFrm, ScrnFrm);
  end
  else
  begin
   Application.CreateForm(TScrnFrm, ScrnFrm);
  end;
  Application.Run;
end.


syntax highlighted by Code2HTML, v. 0.9.1

Прикручиваем SDL к Visual Studio 2008

Идем на http://www.libsdl.org/ , в разделе Download скачиваем библиотеку разработки к Visual Studio 2005 Service Pack 1. На момент написания заметки на сайте был архив с SDL-1.2.14 (SDL-devel-1.2.14-VC8.zip).

Распакуйте архив со всем содержимым в каталог Libs на диске С (например, С:\Libs\SDL-1.2.14).

Создадим переменную среды пользователя. Нажимаем клавиши WIN + R откроется диалог «Выполнить». Далее набираем cmd и жмем Enter. После этого откроется командная строка Windows.  В данной строке набираем:
Setx SDL_LIB C:\Libs\SDL-1.2.14  

Создаем новый проект File > New > Project > Win32>Win32 Console Application. Далее выбираем в Win32 Application Wizard (Empty Project). Добавляем С++ файл в проект (например, main.cpp).
В Tools > Options > Projects and Solutions > VC++ Directories

Выбираем в списке «Show directories for»: Include Files добавляем $(SDL_LIB)\include, для Library Files $(SDL_LIB)\lib
Теперь нужно настроить свойства проекта. Нажимаем Project > “Название вашего проекта” Properties…, Configuration Properties > Linker > Input>Additional Dependencies добавить SDL.lib SDLmain.lib.

/**
  * main.cpp
 **/

#include <stdio.h>
#include "SDL.h"

//Данные директивы добавлены из-за вывода ошибки линковщика
//SDLmain.lib (SDL_win32_main.obj) : error LNK2019: unresolved external
//symbol _SDL_main referenced in function _main

#ifdef _WIN32
#undef main
#endif

int main() {
   
      printf("Initializing SDL.\n");
   
    if((SDL_Init(SDL_INIT_VIDEO|SDL_INIT_AUDIO)==-1)) {
        printf("Could not initialize SDL: %s.\n", SDL_GetError());
        exit(-1);
    }

    printf("SDL initialized.\n");

    printf("Quiting SDL.\n");
   
    SDL_Quit();
   
    printf("Quiting....\n");

      getchar();

    return 0;
}

Комментарии, дополнения, исправления приветствуются
Примечание: Решение вывода ошибки линковщика взято с ресурса http://stackoverflow.com/

Медленно открываются файлы Excel

a) Недавно столкнулся с проблемой медленного открытия файлов Excel. После мониторинга процесса запуска Excel файла при помощи Process Monitor, выяснилось, что камнем преткновения является надстройка (PDFMaker) для Microsoft Office 2007, которая встраивается в офис после установки Adobe Acrobat 6 Professional.

Решение можно почитать на сайте Microsoft:
http://support.microsoft.com/kb/307410/ru

b) Дополнение к посту "Медленно открываются файлы Excel"

Краткие факты о проблеме следующие:

1) Данная проблема недавно проявила себя на компьютере пользователя с установленной системой Windows XP Pro SP3 + Microsoft Office 2007. 
2) Файлы Excel открывались медленно под доменной учетной записью пользователя, а под локальной запись администратора те же самые файлы Excel открывались нормально.
3) Форматирование любого открытого файла Excel приводило к зависанию всего документа на некоторое время.

Проблема оказалась в общем (имеется в виду общий доступ по сети) принтере, который был физически подключен к другому компьютеру, и настроен под учетной записью пользователя на компьютере, где проявлялась проблема с зависанием Excel. Когда  Excel запускается он опрашивает все принтера подключенные к системе и если один из них, по какой-то причине, не доступен, то Excel "замораживается", ожидая какое-то время отклика принтера, отсюда и медлительность работы Excel.

Если вы столкнулись с такой бедой, то первым делом проверьте доступны ли общие принтера по сети подключенные к системе. Проверить это можно попробовав открыть свойства каждого принтера и проверить пробную печать. Или самый простой вариант удалить все установленные принтеры под учетной записью пользователя или все установленные принтеры по всей системе. После этого попробуйте открыть Excel документы.