Надстройка для MS Excel

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

Надстройка для MS Excel Microsoft Excel, Надстройка, Полезное, Длиннопост

Исходный код проекта и инструкции по установке и использованию опубликованы на GitHub под лицензией MIT (неограниченное право на использование, копирование, изменение).


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

Ниже приведу краткое описание некоторых функций.

Конвертация чисел, форматированных как текст


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


Ниже пример преобразования чисел при помощи надстройки. Столбец B для примера заполнен формулой "=A2+1", которая демонстрирует, является ли значение слева числом:

Надстройка для MS Excel Microsoft Excel, Надстройка, Полезное, Длиннопост

Переключение регистра текста


В MS Word есть удобная функция, доступная по Shift+F3, которая переключает регистр выделенного текста (в последовательности "Sentence case" -> "lowercase" -> "UPPERCASE"). Иногда такой функции не хватает и в Excel, но надстройка восполняет этот пробел:

Надстройка для MS Excel Microsoft Excel, Надстройка, Полезное, Длиннопост

Очистка текста от пробельных символов


Позволяет очистить текст от пробелов в начале и конце значения, а также от повторяющихся пробелов и переносов строки в середине текста:

Надстройка для MS Excel Microsoft Excel, Надстройка, Полезное, Длиннопост

Интерактивный поиск ячеек, в которых произошла ошибка вычисления


Показывает список всех ячеек с ошибкой (например, "#Н/Д"), и позволяет быстро перемещаться к выбранной ячейке:

Надстройка для MS Excel Microsoft Excel, Надстройка, Полезное, Длиннопост

И другие функции:


- Подсветка дублей (разными цветами группы одинаковых значений)

- «Размерживание» объединенных ячеек с их заполнением

- Снятие пароля с защищённой книги и листов

- Экспорт таблицы в markdown

- Проверка значений в выделенном диапазоне ячеек (числа, даты, корректный ИНН ЮЛ/ФЛ и т.д.)


Также есть функции по работе с XML, не относящиеся напрямую к Excel, но в которых иногда возникает потребность, а инструмента, который бы свободно распространялся и вызывал доверие, у меня сходу найти не получилось:


- Сформировать пример XML файла на основе XSD-схемы

- Проверить XML по XSD-схеме


Установка надстройки


Для автоматической сборки установочных файлов настроена сборка в Azure.

Выберите последнюю по времени успешную сборку пайплайна NavfertyExcelAddIn - Publish и скачайте опубликованные файлы:

Надстройка для MS Excel Microsoft Excel, Надстройка, Полезное, Длиннопост

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


Для установки надстройки нужно запустить файл .vsto. Разумеется, установка возможно только при наличии установленного MS Excel =)


Если всё сделано правильно, то Вы увидите новую вкладку при следующем запуске Excel:

Надстройка для MS Excel Microsoft Excel, Надстройка, Полезное, Длиннопост

Если Вы .NET-разработчик и хотите присоединиться к работе над проектом, пишите мне на почту (указана в профиле гитхаба), заводите issue и пулл-реквесты.

Если Вы только изучаете платформу .NET, и хотите поучаствовать - не стесняйтесь! Читайте исходный код, задавайте вопросы, если что-то непонятно - буду рад объяснить и поделиться знаниями =)

Еще раз ссылка на проект (там же инструкции по использованию и установке):

https://github.com/navferty/NavfertyExcelAddIn

MS, Libreoffice & Google docs

719 постов15K подписчика

Добавить пост

Правила сообщества

1. Не нарушать правила Пикабу

2. Публиковать посты соответствующие тематике сообщества

3. Проявлять уважение к пользователям

4. Не допускается публикация постов с вопросами, ответы на которые легко найти с помощью любого поискового сайта.

По интересующим вопросам можно обратиться к автору поста схожей тематики, либо к пользователям в комментариях


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

Утверждения вроде "пост - отстой", это оскорбление автора и будет наказываться баном.

17
Автор поста оценил этот комментарий

В первом примере 5 долларей превратились в 5 рублей. Большая цена за конвертацию.

раскрыть ветку (1)
13
Автор поста оценил этот комментарий

