«Я просто оставлю это здесь».

Есть какой-то загадочный формат документов Microsoft Word «документ с включенными макросами». Чудо сие имеет расширение docm и ничем не открывается. Из того, что есть у меня, конечно, а у меня нет самого последнего офиса. Самое интересное, что оно еще ничем не конвертируется. Хотя конвертировать его очень просто. Достаточно переименовать расширение из docm в docx. А docx уже и открывается и конвертируется.

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

Вероятно, для вас не секрет, что большая часть межофисного документооборота происходит посредством старой доброй почты. Как передать файл контрагенту? Конечно, послать по email! Только вот загадочные админы любят ставить ограничения на размер вложения. На этот случай есть исконно корпоративные ящики на рамблере и мэйле. И никого не смущает поражающая воображение безопасность такой транзакции. Более того, никого не смущают адреса вида nikolenka11111. Нормальный ящик для гендира, чо. Как современный игровой ноутбук водителю и древний пентиум инженеру — под автокадовские трехмерки — в порядке вещей.

А еще для вас не является секретом единственно правильный сермяжный способ пересылать картинки. Что нужно сделать с JPEG, чтобы он стал всем понятен, удобен и вообще обрел православность? Правильно, запихать в документ Word. Краски на фотографии сразу становятся ярче, а краешки файла глаже и он быстрее проскальзывает в ящик адресата.

Я сегодня в этом участвовал. На вопрос — а на фига запихивать полсотни фотографий в ворд — я получил ответ — иначе они распечатать не смогут. Возразить было нечего.

Наблюдалась только одна маленькая проблемка: файл весил 130 мегабайт. Конечно, предпочтительнее было ужать четырехметровые картинки правильными инструментами, и только потом вгонять в текстовый редактор, но файл уже был готов. Спасло то, что MS Word имеет подходящую опцию.

Щелкаете правой кнопкой на картинке, выбираете Формат рисунка, потом на вкладке Рисунок нажимаете кнопку Сжать и в появившемся окне можете сжимать ваши гигапиксельные снимки далеких вселенных.

Картинки в Word

Жаль, что нельзя самостоятельно задавать разрешение, но предлагаемые 200 dpi годятся для большинства случаев. Здесь же можно удалить невидимые части рисунков — если вы кадрировали снимок с пьянки, чтобы получить свое лицо, и использовали результат в резюме на должность специалиста по безопасности, эта опция поможет запалиться хотя бы не с первой же секунды.

Что такая фишка есть, я помнил, но сегодня с огромным облегчением нашел опцию Применить ко всем рисункам документа. Два мегабайта этой бурды ушло адресату через минуту. Вместо начальных 130 мегабайт.

Нарыл в загашнике еще одну интересную функцию для Excel. Возникла у меня нужда дать пользователю самому составить простенькую формулу с одной переменной (их, на самом деле строго две, но принцип понятен и на одной). Составить прямо на листе, не после знака «=», а чтобы видно было. Результат вычисления используется в многих других местах.

' strVar - значение переменной  
' strFormula - строка, содержащая саму формулу, место, куда надо
' подставить переменную, обозначено символами VAR

Function sheetFormula(strVar As String, strFormula As Variant) As Variant

' Если формула пустая, не тратим ресурсы
If strFormula = "" Then Exit Function

' Юзер - дурак, уберем крайние пробелы
strFormula = Trim(strFormula)

' Чем возиться с параметрами замены, проще все перевести
' в верхний регистр
strFormula = UCase(strFormula)

' Подставляем переменную простой заменой
strFormula = Replace(strFormula, "VAR", CStr(strVar))

' Мой (ну почему только мой?!) фирменный финт:
' заменяем запятую на точку, позволяя пользователю
' использовать любой из этих знаков
strFormula = Replace(strFormula, ",", ".")

' Вычисляем все с помощью функции Evaluate.
' Конструкция выглядит загадочно, но только так я
' добился от этой функции стабильной работы.
' Что она там себе думает, не знаю.
sheetFormula = Evaluate(CStr(strFormula) + "+0")

End Function

Теперь можно попросить пользователя в одной ячейке вбить значение переменной, в другой — формулу, а результат использовать по всей книге.

Между прочим, кого-то из вас поджидает вакансия в Проф-Медиа Business Solutions. Кого?

Также читайте всю серию постов по VBA.

Посмотрим, как делать собственные функции в дополнение к встроенным в Excel.

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

Читать запись полностью »

Продолжим разбирать простенькие примеры скриптов на VBA для Excel. Первая часть.

Иногда возникает надобность добавить одно число к куче разных ячеек, или домножить их на какой-то коэффициент.

Читать запись полностью »

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

Итак, в приложения Microsoft Office встроен язык Visual Basic for Application (VBA) - близнец обычного Visual Basic (по крайней мере до 6 версии VB включительно). Его можно и нужно использовать для автоматизации рутинных операций. Все нижеизложенное относится к Excel 2003.

Читать запись полностью »

Кто-нибудь из читателей разбирается в исправлениях при совместной работе в Word? Вот здесь мы зашли в тупик.

Что делать, если вам нужно найти на листе Excel звездочку или знак вопроса? Проблема в том, что они являются подстановочными знаками и выражение в строке Найти «*123?» означает «любое количество любых символов, потом 123, потом один какой-нибудь символ». Чтобы Excel не считал эти символы подстановочными, а искал как есть, их надо экранировать. У Microsoft свой собственный путь, поэтому экранируются они с помощью тильды, то есть выражение «~?» означает знак вопроса сам по себе.

У Microsoft не один путь. Возьмите Word. Здесь обработка подстановочных знаков по умолчанию отключена, включить ее можно, нажав Больше и отметив галку Подстановочные знаки в диалоге поиска. А если вам нужно смешивать подстановку и знаки вопроса, то экранируются они обратным слешем, вот так: «\?». Предатели писали Word.

У Microsoft не один путь, а целый лабиринт (они патентуют результаты работы генератора случайных чисел, что ли?). В Visio наоборот, чтобы символ стал знаком подстановки, его надо экранировать так: «^?». Впрочем, они могут отмазаться тем, что не успели Visio переписать, продукт-то изначально не их.

Боюсь смотреть другие программы.

Вы помните, что стили в MS Word (как минимум 2003) можно назначать выделенному тексту с помощью горячих клавиш? В боковой панели Стили и форматирование (Формат > Стили и форматирование...) выберите в контекстном меню стиля пункт Изменить..., в появившемся окне Формат > Сочетание клавиш... Разгуляева фантазии тут не выйдет: многие сочетания уже заняты, а собирать конструкции типа Ctrl + Alt + Shift (это массаж для пальцев, не обращайте внимания) Word не позволяет.

И вы помните, что прежде, чем форматировать что-то напрямую, без применения стилей, надо шесть раз подумать, потом выйти на улицу и обежать вокруг фонарного столба, выкрикивая мантру «да, это действительно нужно»? Иначе щастя не будет.

Вспомнилось, что были у меня запутки с округлением в Excel поначалу. Так что для только открывших двери в мир ячеек и формул это напоминание может быть полезным. Не путайте округление с отображением. Если посмотреть на вкладку Число окна Формат ячеек, можно заметить, что для числового формата задается произвольное количество десятичных знаков. Если установлен ноль, то отображаться в ячейке будет число, округленное до целых, какая бы дробь там на самом деле не была. Но только отображаться! В дальнейшие расчеты пойдет число в первозданном виде, дробь - так дробь. И не удивляйтесь потом, если где-нибудь окажется, что 459 не равно 459. Потому что на самом деле это 458,93 и 459,2.

Отсюда вывод: всегда, когда речь идет о целых числах (или числах с заданной точностью) используйте округление. Это формула ОКРУГЛ в русской версии Excel. Она имеет два аргумента: само число, которое требуется округлить и число разрядов. С числом разрядов просто: 2 - до сотых, 1 - до десятых, 0 - до целых, -1 - до десятков и так далее в обе стороны. Единственное исключение из этого правила - промежуточные итоги, которые будут использоваться в дальнейших расчетах. Если округлять каждый результат в цепочке вычислений, может накопиться заметная ошибка, так что округляйте с умом.

