Как стать автором
Обновить

Комментарии 17

Извините, но я в свои 22 года не знаю даже как факсом пользоваться… собенно когда идешь с лекции на тему диджитализации, заходишь в приемную к врачу, а тебе там предлагают отправить твою справку о больничном напрямую работодателю по факсу и спрашивают номер. E-mail пока не освоили.


Ну так вы сами никогда не пользовались факсом, и, естественно, не в курсе, что отправить справку по факсу много удобнее, чем по электронной почте.
Особенно тогда, когда, когда этих справок сотни.
(факс погубило низкое качество отпечатков и необходимость использования специальной бумаги, но никак не неудобство использования :)

Ну и по непосредственной теме — Excel жил, Excel жив, Excel будет жить :)

что отправить справку по факсу много удобнее, чем по электронной почте.

Чем же это? Если что - я факсом пользоваться умею, и пользовался, когда не было альтернатив.

Ибо по почте так: создал нужный мыл, нажал приложить данные со сканера, сканер отсканировал, нажал кнопку "отправить". Это если с компа. Но так не действуют там, где это поставлено на поток, ибо справки в текущей век должны быть электронные - даже сканировать ничего не надо. Но даже если и надо - делают так называемый батч-сканинг - положил справку в сканер, нажал сканировать прямо на сканере - он отсканировал, на моноблоке/планшете у сканера появилась миниатюра и запрос мыла куда отправить - усе.

Даже дозваниваться никуда не надо. Не надо ждать, операция занимает гораздо меньше времени. Причём там, где налажен батч, даже не сканеры стоят, а сделан цифровой фотоаппарат (коробка + призма + цифровая камера) - скорость сканирования одной страницы - доля секунды. На такой штуке отправить справку - дело 2 секунд, из которых 1.5 вы будуте на кнопку "емейл" в уи анкеты клиента тыкать. Сравните с факсом.

А мыл при регистрации вас должны спрашивать, чтобы потом дурацких вопросов не задавать. Типа куда отсылать результаты?

Чем же это?


Вставить лист в факс, набрать номер (вызвать из памяти)
Нажать кнопку.
(в нашей реальности — еще и согласовывать действия по телефону, но это было необязательно :)

создал нужный мыл


Реал — человек в трубку: какой у вас е-майл? Что? Электронная почта у вас какая? Ну эта, та где собака… (пытается принять на слух адрес типа olga_michalivna_dgornokyi@outlook.com, трижды ошибается и просит передать по буквам, в итоге все равно ошибается в слове «аутлук» :)

приложить данные со сканера, сканер отсканировал,


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

Даже дозваниваться никуда не надо.


А как же классическое: «вы получили мой е-мэйл? Проверьте почту!»

цифровой фотоаппарат


В реале цифровой фотоаппарат=камера смартфона.
Кто сканировал смартфоном — знает: тени на бумаге от самого смарта, смазывание, лишние детали по краям и проч. прелести. Не, сканировать сканером однозначно лучше.

А мыл при регистрации вас должны спрашивать, чтобы потом дурацких вопросов не задавать. Типа куда отсылать результаты?


Приходит в регистратуру бабушка — «какой-такой е-мэйл, доченька?»
Приходит в регистратуру молоденькая девушка — «какой-такой е-мэйл, подруга?» :)

Реал — человек в трубку: какой у вас е-майл? Что? Электронная почта у вас какая? Ну эта, та где собака…

Я про это написал, что мыл, и надо ли, надо спрашивать при регистрации.

обычно экономят

Это никак не связано с постановкой вопроса о том, что факс лучше емейла, не подменяйте.

А как же классическое

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

В реале цифровой фотоаппарат=камера смартфона.

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

Приходит в регистратуру бабушка — «какой-такой е-мэйл, доченька?»

А конечно факс у бабушки есть, ага? Опять же, никак не связано со скоростью.

Вы написали огромный коммент, практически не касающийся сути вопроса, на который я отвечал)

Ещё раз - в 21 веке отправить справку емейлом куда быстрее, чем факсом. И это - факт. Но да, если ровнятся на Зимбабве, то проще вообще на песке рисовать и запекать, ага.