Да, вот и косяк нашёлся))

10
Автор поста оценил этот комментарий
Поздравляю, вы опубликовали юбилейный сотый пост в сообществе)) продолжайте в том же духе!
раскрыть ветку (1)
8
Автор поста оценил этот комментарий

Спасибо! Буду стараться! =)

2
Автор поста оценил этот комментарий

Я Вас сильно расстрою.

Но числа, превратившиеся в дату с текстом - восстановить сложно и возможно восстановить не всегда, а числовой текст (или длинные числа), превратившиеся в нечто вида 1Е99 - так и вовсе невозможно.

Поэтому, нужно либо сразу выдавать xls/xlsx при экспорте, либо вводить табличные данные (из txt/csv) с указанем разделителей, ограничителей и форматов данных в столбце, либо использовать промежуточный конвертер...

Других надёжных путей, увы, нет.

раскрыть ветку (1)
7
Автор поста оценил этот комментарий

Согласен с тем, что гарантированного преобразования из текста в число не существует. Взять например "1.234" и "1,234". Что из них тыща-двести-тридцать-четыре, а что одна целая 234 сотых? Зависит от локали той машины, где первоначально числа были преобразованы в текст)

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

Тем не менее, работать приходится с тем что есть - и для этого сабж может быть полезным многим пользователям Excel.

показать ответы
Автор поста оценил этот комментарий

Парсинг. Вот это было бы супер!!!

раскрыть ветку (1)
6
Автор поста оценил этот комментарий

Пожалуйста, расскажите подробнее, что Вы хотите парсить, и что должно получаться в итоге?

показать ответы
4
DELETED
Автор поста оценил этот комментарий
Очистка текста от пробельных символов - существует функция =СЖПРОБЕЛЫ()
раскрыть ветку (1)
6
Автор поста оценил этот комментарий

Да, принцип тот же. Разве что небольшой нюанс - если между двумя словами есть перенос строки (который вставляется по alt-enter), но нет пробелов, слова окажутся написаны слитно при применении этой формулы (или TRIM в английской версии)

показать ответы
1
Автор поста оценил этот комментарий
Выделение цветом ячеек по достижению показателей определённых, построение графика по цифрам
раскрыть ветку (1)
5
Автор поста оценил этот комментарий

Условное форматирование из числа штатных функций подходит для первого пункта?

Иллюстрация к комментарию
показать ответы
17
Автор поста оценил этот комментарий

В первом примере 5 долларей превратились в 5 рублей. Большая цена за конвертацию.

раскрыть ветку (1)
3
Автор поста оценил этот комментарий

Issue на исправление бага завёл)


https://github.com/navferty/NavfertyExcelAddIn/issues/29

1
Автор поста оценил этот комментарий
Как интересно рейдеры маскироваться начали. Эксель это то дерьмо которое под видом макроса позволяет трояна на комп засадить. Верно?
раскрыть ветку (1)
3
Автор поста оценил этот комментарий

Действиетельно, офисные приложения - это едва ли не самый распространённый путь заражения компьютерными вирусами. Так как эти приложения содержат встроенный язык программирования VBA и позволяют запускать макросы, достаточно открыть заражённый файл и разрешить выполнение макросов (по умолчанию они требуют подтверждения). Этим часто пользуются злоумышленники - например, на первом листе они вставляют изображение с блюром (смазанным) содержимом, и инструкцией, как разрешить выполнение макросов, чтобы посмотреть содержимое.


Проект, о котором идёт речь - с открытым исходным кодом. Любой может ознакомиться с ним, и даже скачать и скомпилировать у себя на компьютере - для этого потребуется Visual Studio и установленный пакет MS Office. Также я специально настроил автоматизированный процесс сборки на Azure, в ходе которого исходники для компиляции скачиваются напрямую из репозитория. Впрочем, ничто не мешает скомпилировать проект у себя, и пользоваться только им. Ну или если у Вас остались сомнения, не пользоваться вовсе - конечно же скачивать из интернета и запускать программу, которой сам не доверяешь - плохая идея =)

показать ответы
DELETED
Автор поста оценил этот комментарий
"Причём это возможно сделать без пароля." а вот это злой функционал. Пароль как раз и ставят, что бы не снимали))) Хотя, те кто используют либро офис это делать могут.
раскрыть ветку (1)
3
Автор поста оценил этот комментарий

Я Вам больше скажу, снять защиту листа можно, имея лишь zip-архиватор и блокнот. Нужно просто удалить один из xml-элементов в компоненте листа или книги. Это правда касается только OpenXml форматов - xlsx, xlsm

показать ответы
5
Автор поста оценил этот комментарий

Обожемой, да умножьте на 1 те ячейки которые нужно преобразовать в число

раскрыть ветку (1)
3
Автор поста оценил этот комментарий

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

показать ответы
2
Автор поста оценил этот комментарий
Вы святой
раскрыть ветку (1)
2
Автор поста оценил этот комментарий

Спасибо, конечно, но это наверно уже перебор =)))

Вы лучше скажите, получилось ли установить/запустить? Какие функции хотели бы видеть ещё?

показать ответы
6
Автор поста оценил этот комментарий
На первом скриншоте 5 баксов, на втором 5 рублей. Внимание, вопрос. Кто стырил недостающие деньги?
раскрыть ветку (1)
2
Автор поста оценил этот комментарий

Вас опередили))

#comment_169624098


Да, косяк есть, надо исправлять

показать ответы
3
Автор поста оценил этот комментарий
Число прописью в Excel ещё на сайте планета Excel есть об этом статья
раскрыть ветку (1)
2
Автор поста оценил этот комментарий

Если уважаемый @iakki не против, можно добавить такую функцию на основе его разработки)

показать ответы
4
Автор поста оценил этот комментарий
Возможна ли установка на рабочую машину без админских прав (на работе)?
раскрыть ветку (1)
2
Автор поста оценил этот комментарий

К сожалению, не могу уверенно ответить на Ваш вопрос. Во-первых, административные права могу быть необходимы для установки нужных компонентов (например, рантайм .NET Framework, если нужная версия не установлена). Если же компоненты есть, можно попробовать через ClickOnce установщик. Думаю, нужно попробовать, и смотреть что получится)

1
Автор поста оценил этот комментарий

А русский язык есть?

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

Да, делал локализацию. Честно говоря, не уверен, подцепит ли он автоматически локаль пользователя из Windows, но наверно должен =)

Иллюстрация к комментарию
показать ответы
Автор поста оценил этот комментарий

Подскажите, пожалуйста как исправить данную ошибку?

Иллюстрация к комментарию
раскрыть ветку (1)
Автор поста оценил этот комментарий

Здравствуйте, я обновил сертификат, попробуйте снова, пожалуйста. Может потребоваться установить сертификат для локального пользователя, инструкции можете найти на сайте navferty.ru

Автор поста оценил этот комментарий
Спасибо за помощь!
Речь шла об атрибуте size кнопки
раскрыть ветку (1)
Автор поста оценил этот комментарий

Пожалуйста, обращайтесь =)

Автор поста оценил этот комментарий
В XML не силён, подскажите как сделать что бы на вкладке надстройки текст отображался под картинкой?
раскрыть ветку (1)
Автор поста оценил этот комментарий

Если же речь про VSTO надстройку, там структура аналогичная, конкретный пример XML-вёрстки риббона можете найти тут https://github.com/navferty/NavfertyExcelAddIn/blob/master/N...

показать ответы
Автор поста оценил этот комментарий
В XML не силён, подскажите как сделать что бы на вкладке надстройки текст отображался под картинкой?
раскрыть ветку (1)
Автор поста оценил этот комментарий

Вы имеете ввиду надписи к кнопкам, как на скриншоте? Если вы делаете VBA-надстройку, пример разных контролов можете найти в этом репозитории https://github.com/navferty/SampleExcelXlamAddin

Иллюстрация к комментарию
Автор поста оценил этот комментарий
Вот это будет очень круто!
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Что должно происходить с остальными буквами. Оставлять или убирать? Какой из вариантов предпочительнее:


"абвгдек" -> "aбbгдek" (где a,b,e,k латинские)

"абвгдек" -> "abek" (где буквы без соответствия удалены)

"абвгдек" -> "abbgdek" (сначала соответствие по написанию, а если не найдено - по произношению)

показать ответы
Автор поста оценил этот комментарий
Почти) я на самом деле не транскрипцию имел в виду. А именно замену схожих букв. Объясню на примере: есть кладовщики, которые упорно отказываются понимать, что в серийном номере ABH12333KP нет кириллицы. А смежные отделы это давно уяснили, начинаются несостыковки.
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

В принципе можно расширить - добавив на эту кнопку дроп-даун с выбором - транслитерация или замена схожих букв

показать ответы
1
Автор поста оценил этот комментарий

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


Но, судьба распорядилась так, что последние 10 лет я архивных дел мастер. Без меня мой очень близкий родственник бы не справился. И теперь он на пенсии, добби (я) свободен. И путь в эту удивительную IT сферу только начинается. И я найду свой путь, хоть не до конца ещё ясен вектор движения, но определимся. Главное не стоять на месте :)

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Если понадобится помощь или совет по .NET и C#, обращайтесь! Почта есть в профиле на гитхабе)

показать ответы
3
Автор поста оценил этот комментарий
А можно добавить функцию, чтобы эксель в даты ничего не преобразовывал (галочку поставить), а еще исправление неведомой ебанины обратно в число, после того, как эксель преобразовал число или текст в дату. Что то типа декодера лебедева для текста, только для чисел.
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Интересная идея, постараюсь поисследовать этот вопрос

1
Автор поста оценил этот комментарий
От переноса строи спасает включение замены по ctrl+h, а далее, в первую строку нажимаем ctrl+j. И готово
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Да, как вариант решения проблемы! Ctrl-J в окне поиска позволяет вставить перенос строки. Будет мигать маленькая точка внизу, которая фактически является фрагментом курсора. Можно даже перейти в этом окне на другую строку клавишами вправо-влево.


Например, на скриншоте я ввёл


фыв

фывфыв


и курсор стоит в конце второй строки

Иллюстрация к комментарию
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Можно попробовать через "Установку и удаление программ" из панели управления Windows установить, если хватит прав.

Также существует альтернативный механизм создания установщика: #comment_169669594 Но этим я смогу заняться позже, может быть этим вечером будет время)

Автор поста оценил этот комментарий

при установке дает ошибку сертификата.


Имя: NavfertyExcelAddIn

Из: file:///D:/Share/NavfertyExcelAddIn/NavfertyExcelAddIn.vsto

************** Текст исключения **************

System.Security.SecurityException: Настроенные функциональные возможности не будут работать, поскольку сертификат, который использовался для подписи манифеста развертывания для NavfertyExcelAddIn или его расположения, не имеет доверия. Обратитесь к системному администратору за помощью.

в Microsoft.VisualStudio.Tools.Applications.Deployment.ClickOnceAddInTrustEvaluator.VerifyTrustPromptKeyInternal(ClickOnceTrustPromptKeyValue promptKeyValue, DeploymentSignatureInformation signatureInformation, String productName, TrustStatus status)

в Microsoft.VisualStudio.Tools.Applications.Deployment.ClickOnceAddInTrustEvaluator.VerifyTrustUsingPromptKey(Uri manifest, DeploymentSignatureInformation signatureInformation, String productName, TrustStatus status)

в Microsoft.VisualStudio.Tools.Applications.Deployment.ClickOnceAddInDeploymentManager.ProcessSHA2Manifest(ActivationContext context, DeploymentSignatureInformation signatureInformation, PermissionSet permissionsRequested, Uri manifest, ManifestSignatureInformationCollection signatures, AddInInstallationStatus installState, TrustStatus sha256TrustStatus, X509Certificate2 sha256PublisherCert)

в Microsoft.VisualStudio.Tools.Applications.Deployment.ClickOnceAddInDeploymentManager.VerifySecurity(ActivationContext context, Uri manifest, AddInInstallationStatus installState)

в Microsoft.VisualStudio.Tools.Applications.Deployment.ClickOnceAddInDeploymentManager.InstallAddIn()

Ошибкой завершилась сборка со следующим параметром Zone:

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Подскажите, получилось решить проблему?

показать ответы
Автор поста оценил этот комментарий

при установке дает ошибку сертификата.


Имя: NavfertyExcelAddIn

Из: file:///D:/Share/NavfertyExcelAddIn/NavfertyExcelAddIn.vsto

************** Текст исключения **************

System.Security.SecurityException: Настроенные функциональные возможности не будут работать, поскольку сертификат, который использовался для подписи манифеста развертывания для NavfertyExcelAddIn или его расположения, не имеет доверия. Обратитесь к системному администратору за помощью.

в Microsoft.VisualStudio.Tools.Applications.Deployment.ClickOnceAddInTrustEvaluator.VerifyTrustPromptKeyInternal(ClickOnceTrustPromptKeyValue promptKeyValue, DeploymentSignatureInformation signatureInformation, String productName, TrustStatus status)

в Microsoft.VisualStudio.Tools.Applications.Deployment.ClickOnceAddInTrustEvaluator.VerifyTrustUsingPromptKey(Uri manifest, DeploymentSignatureInformation signatureInformation, String productName, TrustStatus status)

в Microsoft.VisualStudio.Tools.Applications.Deployment.ClickOnceAddInDeploymentManager.ProcessSHA2Manifest(ActivationContext context, DeploymentSignatureInformation signatureInformation, PermissionSet permissionsRequested, Uri manifest, ManifestSignatureInformationCollection signatures, AddInInstallationStatus installState, TrustStatus sha256TrustStatus, X509Certificate2 sha256PublisherCert)

в Microsoft.VisualStudio.Tools.Applications.Deployment.ClickOnceAddInDeploymentManager.VerifySecurity(ActivationContext context, Uri manifest, AddInInstallationStatus installState)

в Microsoft.VisualStudio.Tools.Applications.Deployment.ClickOnceAddInDeploymentManager.InstallAddIn()

Ошибкой завершилась сборка со следующим параметром Zone:

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Тут в комментариях #comment_169645618 советовали перенести на флэшку и попробовать установить оттуда. Надо иметь в виду, что в дальнейшем если будете ставить обновления, нужно будет также с флэшки их ставить

2
Автор поста оценил этот комментарий

Есть штатный механизм плагинов к офису через набор dll в которые экспортированы нужные функции, их можно дергать программно. Для этого есть тип проекта для visual studio, можно на .net расширение свое написать, вроде еще можно на нативном c++. Плагин потом регистрируется в офисе и поднимается при старте офисного приложения. Если это .net то конечно нет проблем с x64, но поскольку дергаются наивные функции офиса то наверное при желании можно что-то сильно поломать.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Да, Вы верно описали. Добавлю если кому-то интересны детали, сам проект на платформе VSTO реализован (Visual Studio Tools for Office) - можно погуглить по этим словам

DELETED
Автор поста оценил этот комментарий
А есть возможность установки/снятия защиты сразу на несколько листов (к примеру на форме 2 и более листа и надо все защитить одним паролем)?
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

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

Штатных средств массовой установки пароля на несколько листов сразу не припомню, но если есть такая потребность - можно добавить такую функцию в надстройку =)

показать ответы
Автор поста оценил этот комментарий

А как он конектится к оффису? C x64 процессом нет проблем? Я когда то аддоны писал через COM шимы. http://www.visualstudioextensibility.com/2016/07/11/isolatin...

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

По идее, проблем быть не должно. Код исполняется в CLR, являющейся частью .NET Framework. В dll содержится IL - intermediate language, платформонезависимый код, который компилируется в ходе выполнения JIT-компилятором. Причем CLR процесс хостится самим офисом

Автор поста оценил этот комментарий

я может тупой и не допетрил. Вставил в папку надстроек. А дальше? Дальше все. НЕ могу найти где она . Подскажете?

раскрыть ветку (1)
Автор поста оценил этот комментарий

Скажите, удалось установить? Работает надстройка?

показать ответы
Автор поста оценил этот комментарий

я может тупой и не допетрил. Вставил в папку надстроек. А дальше? Дальше все. НЕ могу найти где она . Подскажете?

раскрыть ветку (1)
Автор поста оценил этот комментарий

Это COM-надстройка, и в отличие от xla/xlam надстроек на основе VBA, её нужно установить. Распакуйте архив в определённую папку и запустите файл .vsto


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

1
Автор поста оценил этот комментарий

У меня автоматом на русском встаёт.

раскрыть ветку (1)
Автор поста оценил этот комментарий

отлично! ура, локализация работает))

2
Автор поста оценил этот комментарий

Я также настоятельно не рекомендую совершать манипуляции с установкой/удалением/обновлением этой надстройки пока запущен Excel. Система при повторных манипуляциях может начать ругаться на то, что вы пытаетесь установить ПО, которое уже установлено. Удалить начисто такое ПО очень сложно (даже полное удаление MS Office не помогает). Я прошёл через это, но так и не нашёл способа быстрого удаления надстройки.

раскрыть ветку (1)
Автор поста оценил этот комментарий

Сам с такими сложностями не сталкивался, но совет дельный, спасибо!

2
Автор поста оценил этот комментарий

Вот если бы ваша надстройка умела создавать связанные выпадающие списки с глубиной вложения более 2х. Вот это была бы бомба. Ведь Ексель умеет только до 2х уровней. Но если у вас появится возможность и желание реализовать... ну, вдруг...

раскрыть ветку (1)
Автор поста оценил этот комментарий

Уточните пожалуйста, речь идёт о такой функциональности?


Взято отсюда https://www.ablebits.com/office-addins-blog/2014/09/30/depen...

Иллюстрация к комментарию
показать ответы
Автор поста оценил этот комментарий
Вы очень правы, так kutools и работает)
раскрыть ветку (1)
1
Автор поста оценил этот комментарий
@navferty как вариант ещё добавить автоматическую замену, в выделенном диапазоне, кириллицы на латиницу (а-a, у-y и т. д. ) очень бы пригодилось.
раскрыть ветку (1)
Автор поста оценил этот комментарий

Даже не представляю себе, нужна ли эта UDF для простых расчетов

раскрыть ветку (1)
Автор поста оценил этот комментарий

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

Еще один вариант - реализовать функцию с циклами или условными переходами, которые на чистых формулах сделать невозможно или очень сложно/громоздко.

Автор поста оценил этот комментарий

Есть ли ограничения для Си шарпа в работе с офисом, по сравнению с нативным ВБА?

раскрыть ветку (1)
Автор поста оценил этот комментарий

С точки зрения пользователя, наиболее существенным ограничением на мой взгляд является невозможность создания User-defined Functions (UDF) средствами VSTO - это можно сделать только с помощью VBA. UDF - это функция, которая объявляется в VBA коде, и может быть вызвана в формуле в ячейке листа: "=MyCustomFunction(42)". VSTO также немного проигрывает по скорости работы с объектной моделью приложения MS Office за счёт дополнительного слоя взаимодействия (Primary Interop Assemblies), в то время как VBA исполняется в том же процессе Excel.exe. Впрочем, есть способы минимизировать этот фактор, правильно обращаясь к объектам на листе. В остальном отличия не очень существенны.

показать ответы
Автор поста оценил этот комментарий

К примеру, интернет магазин. Товары с категории, цены, имя, описание, описание с тэгами. Фото, и URL фото. Минимальные изображения, и большие по клику. Это точно возможно, но как - не знаю.

раскрыть ветку (1)
Автор поста оценил этот комментарий

Если честно, выглядит как самостоятельное решение, с нетривиальной функциональностью. Не думаю, что такая сложная штука будет уместна в надстройке общего назначения.

Что касается самого парсинга сайтов, тема очень глубокая. Если хотите погрузиться, есть много статей например на Хабре, среди них есть весьма полезные. А если Вам нужен парсер конкретного сайта, можете написать мне на почту и обсудим подробнее.

показать ответы
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
Автор поста оценил этот комментарий

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

1
Автор поста оценил этот комментарий

Помнится там все запаковывалось в один файл, он потом прописывался в windows списке программ, можно было сделать uninstall.

Попробуйте в свой Visual Studio solution добавить новый проект типа setup, и он все сделает.

раскрыть ветку (1)
Автор поста оценил этот комментарий

https://docs.microsoft.com/en-us/visualstudio/vsto/deploying...
я правильно понял, Вы этот механизм имели в виду?


еще нагуглил InstallShield, интересный механизм, попробую его добавить

https://stackoverflow.com/questions/28930439/install-manuall...

показать ответы
Автор поста оценил этот комментарий

Получается, эти надстройки из маркетплейса будут работать и в веб-версии офиса?

раскрыть ветку (1)
Автор поста оценил этот комментарий

Да, должны работать

Автор поста оценил этот комментарий
Хорошо, я вам просто пример объясню, а вы попробуйте это реализовать штатными средствами (хотя тут спойлер, это не получится)
Создайте две одинаковые таблицы, обе таблицы отфильтруйте и допустим у вас в первой кардинально поменялись значения и вам надо их вставить во вторую такую же отфильтрованную таблицу. Ексель вам скажет "Данная команда неприменима для несвязных диапазонов". Логика в том, что команда в цикле должна будет копировать каждую отфильтрованную ячейку в выбранный квадрат, независимо от того отфильтрованный он или ещё какой либо. Этакое грубое копирование) Не знаю, понятно ли вам, я объяснять не умею, да и ещё на телефоне в рабочее время вам пытаюсь это всё прикинуть, извините)
раскрыть ветку (1)
Автор поста оценил этот комментарий

В целом идею понял, но нужно думать о том, как обрабатывать случаи, если диапазоны не совпадают (например, выделены диапазоны 5х7 и 4х8 ячеек). Как вариант - обязать выделить строго совпадающие по размерам области, а иначе вовсе не позволять такое действие

показать ответы
Автор поста оценил этот комментарий
Извините, не полный вопрос задал, копирование и вставка в отфильтрованные ячейки, просто была такая необходимость, пришлось скачивать надстройку kutools, а она платная и не очень хорошо работала, но с горем пополам, выполнила свои функции, а тут просто увидел вашу бесплатную надстройку и созрел такой вопрос.
раскрыть ветку (1)
Автор поста оценил этот комментарий

Будет здорово, если Вы опишете подробно логику работы этой функции! Чем подробнее будет описание, тем проще потом будет реализовать, и меньше вероятность недопонимания со стороны разработчика =)

показать ответы
Автор поста оценил этот комментарий
Здравствуйте! А ваша надстройка умеет копировать отфильтрованные ячейки?
раскрыть ветку (1)
Автор поста оценил этот комментарий

Добрый день! Поясните пожалуйста, как нужно их копировать? Насколько я знаю, штатное копирование по Ctrl-C учитывает фильтрацию и копирует только отфильтрованные строки

показать ответы
Автор поста оценил этот комментарий

Вот оно как, думал что это vsto перелицованные и упакованные...

раскрыть ветку (1)
Автор поста оценил этот комментарий

Вообще штука очень любопытная! Правда там Microsoft продвигает парадигму о том, что под отдельную функцию следует создавать отдельную надстройку (и тут микросервисы, да)))

Года полтора назад перенёс туда одну из функций (подсветку дублей) ради эксперимента, в целом подход понравился. Фактически надстройка представляет собой веб-сайт, который открывается в iframe веб-версии офиса в браузере (или в чем-то вроде WebView в десктопной версии), а для JS предусмотрен свой API для взаимодействия с листами, ячейками и остальными объектами. Конечно, всё асинхронно, но думаю await всех спасёт))

показать ответы
1
Автор поста оценил этот комментарий

На офисный маркетплейс не хотите выложить свое творение? Обычно больше доверия к ПО из маркетплейса.

раскрыть ветку (1)
Автор поста оценил этот комментарий

Если речь об этом:

https://appsource.microsoft.com/en-us/marketplace/apps?produ...


То в этом магазине собраны другие надстройки (Office Apps), которые подходят только для современных версий офиса (например, Office 365 или его веб-версия). Они основаны на другом принципе (являясь веб-приложением), используют другой язык программирования (JavaScript). В свое время немного экспериментировал с ними, и думаю, что за ними будущее - но пока технология еще развивается, API существенно меняется. Поэтому пока что придерживаюсь более старой технологии - VSTO. Для них возможности публикации в официальных маркетплейсах я не знаю - если Вы в курсе, буду благодарен если просветите))

показать ответы
1
Автор поста оценил этот комментарий

Помнится там все запаковывалось в один файл, он потом прописывался в windows списке программ, можно было сделать uninstall.

Попробуйте в свой Visual Studio solution добавить новый проект типа setup, и он все сделает.

раскрыть ветку (1)
Автор поста оценил этот комментарий

Хорошо, попробую поэкспериментировать! Кстати замечу, что и сейчас если устанавливать через vsto-файл, надстройка также будет фигурировать в виндовой "Установке и удалении программ"

показать ответы
Автор поста оценил этот комментарий

Ну так инсталляционный пакет формируется через Visual Studio в два клика, зачем людей пугать vsto-шками

Попробуйте прямо на github выкладывать сборку, может и так прокатит

раскрыть ветку (1)
Автор поста оценил этот комментарий

Там действительно есть установочный exe-файл, но вроде без vsto файла не установится (хотя надо будет еще изучить вопрос подробнее)

показать ответы
1
Автор поста оценил этот комментарий

Написал на почту про помощь

раскрыть ветку (1)
Автор поста оценил этот комментарий

Спасибо, очень круто что разработчики тоже откликнулись, кто готов подключиться к разработке! =)

Автор поста оценил этот комментарий

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

Вы не планируете сделать одну релизную ветку откуда можно было бы взять аддон чтобы он потом сам обновлялся?

раскрыть ветку (1)
Автор поста оценил этот комментарий

Это есть в планах. Действительно, описанное в посте ограничение на папку, из которой нужно устанавливать обновление связано именно с этим - можно прописать сетевой путь в файлам, и на старте Excel будет автоматически проверять обновления в том месте, откуда надстройка была первоначально установлена. Более того, .vsto файл - это тектовый xml, в котором указан путь к dll со сборкой (наряду с иной служебной информацией), поэтому можете легко увидеть его содержимое, открыв в блокноте.


Если есть коллеги, которые смогут помочь с деплоем установочных файлов (.vsto и dll-ки) на публичном адресе - будет очень здОрово!)

показать ответы
3
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
Автор поста оценил этот комментарий

Спасибо, попробую! Правда, у них решение платное и с закрытым исходным кодом - не уверен, что ребята захотят поделиться тем, что приносит им хлеб =)

4
Автор поста оценил этот комментарий

Мой путь в программирование начался  с того, что для автоматизации кучи рутины по формированию однотипных документов - я копнул в VBA. Через пару месяцев это были уже независимые от MS Office приложения на C#.


Автор красава. Так держать :)

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Спасибо! Похожим путём пришёл в разработчики, начав автоматизировать рутинные задачи в VBA - и постепенно втянулся, получая кайф от программирования, и от того, что твой код решает реальные задачи!))

Автор поста оценил этот комментарий

Не пиратство? Есть оффстраничка?

раскрыть ветку (1)
Автор поста оценил этот комментарий

Сегодня многие проекты с открытым исходным кодом публикуются на Гитхабе, как и этот проект:

https://github.com/navferty/NavfertyExcelAddIn

вот страница с документацией, там же можно посмотреть исходный код

показать ответы
1
Автор поста оценил этот комментарий

Для смены регистра выделенного текста в Excel можно использовать ctrl+shift+f

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

В моей версии Excel эта команда открывает окно формата ячеек. Там можно изменить шрифт, направление текста и прочие особенности оформления ячейки. Не нашел, как в этом окне изменить регистр ("А" вместо "а" и наоборот). Из штатных функций, насколько я знаю, этого можно добиться либо формулами (UPPER, LOWER, PROPER) либо замороченными средствами вроде Power Query

показать ответы