objselection.font.name изменяется на калибри
У меня есть небольшая проблема, которая вызывает у меня головную боль. Я создал скрипт создания подписи VBScript для извлечения информации о пользователях из AD и применения ее в качестве подписи для всех наших пользователей. Это работает прекрасно, и я очень доволен этим. За исключением одной проблемы. Я искал и - хотя я нашел кого-то еще с той же проблемой - я не смог найти никакого решения.
Сначала немного истории о скрипте:
Сценарий настроен на использование следующего объекта для настройки подписи в соответствии со статьей Microsoft здесь.
Word.Application.EmailOptions.EmailSignature.EmailSignatureEntries
Затем на протяжении всего сценария мне приходится несколько раз менять шрифт. Для этого я использую такие строки:
objSelection.Font.Name = "Times New Roman"
Это прекрасно работает для меня и большинства наших пользователей. Однако один из моих техников ранее изменил свой шрифт по умолчанию в Word на Times New Roman. Когда я запускаю сценарий для него, линии, которые должны быть TNR, вместо этого отображаются как Calibri. Поскольку мы работаем с Office 2007, исходный шрифт по умолчанию в Word - это Calibri. Я проверил изменение шрифта по умолчанию на своем ПК и другом ПК, и мне удавалось дублировать проблему оба раза.
Технический плакат, на который я ссылался ранее, отметил, что в оригинальном документе все шрифты были правильными. Только когда "EmailSignatureEntries" сохранил его в RTF и HTML для использования в качестве подписи, шрифты перепутались.
Я действительно озадачен этим. Любая помощь будет оценена!:)
1 ответ
Я наткнулся на ту же проблему при создании новой подписи для моей компании с автоматическим заполнением. Из того, что я нашел в Интернете и что также наводит на мысль, проблема заключается в том, что подпись выполняется тем же шрифтом, что и Word в файле Normal.dot(m).
Например; Моя компания хотела Arial 10 в качестве шрифта по умолчанию в Word, Excel и Outlook. Поэтому, конечно, я изменил все необходимые файлы и создал для этого объект групповой политики. Все прошло нормально, и Word и т. Д. Имели Arial в качестве шрифта по умолчанию.
Теперь, когда я запустил свой сценарий signature.vbs, в котором также указывалось, что шрифт должен быть Arial, результатом, как ни странно, всегда будет Calibri. Я немного поиграл с этим и заметил, что могу использовать любой другой шрифт, кроме Arial, и он будет работать, кроме Arial.
Это сводило меня с ума в течение 2 дней, а затем меня поразило; Что делать, если я помещаю временный normal.dot(m) (с Calibri в качестве шрифта по умолчанию) в профиле пользователя, ТО затем создайте подпись с VBS, а затем поместите надлежащий Normal.dot (m) в профиль?
Оказывается, это и помогло. Поэтому я вынул GPO для размещения файлов для Normal.dot (m) и интегрировал временную копию, запустил vbs, final copy, в свой пакетный скрипт, который также запустил signature.vbs.
Вот мой код для пакета, который вам, вероятно, придется адаптировать к вашим собственным потребностям, но он дает основную идею. Я добавил английский перевод замечаний, чтобы вам не пришлось изучать нидерландский язык:)
Надеюсь, что это поможет вам и всем, кто еще ищет "решение".
@echo off
REM Verwijder alle default word templates in het userprofile (niet meer via GPO)
REM Remove all default Word templates in the userprofile (no longer through GPO)
DEL /F /Q %userprofile%\AppData\Roaming\Microsoft\Sjablonen\Normal.dotm
DEL /F /Q %userprofile%\AppData\Roaming\Microsoft\Templates\Normal.dotm
DEL /F /Q %userprofile%\AppData\Roaming\Microsoft\Sjablonen\NormalEmail.dotm
DEL /F /Q %userprofile%\AppData\Roaming\Microsoft\Templates\NormalEmail.dotm
REM Check of het Handtekeningscript al gelopen heeft, zoja ga over tot plaatsen juiste normal.dotm
REM Check if the signaturescript already ran, if so copy the proper normal.dotm
IF EXIST %homeshare%\pvfsig.txt goto copynormal
REM Plaats een tijdelijke Normal.dotm ivm een conversie issue als je default Arial hebt (wordt Calibri)
REM Copy a temporary Normal.dotm in the profile so the conversion problem with the Default font won't occur.
COPY /Y /Z \\pvf\netlogon\Scripts\huisstijl\normal_met_calibri\Normal.dotm %userprofile%\AppData\Roaming\Microsoft\Sjablonen\Normal.dotm
COPY /Y /Z \\pvf\netlogon\Scripts\huisstijl\normal_met_calibri\Normal.dotm %userprofile%\AppData\Roaming\Microsoft\Templates\Normal.dotm
COPY /Y /Z \\pvf\netlogon\Scripts\huisstijl\normal_met_calibri\NormalEmail.dotm %userprofile%\AppData\Roaming\Microsoft\Sjablonen\NormalEmail.dotm
COPY /Y /Z \\pvf\netlogon\Scripts\huisstijl\normal_met_calibri\NormalEmail.dotm %userprofile%\AppData\Roaming\Microsoft\Templates\NormalEmail.dotm
REM Start Handtekening VBS script om de handtekening te genereren
REM Start signature VBS script to generate the signature
cscript \\pvf\netlogon\scripts\huisstijl\outlooksig_new.vbs
REM Verwijder tijdelijke Normal.dotm bestanden
REM Remove the temporary Normal.dotm files
DEL /F /Q %userprofile%\AppData\Roaming\Microsoft\Sjablonen\Normal.dotm
DEL /F /Q %userprofile%\AppData\Roaming\Microsoft\Templates\Normal.dotm
DEL /F /Q %userprofile%\AppData\Roaming\Microsoft\Sjablonen\NormalEmail.dotm
DEL /F /Q %userprofile%\AppData\Roaming\Microsoft\Templates\NormalEmail.dotm
REM Creeer een check bestand op de Homedirectory v/d gebruiker
REM Create a checkfile in the users homedirectory
echo pvf standaard handtekening is aangemaakt > %homeshare%\pvfsig.txt
REM Kopieeren van juiste normal.dotm bestanden (met Arial)
REM Copy the proper normal.dotm files into place
:copynormal
COPY /Y /Z \\pvf\netlogon\Scripts\huisstijl\normal_pvf_huisstijl\Normal.dotm %userprofile%\AppData\Roaming\Microsoft\Sjablonen\Normal.dotm
COPY /Y /Z \\pvf\netlogon\Scripts\huisstijl\normal_pvf_huisstijl\Normal.dotm %userprofile%\AppData\Roaming\Microsoft\Templates\Normal.dotm
COPY /Y /Z \\pvf\netlogon\Scripts\huisstijl\normal_pvf_huisstijl\NormalEmail.dotm %userprofile%\AppData\Roaming\Microsoft\Sjablonen\NormalEmail.dotm
COPY /Y /Z \\pvf\netlogon\Scripts\huisstijl\normal_pvf_huisstijl\NormalEmail.dotm %userprofile%\AppData\Roaming\Microsoft\Templates\NormalEmail.dotm
:end
EXIT