Я про это написал, что мыл, и надо ли, надо спрашивать при регистрации.


Про мыл — это ниже.

Это никак не связано с постановкой вопроса о том, что факс лучше емейла, не подменяйте.


Да как же не связано, если в каждом факсе протяжной сканер уже «из коробки» стоит? :)

Зачем это делать? По емейлу ушло и все, дальше, если человек что-то не получит — он законтачит сам и вот там можно и поговорить. И опять же это никак не про то, что факс лучше мыла.


Я тот человек, который ежедневно получает электропочту от пары сотен человек, причем 99% из них еще нет 21 года. Добиться от них указывать тему сообщения — подвиг, поэтому приходится сортировать входящую почту по адресам отправителей, которые они меняют чаще (бо забыли), чем раньше дамы меняли перчатки.
А оставшийся 1% постоянно задает один и тот же вопрос — «что этот проклятый гугл от меня хочет?» (т.е. получить код подтверждения на другую почту или ввести повторно (МС Аутлук) пароль, котрый давно забыт, бо нигде не записан).

то ещё раз — делают батчинг с нормальным фотосканером,


Чего я еще ни разу не встречал ни в одной больнице или поликлинике (в трех разных странах)

но даже если смартом — с текущими их камерами получается абсолютно нормально


Либо с пятой попытки, либо ненормально (напомню, речь идет о текстовых документах, где даже клинопись врача должна быть разборчива)

И опять же это никак не связано с тем, что быстрее, правда?


Быстрее? Факс — вставил, нажал- все. С планшетным сканером — медленнее, с смартом — еще медленнее. А с э-почтой — вообще вагон проблем, народ в телегу куда резче фотки кидает, хотя и там есть момент выбора :)

А конечно факс у бабушки есть, ага?


Ну-ну. А кто в пункте, на который был дан этот ответ писал про регистрацию мыла? «А мыл при регистрации вас должны спрашивать» — Вы свои аргументы помните?

Вы написали огромный коммент, практически не касающийся сути вопроса, на который я отвечал)


А вы ответили, почти полностью проигнорировав возражения оппонента по сути вашего вопроса.

если ровнятся на Зимбабве


«А он оказывается до сих пор активно используется в немецких страховых фирмах…» (с)

Вот я немцев понимаю. А причем тут Зимбабве — нет :)

Хорошо придумано!

Однако, в начале Вы пишете:

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

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

И ещё: если вместо ActiveCell.FormulaR1C1 использовать ActiveCell.FormulaLocal то, по идее, формулы можно записывать в простом формате СУММ(B1:B10)вместо SUM(RC[1]:R[9]C[1]).

А что делать если после всего этого надо закинуть ещё десяток файлов (ну забыли их отправить/положить в папку), все заново надо обновлять или есть механизм который ищет новые файлы для обработки?

обновитель

обновлятор же!

Или мигратор, как говорят dbшники

Range("A1").Select
ActiveCell.FormulaR1C1 = "=SUM(RC[1]:R[9]C[1])"


Видите, как сильно отличается формат написания формулы?

Никак не отличается, потому что —

Range("A1").Formula = "=SUM(B1:B10)"
 Set fileToUpdate = Workbooks.Open("C:\VBA\File To Update.xlsm")


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

Во-вторых, рано или поздно ваш макрос будет открывать файл, уже открытый человеком, и получится неопределённое поведение. Excel что-нибудь сделает, однако не так, как вы хотели.

В-третьих, рано или поздно ваш макрос прикажет Экселю открыть файл и перейдёт на следующую команду — но Эксель не успеет открыть желанного файла и рухнет.

Открывать файлы в Экселе удобнее через отдельную функцию, которая сделает нужные проверки. В первую очередь она проверит, что файл закрыт и его вообще надо открывать. Во вторую очередь она убедится, что файл надо будет потом закрыть. В третью очередь, дав команду на открытие файла, функция убедится, что файл действительно открылся, а не ждёт отклика из локальной сети.

Кстати, та же функция может заодно проверять и обманку: все файлы лежат в каталоге Sources, а файлы за 2021 год лежат в каталоге Sources/2021, а файлы за июль нынешнего года лежат в каталоге Sources/July. Это обычное дело для живых людей.

