ExceLifeHack

ExceLifeHack

Прокачиваем знания о Microsoft Excel. Обучение Excel https://dreamhr.ru/excel Макросы VBA на заказ https://wa.me/79264771362
На Пикабу
16К рейтинг 2219 подписчиков 1 подписка 36 постов 32 в горячем
Награды:
5 лет на Пикабу самый сохраняемый пост недели более 1000 подписчиков
289

Перенос строк в Microsoft Excel

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

Короткое видео ⬇⬇⬇

Рассмотрим каждый из вариантов переноса подробнее и разберём обратную операцию –удаление переносов.

Автоматический перенос текста

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

На вкладке Главная ► Перенести текст (Выравнивание):

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

Если текст отображается не полностью, то задана точная высота строки (столбца) или текст находится в объединенных ячейках.

Ручной ввод разрыва строки

Новую строку текста можно начать в любом месте ячейки.

1. Дважды щелкните ячейку или выделите ячейку, а затем нажмите F2, в которую требуется ввести разрыв строки.

2. Дважды щелкните в ячейке на место, в которое нужно вставить разрыв строки, и нажмите сочетание клавиш Alt+Enter:

Результат:

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

Удаление переносов строк

Ок, с переносами строк разобрались, а как быть в ситуации когда переносы не нужны?

В случае с автоматическими переносами, их просто нужно отключить, на вкладке Главная ► Перенести текст (Выравнивание).

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

1. Выделите область в которой нужно удалить переносы.

2. Нажмите сочетание клавиш Ctrl+H, в открывшемся окне выделите курсором поле Найти и нажмите сочетание клавиш Ctrl+J.

Вроде ничего не произошло, но для Excel запрос для поиска понятен:

Нажмите Заменить. Готово!

Если в строке, до переноса, нет пробела замена его не добавит!

Не забудьте удалить невидимый символ в поле Найти, т.к. он остаётся в поле и может помешать в дальнейшем.

Решить задачу, можно встроенной функцией =ПЕЧСИМВ(), которая очищает текст от всех непечатаемых символов, включая переносы строк:

Если в строке, до переноса, нет пробела формула его не добавит!

Более продвинутый вариант, использование макросов:

Sub RemoveCarriageReturnsSelection() 'Удаление переноса каретки в выделенном диапазоне
Selection.Replace What:=Chr(10), Replacement:=" " ' заменяем перенос на пробел
Selection.Replace What:=Chr(160), Replacement:="" ' удаляем символ "похожий" на пробел
Selection.Replace What:=" ", Replacement:=" " ' удаляем двойной пробел
End Sub

Sub RemoveCarriageReturnsSheet() 'Удаление переноса каретки на листе
Cells.Replace What:=Chr(10), Replacement:=" " ' заменяем перенос на пробел
Cells.Replace What:=Chr(160), Replacement:="" ' удаляем символ "похожий" на пробел
Cells.Replace What:=" ", Replacement:=" " ' удаляем двойной пробел
End Sub

Спасибо, что дочитали до конца!

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

Показать полностью 6
254

Отправка писем через Gmail, ЯндексПочта и @mail из Excel

Создать интеграцию Microsoft Excel с Outlook, легко, средствами VBA. Можно ли отправлять письма другими почтовыми сервисами? Например, через Gmail, самый популярный в мире почтовый сервис, от Google.

Ответ можно, используя настройки SMTP, IMAP, POP.

Макросы приложенные к данной статье дают возможность отправить отдельный лист или книгу с помощью CDO.

CDO является библиотекой объектов, которая предоставляет интерфейс Messaging Application Programming Interface (MAPI), позволяет отправлять и получать сообщения.

Решение для MS Office без Outlook.

Алгоритм настройки макросов

Копируйте код в Личную книгу макросов или в файл своей надстройки;

Добавьте в код адрес нужной почты и пароль:

.Item(msConfigURL & "/sendusername") = "ДОБАВЬТЕ ВАШУ ПОЧТУ"

.Item(msConfigURL & "/sendpassword") = "ДОБАВЬТЕ ПАРОЛЬ"

.From = "ДОБАВЬТЕ ВАШУ ПОЧТУ" ' От кого = username почты

Подключите в редакторе VBA (Alt+F11) библиотеку Microsoft CDO для Windows 2000:

Код макроса на GitHub

Отправить текущий активный лист, как вложение по эл.почте

Отправить текущую книгу, как вложение по эл.почте

Скачать файл с макросами

Копируйте код на русской раскладке клавиатуры, чтобы сохранить комментарии.

Особенности настройки почты

Как настроить доступ к Gmail в сторонних почтовых клиентах

Если вы используете двухэтапную проверку, следуйте инструкции:

Пароль при установленной двухэтапной проверке

А как же наши дорогие Яндекс.Почта и @mail?

Чтобы их использовать, удалите или закомментируйте в коде макроса строки .Item(msConfigURL & "/smtpserver") кроме:

.Item(msConfigURL & "/smtpserver") = "smtp.yandex.ru"

tem(msConfigURL & "/smtpserver") = "smtp.mail.ru"

В заключение, удобный макрос для открытия почты Gmail из Excel при помощи Send Keys:

Sub ActivateGmail() " Активировать почту Gmail
' Открыть
Handle = "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"
RetVal = Shell(Handle, 1)
Application.Wait Now + TimeValue("00:00:02")
SendKeys ("https://mail.google.com/mail/u/0/#inb..."), True
Application.Wait Now + TimeValue("00:00:03")
SendKeys ("{ENTER}"), True
Application.Wait Now + TimeValue("00:00:02")
'Создать письмо
SendKeys ("C"), True
End Sub

Для браузера Chrome.

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

Измените Handle на путь вашего браузер, а SendKeys ("https://mail.google.com/mail/u/0/#inb...") на другой почтовый клиент, по логике должно работать.

Спасибо, что дочитали до конца!

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

Показать полностью 5
291

Вывод списка файлов в папке на лист Excel

Перед вами стоит задача вывести списком содержимое папки? Этот пост для вас.

Вывод списка файлов в папке на лист Excel

Вывести cписок файлов в папке можно макросом:

Sub FileListInFolder() 'Вывод содержимого папки на лист Excel
Dim V As String
Dim BrowseFolder As String
'открывает диалоговое окно выбора папки
With Application.FileDialog(msoFileDialogFolderPicker)
.title = "Выберите папку или диск"
.Show
On Error Resume Next
Err.Clear
V = .SelectedItems(1)
If Err.Number <> 0 Then
MsgBox "Вы ничего не выбрали!"
Exit Sub
End If
End With
BrowseFolder = CStr(V)
'добавляет лист и выводит на него шапку таблицы
ActiveWorkbook.Sheets.Add
With Range("A1:E1")
.Font.Bold = True
.Font.Size = 12
End With
Range("A1").Value = "Имя файла"
Range("B1").Value = "Путь"
Range("C1").Value = "Размер"
Range("D1").Value = "Дата создания"
Range("E1").Value = "Дата изменения"
'вызывает процедуру вывода списка файлов
'измените True на False, если не нужно выводить файлы из вложенных папок
ListFilesInFolder BrowseFolder, True
End Sub
Private Sub ListFilesInFolder(ByVal SourceFolderName As String, ByVal IncludeSubfolders As Boolean)
Dim FSO As Object
Dim SourceFolder As Object
Dim SubFolder As Object
Dim FileItem As Object
Dim r As Long
Dim x
Set FSO = CreateObject("Scripting.FileSystemObject")
Set SourceFolder = FSO.getfolder(SourceFolderName)
r = Range("A65536").End(xlUp).Row + 1 'находит первую пустую строку
'выводит данные по файлу
For Each FileItem In SourceFolder.Files
Cells(r, 1).Formula = FileItem.Name
Cells(r, 2).Formula = FileItem.Path
Cells(r, 3).Formula = FileItem.Size
Cells(r, 4).Formula = FileItem.DateCreated
Cells(r, 5).Formula = FileItem.DateLastModified
r = r + 1
x = SourceFolder.Path
Next FileItem
'вызывает процедуру повторно для каждой вложенной папки
If IncludeSubfolders Then
For Each SubFolder In SourceFolder.SubFolders
ListFilesInFolder SubFolder.Path, True
Next SubFolder
End If
Columns("A:E").AutoFit
Set FileItem = Nothing
Set SourceFolder = Nothing
Set FSO = Nothing
End Sub

Копируйте код и сохраните его в Личной книге макросов.

Открыть редактор VBA Alt +F11, вызвать меню для выполнения или изменения макросов Alt + F8.

Показать полностью
153

Как отключить изменение ширины столбцов Сводной таблицы в Excel

Настроили красивый отчет, но при обновлении данных столбцы съезжают?

Для отключения изменения ширины столбцов Сводной таблицы при обновлении данных, установите курсор на любую ячейку таблицы.

Нажмите правую кнопку мыши и в появившемся меню выберите Параметры сводной таблицы:

На вкладке Макет и формат, уберите галку с пункта Автоматически изменять ширину столбцов при обновлении:

Готово! Теперь ширина столбцов будет такой, какую вы задали.

Если, часто работаете с сводными, есть смысл использовать макрос:

Sub PivotStaticColumn() 'Отключение автоматического изменения ширины столбцов при обновлении
Dim pvtTable As PivotTable
On Error Resume Next
Set pvtTable = ActiveSheet.PivotTables(ActiveCell.PivotTable.Name)
On Error GoTo 0
If Not pvtTable Is Nothing Then
ActiveSheet.PivotTables(ActiveCell.PivotTable.Name).HasAutoFormat = False
Else
MsgBox "Выделите ячейку Сводной таблицы!", vbExclamation, "Подсказка"
End If
End Sub

Копируйте нужный код и сохраните его в Личной книге макросов.

Открыть редактор VBA Alt +F11, вызвать меню для выполнения или изменения макросов Alt + F8.

Спасибо, что дочитали до конца!

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

Еще готовые решения:

Удаление пустых строк в Excel

Удаление пустых столбцов Excel

Показать полностью 2
331

Макрос для удаления пустых строк в Excel

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

Например, не строится Сводная таблица по всем данным или правильно не работает стандартный фильтр .

Исключая "ручной привод", максимально просто решает проблему, такой макрос:

Макрос для удаления пустых строк в Excel

Копируйте код и сохраните его в Личной книге макросов или создайте свою надстройку:

Sub DelEmptyRows() 'Удаление пустых строк на активном листе

Dim i As Long

Dim rMay1 As Range

Dim rMay2 As Range

Set rMay1 = Application.Range(ActiveSheet.Range("A1"), _

ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell))

Application.ScreenUpdating = False

'удаляем пустые строки

For i = 1 To rMay1.Rows.Count

If WorksheetFunction.CountA(rMay1.Rows(i).EntireRow) = 0 Then

If rMay2 Is Nothing Then

Set rMay2 = rMay1.Rows(i).EntireRow

Else

Set rMay2 = Application.Union(rMay2, rMay1.Rows(i).EntireRow)

End If

End If

Next

If rMay2 Is Nothing Then

MsgBox "Пустых строк не найдено.", vbInformation, "Информация"

Else:

rMay2.[Delete]

End If

Application.ScreenUpdating = True

End Sub

В продолжение к посту  Макрос для удаления пустых столбцов в книгах Excel.

Показать полностью 1
59

Создаём Личную книгу макросов VBA

Вам необходимо использовать один и тот же макрос (пользовательскую функцию) в разных рабочих книгах? Нет ничего проще, сохраните его в Личной книге макросов, файл которой имеет название — PERSONAL.XLSB. Он скрыто открывается при запуске программы MS Excel и доступен только на вашем ПК.

Создание и сохранение кода в Личной книге макросов

1. В строке состояния, нажмите иконку записи макроса:

Или на вкладке Разработчик ► Запись макроса (Код):

Если вкладка Разработчик отсутствует, нажмите в Строке меню или на Панели инструментов правую кнопку мыши и выберите в меню вариант Настройка ленты...:

В окне настройки, установите галку Разработчик:

2. В открывшемся диалоговом окне Запись макроса, из выпадающего списка Сохранить в: выберите вариант Личная книга макросов, нажмите на кнопку :

На вкладке Разработчик ► Остановить запись (Код).

3. Закройте текущую книгу нажав Сохранить в диалоговом окне:

Файл Личной книги макросов создан.

Чтобы узнать путь к файлу, откройте новую книгу, нажмите клавиши ALT + F11, редакторе Visual Basic (VBE) вставьте в «Project-VBAProject» (PERSONAL.XLSB) макрос:

Sub ПутькФайлу()
ActiveCell.Value = ThisWorkbook.Path
End Sub

В любом случае, книга PERSONAL.XLSB находится в папке XLSTART , которую можно найти с помощью поиска в проводнике Windows.

Закройте VBE и выполните макрос в окне MS Excel.

В любом случае, книга PERSONAL.XLSB находится в папке XLSTART, которую можно найти с помощью поиска в проводнике Windows.

Добавление макросов

Если вы хотите написать свой макрос (пользовательскую функцию) или добавить готовый из интернета, откройте редактор VBE (ALT + F11), выберите папку «Project-VBAProject» (PERSONAL.XLSB) и вставьте в модуль нужный код. Уже записанные в книгу макросы удалять не нужно, они не будут конфликтовать между собой, если в одном модуле не хранить макросы с одинаковыми именами.

Подпрограммы, размещенные в Личной книге макросов, можно просмотреть в окне Список макросов, открыв его из любой рабочей книги MS Excel (Alt + F8):

Они будут перечислены с приставкой PERSONAL.XLSB!.

Пользовательские функции в этом окне не отображаются:

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

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

Удаление Личной книги макросов

Для удаления, найдите с помощью поиска в проводнике папку XLSTART и удалите из нее файл PERSONAL.XLSB.

Особенности работы с Личной книгой макросов

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

2. На слабых компьютерах, при использовании, MS Excel будет запускаться медленнее;

3. Периодически очищайте от старых и ненужных макросов.

Показать полностью 9
143

Макрос для удаления пустых столбцов в книгах Excel

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

Копируйте код и сохраните его в Личной книге макросов.

Sub ColumnDel()
'Удаляем пустые столбцы
Dim i As Long
Dim rgMy1 As Range
Dim rgMy2 As Range
Set rgMy1 = Application.Range(ActiveSheet.Range("A1"), _
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell))
Application.ScreenUpdating = False
For i = 1 To rgMy1.Columns.Count
If WorksheetFunction.CountA(rgMy1.Columns(i).EntireColumn) = 0 Then
If rgMy2 Is Nothing Then
Set rgMy2 = rgMy1.Columns(i).EntireColumn
Else
Set rgMy2 = Application.Union(rgMy2, rgMy1.Columns(i).EntireColumn)
End If
End If
Next
If rgMy2 Is Nothing Then
MsgBox "Не найдено пустых столбцов", vbInformation, "Для информации"
Else:
rgMy2.[Delete]
End If
Application.ScreenUpdating = True
End Sub

Открыть редактор VBA Alt +F11:

Вызвать меню для выполнения или изменения макросов Alt + F8:

На выполнение макроса можно назначить "Горячие клавиши", нажав в окне Параметры:

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

Для Windows сочетание клавиш для строчных букв — Ctrl + буква. Для прописных букв — Ctrl + Shift + БУКВА.

Для Mac сочетание клавиш для строчных букв — Option + Command + буква или Ctrl + буква. Для прописных букв — Ctrl + Shift + БУКВА.

Показать полностью 3
7819

Как снять защиту с листа или книги Excel2

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

Первый способ, используя Блокнот

1. Переименуйте файл, изменив расширение с .xlsx на .zip.

Для отображения расширений файлов в названиях выберите в окне навигации Файл ► Изменить параметры попок и поиска:

В открывшемся окне, на вкладке Вид, уберите галку Скрывать расширения для зарегистрированных типов файлов:

2. Откройте архив. Перейдите в папку xl ► worksheets:

3. Копируйте, в папку с исходным файлом, файл sheet1, или тот который у вас защищен, или файл workbook.xml из папки xl, если защита на книге.

4. Нажмите на файл правой кнопкой мыши (п.к.м) ► Открыть с помощью ► Блокнот. При помощи поиска (Ctrl+F) найдите строку:

* Для снятия защиты с листа: <sheetProtection и удалите целиком текст строки в файле <sheetProtection ..........> вместе со скобками;

* Для снятия защиты с книги: <workbookProtection и удалите целиком текст строки в файле <workbookProtection ..........> вместе со скобками.

5. Сохраните файл(-ы) и перенесите его обратно в архив.

6. Верните файлу исходное расширение .xlsx.

Защита снята.

Второй способ, через с Google Диск

1. Откройте в браузере Google Диск (нужно иметь аккаунт).

2. Перетащите в него защищённый файл.

3. Кликните п.к.м на него и выберите Открыть с помощью ► Google Таблицы:

4. Сохраните файл: Файл ► Сохранить как таблицу Google.

5. В открывшемся окне, выберите Файл ► Скачать ► Microsoft Excel.

Готово. Защита будет снята и с листов и с книги целиком.

Интересное по теме Excel:

ВПР (вертикальный просмотр)

Трюки с листами книги

Мгновенное заполнение

"Умные" таблицы в Excel

Показать полностью 4
Отличная работа, все прочитано!