Настроить внешний вид Outlook или быстро выполнить какое-нибудь действие из арсенала его возможностей можно и спомощью командной строки. Переведенная на русский таблица поможет вам в этом. Правда, для себя я ничего кроме Outlook.exe /c ipm.note /m emailname для создания письма с заполненным полем «Кому» так и не придумал. Видимо, оттого, что почти не пользуюсь этой мощной софтиной.

Маленький такой трюк для читателей, которым вместо чтения приходится набивать вручную таблицы Excel. Предположим есть таблица такого вида:

060615.GIF

множество строк которой надо заполнить собственными пальцами (посредством оных, я имею в виду).
Облом номер раз: подитог посередине, он вычисляется сам, и нам прыгать через него надо. Решение: выделяем все ячейки на листе (сойдет Ctrl + A), идем в Формат ячеек, и на вкладке Защита отключаем пункт Защищаемая ячейка. Затем выделяем столбцы, содержащие формулы (и все, что менять не надо, но под ноги лезет), и там же включаем пункт Защищаемая ячейка обратно. Теперь Сервис > Защита > Защитить лист… Смотрим, чтобы выделение незаблокированных ячеек было разрешено, а заблокированных запрещено и нажимаем ОК. Теперь через заблокированные ячейки можно перепрыгивать, если перемещаться, нажимая на курсорные клавиши.

Облом номер два: неудобно как-то. Особенно к началу следующей строки возвращаться. Но если мы защиту листа не ставили или - внимание! - разрешили выделение заблокированных ячеек, то очень удобным становиться перемещение с помощью клавиши Tab. Выделяем левую верхнюю ячейку из тех, что надо заполнять, и к следующей ячейке переходим, нажимая Tab, а к началу следующей строки - Enter. В случае использования защиты, заблокированные ячейки по-прежнему перепрыгиваются.

Все сказанное относится к Excel 2003. В предыдущих версиях в общих чертах тоже должно работать.

Ексельная функция для отображения дня недели. ДЕНЬНЕД выдает номер дня недели, а ВЫБОР превращает номер в значение из списка. А1 - ваша ссылка на ячейку, содержащую дату.

=ВЫБОР(ДЕНЬНЕД(А1;2);"понедельник";"вторник";"среда";"четверг"; "пятница";"суббота";"воскресенье")

По тому же принципу можно задать имя месяца.

Впрочем, если вам не нужно строковое представление дня недели для каких-либо операций (мне нужно для сортировки, чтобы собрать в кучку дни недели), а требуется только показать слово «понедельник» на экране, то все проще. В контекстном меню ячейки выберите Формат ячеек, вкладку Число, в левом списке (все форматы) и добавьте строку «ДДДД» в нужное место в поле ввода Тип.

Случается, что нужно получить текст в виде растра. У меня случается, по крайней мере. Что для этого использовать? Ничего удобнее - для эпизодической работы - MS Excel я так и не нашел. Из него вы можете копировать ячейки и вставлять их в программу, которая согласна принимать из буфера обмена растры. Если согласна, но не принимает, так как считает (и правильно, вообще-то), что вы вставляете таблицу или текст, то можно воспользоваться промежуточным звеном, тем же Paint, например.

Теперь дьявольщина деталей. Не забывайте отключать сетку, если требуется. В Excel Сервис > Параметры... > вкладка Вид, снять галочку с пункта сетка. Если в операционной системе используется сглаживание шрифтов ClearType, то растр получится размытым. Чтобы отключить сглаживание, идите в Свойства: Экран, вкладка Оформление, щелкните по кнопке Эффекты... и в появившемся окне выберите метод сглаживания шрифтов Обычный. Готовить форматированные тексты удобнее в Word, а потом копировать в Excel, иначе вам легко будет изменить оформление целой ячейки, но отдельного слова - замучаетесь.

Для екселянтов. Пользователей MS Excel, конечно, а вы что подумали? «Экий вы екселянт, сударь!»

Читать запись полностью »