Советую еще не перезаписывать исходный файл, а создавать копию с суффиксом номера шаблона. Человеческий фактор никто не отменял и в одном из файлов могли накосячить в прошлом и лучше иметь копию для дальнейших разбирательств.

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

Я понимаю, что все это идет от макрорекордера, который так пишет. Но к нему надо чутка приложить голову.
Вместо:
Set fileToUpdate = Workbooks.Open("C:\VBA\File To Update.xlsm")
fileToUpdate.Activate 
fileToUpdate.Sheets(“Old_Sheet”).Activate
Range("A1").Select
ActiveCell.FormulaR1C1 = "=SUM(RC[1]:R[9]C[1])"

Всего две строки:
Set fileToUpdate = Workbooks.Open("C:\VBA\File To Update.xlsm")
fileToUpdate.Sheets(“Old_Sheet”).Range("A1").FormulaR1C1 = "=SUM(RC[1]:R[9]C[1])"


Вообще обращение к активным книгам, листам, ячейкам, Selection и т.п. не только медленный, но и скользкий путь. Юзер во время выполнения макроса ткнет мышой не туда, и вуаля — у Вас уже другой активный лист/книга/ячейка. Данные читаются/пишутся не оттуда и не туда.
А теперь обновим все формулы в документе, чтобы быть уверенными что при следующем открытии файла пользователь увидит уже обновленные значения новых формул:
ActiveWorkbook.RefreshAll
Метод RefreshAll не формулы обновляет, а данные в сводных таблицах. Впрочем использован верно — после изменения сводных таблиц.
Нужно полностью удалить все в заданном диапазоне?

Sheets(“Old_Sheet”).Range("B1:B100").ClearContents	‘Удаление значений
Sheets(“Old_Sheet”).Range("B1:B100").ClearFormats	‘Удаление форматирования
Почему не
Sheets(“Old_Sheet”).Range("B1:B100").Clear
? Это чтобы хватило на вторую статью про ускорение?

Заголовок спойлера
Что использовать в теге <source lang=, чтобы VBA корректно подсвечивался?

Полностью согласен. Добавлю еще свои 5 копеек.


При изменении множества ячеек в каждой книге очень ускорят процесс следующие команды:


  1. Отключаем «прорисовку» всего происходящего на экране (данные будут меняться, но Excel не будет тратить ресурсы, чтобы показать изменения пользователю): Application.ScreenUpdating = False


  1. Выключаем автоматический пересчет формул на листе (представьте, что вы меняете значение 1000 ячеек, которые задействованы в формулах. При каждом изменении Excel будет пересчитывать формулу, ссылающаяся на данную ячейку. Гораздо продуктивнее сделать это в конце, разом). Отключаем пересчет формул перед обновлением ячеек: Application.Calculation = xlCalculateManual


После выполнения кода возвращаем пересчет формул и прорисовку обратно:


Application.Calculation = xlAutomatic

Application.ScreenUpdating = True

Хех. А я сетую,что ФСС целых полчаса обрабатывает мой запрос из 1с на больничный:) а тут георгические воены обновлят эксэля. А вы ВБА программист или все же разработчик?

Если в ячейке уже есть формула, то можно сделать так: активируем ячейку, включаем запись, нажимаем F2, потом Enter, останавливаем запись.

никак кроме как через запись макроса в синтаксис VBA не переведешь

Ну почему же? Еще можно так f1=Range("A1").Formula, потом скопировать значение f1 из Watches.

Worksheets("New_Sheet").Columns("C:C").Select

Selection.NumberFormat = "#,##0.00 $"


Вторая C в "С:С" лишняя, и Select/Selection тоже, сокращаем до Worksheets("New_Sheet").Columns("C").NumberFormat = "#,##0.00 $"

Пробелы в "New_Sheet " кое-где лишние.

Еще можно все файлы обрабатывать в невидимом объекте Excel.Application.

Уффф.. интересно написано, с точно подмеченной выгодой ;) подписалась, почитаем вас ещё. А Excel - восхищения нет предела, моя прелесть, может быть еще полезнее😁

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации