PooHkrd, по первым ощущениям да, необходимо и достаточно знания JS на каком-то базовом уровне. Если до этого долго работал с VBA, то особых проблем по переходу не должно возникнуть.
Потенциал большой. Я, например, использую для доступа к ГрафАПИ МСа. Также: 1. Можно сделать кнопку в телефоне (если скачать приложение) или даже в PBI отчетах (!!!) для обновления данных "по кнопке" через PowerApps. Очень удобно (и практично) и получается действительно "вау" для людей, которые понимают, насколько это необычно. Используя PowerApps в свою очередь можно сделать дашборд с внесением и отображением данных в реальном времени (см п.3 ниже). 2. В ТИМзе есть возможность добавлять вэбхуки, в которых приходят уведомления после определенных действий пользователя. Вэбхуки можно использовать как отдельно, так и совместно с другими коннекторами https://flow.microsoft.com/en-us/connectors/. Вот здесь (https://docs.microsoft.com/en-us/azure/logic-apps/logic-apps-azure-functions) дается описание использования ажурных функций. В серьезной разработке ажурные функции имеют большую область применения. 3. Премиум (достаточно дорогой) позволяет писать данные в mssql. Если комбинировать с разного рода коннекторами, то можно сильно упростить анализ первичных данных бизнеса. Обычно этим пользуются в отделе разработки, где есть необходимые ресурсы (как человеческие, так и бюджетные).
Пожалуй, лучший (и что самое главное бесплатный) ресурс для обучения этой технологии дает МС вот здесь: https://docs.microsoft.com/en-us/learn/modules/get-started-flows/ Ко многим достаточно престижным в узких кругах экзаменам от МСа можно готовиться только на сайте learning (по ссылке выше). МС уделяет большое внимание этому ресурсу и за последние несколько лет отлично наполнил информацией. Очень советую.
У меня получалось через коннектор сделать на своей работе что-то похожее. trofeishik, предлагаю попробовать по скайпу. Пишу на почту, если никто не против.
Все приходит с опытом. Покупать книгу и просто читать - не вариант. Что-то запомните, но многое забудете, пока не начнете применять на практике. Поэтому начните с азов: * формулы сумм, впр, если, и/или, суммеслимн/суммесли, * как создавать сводную таблицу и зачем она нужна.
Все познается в сравнении. Я работал с большим числом пользователей (несколько тысяч) от младших специалистов и стажеров до финдиректоров и инвестдиректоров крупных компаний. И поверьте, не все (даже высокооплачиваемые разработчики и админы баз данных) знают, как пользоваться базовыми формулами. Про сводные таблицы я вообще не говорю. Если сможете понять для чего эти формулы нужны и как их применять, от вас скорее всего больше ничего не попросят. Со временем расширяйте свой арсенал, читайте рекомендованные здесь книги (их и так мало толковых на русском), применяйте на практике. Достаточно 2-3 часов погружения в эксель, чтобы пройти базовое собеседование. А дальше: совершенству нет предела. Оттачивайте навыки, ходите на треннинги, начните отвечать на вопросы на форумах (например, здесь).
Большой проблемы в этом нет. 1. Для заполнения чего-то на сайте, обычно используются разного рода запросы: POST, GET (реже) и т.д. 2. Можно использоваться IE автоматизацию (которая под покровом используют пункт №1) и заполнять нужные input поля, после чего нажимать на необходимые кнопки (аналогия с планетой эксель - это кнопка "Ответить" при написании ответа). 3. Однако лучше, если есть доступ к бэкенду. Тогда ваши данные можно "оптом" занести в нужные места в базе данных.
Не проверял, но скорее всего From, CC и прочее не получится сделать через приложенный код. Это все можно воссоздать через (не тестировал, пишу вслепую):
Код
dim tmp
tmp = "From: " & .From & vbnewline & _
"To: " & .to & vbnewline & _'здесь нужно итерировать по всем получателям
"CC: " & .CC 'здесь нужно итерировать всех кто в копии и т.д.
'используем tmp дальше, где потребуется
В конце концов есть debug.assert и debug.print (которыми я активно пользуюсь).
Далее мое мнение Юнит-тестирование нужно, когда развиваешь большой (серьезный) проект, где код планируется использовать достаточно регулярно продолжительное время. Когда мы говорим о жалких 100-200 строках при низкой дисциплине написания, например, через Select → Selection и записи макрорекордера без последующего рефакторинга ни о каком нормальном тестировании не может быть и речи.
В идеале любое тестирование (будь то Unit, Integration, System, и т.д.) должно помогать * в документировании кода, * бесшовном внедрении, * повышении уверенности стейкхолдеров в безотказности и корректности результатов отработки, * автоматической отловке багов до commit'а.
Предварительного решения будет достаточно. Но в MS рекомендуют переходить на PQ. На работе я уже построил такой аналитический инструмент, который выгружает 1 факт-таблицу и штук 10 таблиц измерений. В таком случае оптимально использовать связку PowerPivot + PowerQuery. В общем-то можно написать код, который обнулит данные с SQL запросом типа: select * from factTable where 0=1. А по другой кнопке воспользоваться sql-запросом типа select * from factTable.
Насколько я знаю из вэб-версии это сделать нельзя. Можно экспортировать данные и уже по данным делать отчеты, что не отвечает вашим ожиданиям. Другой вариант - экспортировать из desktop-версии. Чтобы вся таблица помещалась, можно временно увеличить размеры холста.
Sub saveImage()
Dim strPath$
Dim at As Attachment
Dim ii As MailItem
Set ii = ActiveExplorer.Selection.Item(1)
strPath = "insert your path here"
For Each at In ii.Attachments
Debug.Print at.DisplayName
If at.DisplayName Like "*.png" Then at.SaveAsFile
Next
End Sub
Сохраните картинку на жесткий диск, а потом вставьте в письмо. После окончания процедуры картинку можно удалить, например через kill.
Жаров вполне нормально объясняет и теория есть, и практика и вполне себе увязывает 3 формы отчетности. Всякие ОНО и ОНА, плаги, моделирование баланса и т.д. На деле все так и работает, поверьте.
Почитайте что-нибудь на английском, если знаете язык. Все, что от Michael Rees (тоже увязывает 3 формы отчетности на примере , Tom Sawyer, Paul Pignataro (один из лучших вводных курсов по моделированию на примере walmart), Danielle Fairhurst. Просто и понятно. Если хотите что-нибудь более теоретическое, очень рекомендую Simon Benninga (по мне, так лучшее, что можно найти), Damodaran (заумное и академическое). Есть еще пара авторов, работавших в консалтинге, но это уже очень нишевые книги и вам не нужны.
Если не привязываться к Excel, то можно посмотреть в сторону Google API в их фирменном приложении Google Sheets. На stackoverflow есть несколько тем. Если бы было больше вводных, написал бы простенький скриптик на Google apps script.
Получение данных через API в таблицу, Необходимо создать Excel таблицу, ячейки в которой будут получать данные через API криптовалютной биржи bitmex.com и testnet.bitmex.com
Я столкнулся с похожей проблемой и тоже хотел идти через PP, но в итоге решил ее через удаление старого подключения и добавления такого же нового в PQ. Проблема read-only в таком случае нас совсем не волнует. Если нужно решить конкретно read-only проблему, то нужно понимать, что работать в окне power pivot (менять типы данных, делать какие-то трансформации) нельзя. Что-то похожее на ниже сделано у меня.
Код
With ThisWorkbook
On Error Resume Next
.Connections("название вашей связи").Delete
.Queries("название вашего запроса").Delete '''не обязательно, но для спокойствия души
On Error GoTo 0
.Queries.Add Name:="название вашей связи", Formula:= "ваша query формула"
.Connections.Add2 "добавляете реквизиты отталкиваясь от запроса строкой выше"
End With
Если используете связи, то потом делаем вот это:
Код
Sub addToDataModel(m As Excel.Model, fkTable, fkColumn, pkTable, pkColumn)
Dim pkTbl As ModelTable
Dim fkTbl As ModelTable
Dim fkCol As ModelTableColumn
Dim pkCol As ModelTableColumn
DoEvents
Set pkTbl = m.ModelTables(pkTable)
Set fkTbl = m.ModelTables(fkTable)
Set fkCol = fkTbl.ModelTableColumns(fkColumn)
Set pkCol = pkTbl.ModelTableColumns(pkColumn)
m.ModelRelationships.Add _
ForeignKeyColumn:=fkCol, _
PrimaryKeyColumn:=pkCol
Application.StatusBar = False
End Sub
Sub addQueryToDataModel()
Dim md As Model
Set md = ThisWorkbook.Model
addToDataModel md, "Таблица1 "Ключ1", _
"Таблица2", "Ключ2"
''' Далее повторяем для всех связей с другими названиями (это понятно)
addToDataModel md, "Таблица1 "Ключ1", _
"Таблица2", "Ключ2"
End sub
Есть еще один способ. Связан с удалением всех связей в модели данных. В таком случае (если не было трансформаций и манипуляций в power pivot) формулу в запросе можно менять.
Как автоматически извлекать из тела новых писем информацию в Google Excel Online Spreadsheet, Учимся как автоматизировать процесс получения и импортирования информации с почты в таблицу
Как автоматически извлекать из тела новых писем информацию в Google Excel Online Spreadsheet, Учимся как автоматизировать процесс получения и импортирования информации с почты в таблицу
Я такое делал не раз. По опыту скажу, что сделать это из аутлука очень сложно (но можно). Легче использовать api гугла: https://developers.google.com/sheets/api/ и какой нибудь скриптовый язык (например, python). Не смотрел, но у меня такое ощущение, что можно написать js-скрипт и в самом google sheets.
Это можно сделать в Outlook с помощью VBA. Никаких проблем быть не может - все довольно тривиально. Если это не устраивает, то можно считывать почту минуя outlook, но это гораздо сложнее, и я не уверен, что все будет лучше.
В последнем варианте все можно сделать и с помощью VBA, и с помощью других языков. Я, например, выполнил очень похожую задачу на Python, прицепившись к API Google Sheets. Если нужны подробности, пишите на почту и только, если Doober не станет делать.
По макросу: 1. Если нужна скорость, то подобные вещи
Код
Workbooks(book_name & ".xlsx").Sheets(1)
тоже стоит исключить. По возможности объявляйте дополнительную переменную листа, и ее используйте вместо полного названия, либо используйте хотя бы конструкцию with, что делает код более читабельным (имхо) и несколько ускоряет макрос. 2. Форматирование лучше вынести из цикла (autofit). Зачем каждый раз проделывать идентичную операцию, когда можно ее выполнить один раз за пределами циклов. 3. С циклами всегда работайте осторожно. Старайтесь убирать вложенность, где это только возможно. Если все таки вложенность нужна, старайтесь использовать конструкции vba: массивы, коллекции, словари и т.д. Они достаточно быстрые. 4. Ну и напоследок: если решили начать оптимизацию скорости через обновление экрана (screenupdating), то старайтесь
включать ручные вычисления (calculation);
использовать конструкции языка типа словари, коллекции, массивы и т.д.;
убирать любого рода выделения и активации (где это возможно) через методы select и activate;
уходить от новых переменных типа variant (для самодисциплины также используйте option explicit в самом начале модуля ВСЕГДА);
использовать двоеточие для объединения нескольких связанных строк в одну