Добрый день! Код ниже удаляет пустые каталоги в указанном родительском. Как доработать макрос, чтобы удаление производилось на всю глубину вложенности подкаталогов. В приложенной структуре каталогов должны удалиться каталоги 2 и 5. Код удаляет только пустой подкаталог 2 с первого уровня вложенности. Пустым считать каталог без файлов.
Код
Sub DeleteEmptySubfolders()
Dim FSO, Folder, Subfolder As Object
Dim FolderPath, UserName As String
UserName = Environ("USERNAME")
FolderPath = "C:\Users\UserName\Desktop\ÒÅÑÒ_\"
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder(FolderPath)
For Each Subfolder In Folder.SubFolders
If FSO.GetFolder(Subfolder.path).Files.Count = 0 Then
Subfolder.Delete
End If
Next
Set FSO = Nothing
Set Folder = Nothing
Set Subfolder = Nothing
End Sub
Доброго дня! Есть рабочий код, который выявляет дубли значений ячеек в столбце. Помогите, пожалуйста, модифицировать код: нужно для каждой группы дубликатов отображать признак "дубль", но только, начиная со второго значения ( т.е. все, кроме первого). В примере подсветил, как должно быть.
Код
Sub HighlightDuplicates()
Dim rng, cell As Range
Set rng = ActiveWorkbook.Sheets("дубли").Range("A1:A100")
For Each cell In rng.Cells
If Application.WorksheetFunction.CountIf(rng, cell.Value) > 1 And cell.Value <> "" Then
cell.Offset(0, 1).Value = "дубль"
End If
Next cell
End Sub
Здравствуйте! Необходимо макросом отредактировать группу файлов . xml из каталога (пример одного файла прилагаю): заменить все теги <value status="0"> на <value>. Разумеется, все изменения нужно сохранить при закрытии файла. Вроде подходящий фрагмент кода на форумах нашёл, однако, не работает. Библиотеку "Microsoft XML, 3.0" подключил. Прошу помощи в допиливании.
Код
Sub Replace_in_XML()
Dim TheFolder, TheFiles, AFile
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set TheFolder = fso.GetFolder("C:\Users\Desktop\Каталог\") ' путь к каталогу с xml
Set TheFiles = TheFolder.Files
For Each AFile In TheFiles
ReadXML (AFile)
Next
End Sub
Sub ReadXML(af As String)
Dim xml_doc As New DOMDocument
Dim nde_test As IXMLDOMElement
xml_doc.Load af
For Each nde_test In xml_doc.SelectNodes("<value status=""0"">")
Debug.Print nde_test.SelectSingleNode("<value>").Text
Next
End Sub
Прошу такой помощи по VBA, т.к. не смог найти решение в инете: в структуре связанных каталогов могут находится дубликаты наименований файлов. Дублей может быть несколько в разных каталогах. Задача, указав родительский каталог, исключить дубли наименований, переименовав автоматически дубликаты, добавив к наименованию второго файла числовой индекс, например "Имя(2)", третьему "Имя(3)" и т.д. Первое имя из группы дублей оставить без изменения. Содержимое и размер дублей не анализировать. Пример каталогов с файлами показываю.
Полное имя файла Путь 1.txt C:\Users\admin\Desktop\Каталог1\1.txt 2.txt C:\Users\admin\Desktop\Каталог1\2.txt 3.txt C:\Users\admin\Desktop\Каталог1\3.txt 3.txt C:\Users\admin\Desktop\Каталог1\Каталог2\3.txt 1.txt C:\Users\admin\Desktop\Каталог1\Каталог2\Каталог3\1.txt 2.txt C:\Users\admin\Desktop\Каталог1\Каталог2\Каталог3\2.txt 4.txt C:\Users\admin\Desktop\Каталог1\Каталог2\Каталог3\4.txt
Добрый день! В примере в пустых с виду ячейках есть содержимое, о чём указывает результат формулы СЧЁТЗ. Как узнать какой именно символ (ы) внутри? Как автоматически очищать такие псевдо пустые ячейки, ведь они могут идти не подряд?
В примере: есть позиции (стол, стул) и номера заявок (ABS00000). По каждой позиции могут быть несколько разных заявок, которые выполняют разные люди. Сводная подсчитала 14 заявок, однако, уникальных всего 10. Результат должен = 10. Прошу помощи: как без макроса с помощью сводной таблицы получить итоги за исключением дубликатов заявок в разрезе позиций?
Здравствуйте! Подскажите, пожалуйста, есть ли возможность посредством макроса (нужно именно макросом!) заменить текст в ячейке на формулу. Записанный макрорекордером код не отрабатывает при запуске. Нужно, например, текст в ячейке С1 "А1+В1" (без кавычек) заменить макросом на формулу =А1+В1
Доброго дня! Есть рабочий модуль, состоящий из двух связанных макросов. Модуль позволяет переместить (собрать)все файлы с расширением XLS* из каталогов любой вложенности в каталог ИТОГ на рабочем столе. Задача: помогите сделать один макрос из этих двух частей, выполняющий точно такую задачу. Тестовые файлы прилагаю. Благодарю!
Код
Option Explicit
Dim objFSO As Object, objFolder As Object, objFile As Object
Sub Get_XLS_from_SubFolders()
Dim sFolder As String
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = False Then Exit Sub
sFolder = .SelectedItems(1)
End With
sFolder = sFolder & IIf(Right(sFolder, 1) = Application.PathSeparator, "", Application.PathSeparator)
Application.ScreenUpdating = False
Set objFSO = CreateObject("Scripting.FileSystemObject")
GetSubFolders sFolder
Set objFolder = Nothing
Set objFSO = Nothing
Application.ScreenUpdating = True
MsgBox "Файлы 'выдернуты' из всех указанных каталогов", vbInformation, "Гарантирую!"
End Sub
Private Sub GetSubFolders(sPath)
Dim sPathSeparator As String, sObjName, UserName As String
Dim wb As Workbook
UserName = Environ("USERNAME")
If Dir("C:\Users\" & UserName & "\Desktop\ИТОГ\", vbDirectory) = "" Then
MkDir "C:\Users\" & UserName & "\Desktop\ИТОГ\"
End If
If Dir("C:\Users\" & UserName & "\Desktop\ИТОГ\XLS\", vbDirectory) = "" Then
MkDir "C:\Users\" & UserName & "\Desktop\ИТОГ\XLS\"
End If
Set objFolder = objFSO.GetFolder(sPath)
For Each objFile In objFolder.Files
If Replace(objFile.name, objFSO.GetBaseName(objFile), "") Like ".xls*" Then
'On Error Resume Next
objFSO.MoveFile objFolder & "\*.xls*", "C:\Users\admin\Desktop\ИТОГ\XLS\"
End If
Next
For Each objFolder In objFolder.SubFolders
GetSubFolders objFolder.Path & Application.PathSeparator
Next
End Sub
Добрый день! Прилагаю рабочий код, с помощью которого копируется содержимое файлов TXT в отдельные файлы Excel. Помогите, пожалуйста, доработать код, чтобы содержимое каждого выбранного текстового файла размещалось на отдельный Лист активной Книги, а имя новых Листов совпадало с именем файла TXT, откуда копируются данные.
Код
Option Explicit
Public Sub Alltext_to_exell()
Dim oFD As FileDialog
Dim x, lf As Long
Application.DisplayAlerts = 0
'назначаем переменной ссылку на экземпляр диалога
Set oFD = Application.FileDialog(msoFileDialogFilePicker)
With oFD 'используем короткое обращение к объекту
'With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = True 'мультивыбор
.Title = "Выбрать TXT-профили" 'заголовок окна диалога
.Filters.Clear 'очищаем установленные ранее типы файлов
.Filters.Add "Text files", "*.txt", 1 'добавляем возможность выбора текстовых файлов
'.Filters.Add "Excel files", "*.xls*;*.xlsx", 2 'устанавливаем возможность выбора только файлов Excel
.FilterIndex = 1 'устанавливаем тип файлов по умолчанию
.InitialFileName = ThisWorkbook.Path & "\" 'назначаем папку отображения и имя файла по умолчанию
.InitialView = msoFileDialogViewDetails 'вид диалогового окна
If .Show = 0 Then Exit Sub 'показывает диалог
'цикл по коллекции выбранных в диалоге файлов
For lf = 1 To .SelectedItems.Count
x = .SelectedItems(lf) 'считываем полный путь к файлу
Workbooks.Open x 'открытие книги
Next
End With
Application.DisplayAlerts = -1
End Sub
Доброго дня! Подскажите, пожалуйста, как в коде перейти на самый первый активный (видимый) Лист - Лист с наименьшим индексом? Нужно активировать крайний левый Лист активной Книги средствами VBA Мне известны только переходы вперёд-назад...
Код
Sheets(ActiveSheet.Index + 1).Select 'на следующий Лист
Sheets(ActiveSheet.Index - 1).Select 'на один Лист назад
Добрый день! Собрал для примера три таблицы в Power Query (как учил Николай) - папка "таблицы"- двумя запросами в Power Query. При подтягивании данных из поля3 PQ "съедает" опережающие нули в числах (даже если они в формате текст"). Как победить, чтобы отображалось в Zapros2 так же, как в оригиналах таблиц? [Чтобы Zapros2 корректно отработал на Вашем ПК, нужно заменить путь в запросе]
Добрый день! Есть столбец с числовыми данными, однако, формат ячеек Excel отображает как "(все форматы)". Прошу помощи в том, как преобразовать формат ячеек столбца в "текст", чтобы сохранились все цифры, в т.ч. "опережающий" ноль. Формула? Макросом? Пример прилагаю.
Добрый день! Есть фрагмент выгрузки данных, где ячейки столбцов с датами отображаются в ОБЩЕМ формате. Покажите, пожалуйста, как макросом найти все такие стобцы (могут находиться совершенно в различных столбцах) и исправить формат таких ячеек в КРАТКИЙ формат даты. Пример прилагаю.
Задачка по преобразованию таблички в несколько тысяч строк. В файле Пример показано, как может выглядеть исходная таблица (Лист1) и к какому виду нужно преобразовать (Лист2). В исходной много строк с одинаковым содержимым, за исключением ячейки в крайнем правом столбце (№документа). Причём, количество повторов у разных строк различное. Нужно дубликаты строк удалить, одновременно заполнив правую ячейку новым содержимым - сцепив через "; " номера документов, указанных в задублированных строках.
Приветствую! Задача: в искомой таблице с данными есть два столбца с датами и временем начала операции. Нужно, чтобы, при вводе конкретной даты в контрольную ячейку, таблица фильтровалась построчно и оставались видны строки не только с указанной датой, но и диапазонами дат, между которых искомая находится. Исходный лист и то, как будет выглядеть итог - показал на примере. Как решить? Всех благодарю заранее!
Доброго дня! Столкнулся с необходимостью быстрой построчной фильтрации "на лету" основной таблицы, расположенной на Листе1, по столбцу с указанными адресами ключевых ячеек на Листе2. Т.е. в перечне адресов есть, например, "G14", то в итоговой табличке останется строка №14 с выделенной ячейкой G14. Обе таблицы в формате "умных". В итоге по примеру должны отображаться 6 строк из 17 плюс шапка таблицы. Решения подобной задачи на форуме не нашёл. Прошу помощи)
Уважаемые, форумчане! Подсмотрел на форуме код уважаемого, tester. Макрос разбивает таблицу по содержимому столбца по файлам. Помогите, пожалуйста, доработать его в части: копирования шапки исходной таблицы в каждый новый файл. В примере разбор идёт по содержимому 1го столбца.
Код
Sub Разделить_по_книгам()
Dim oDic As Object, arrData(), arrSeparateItems(), arrTemp(), i&, n&, m&, k&
If MsgBox("Разделить данные по книгам?", vbQuestion + vbYesNo, "Вопрос") = vbNo Then Exit Sub
Application.ScreenUpdating = False
arrData() = Range("A1").CurrentRegion.Value
Set oDic = CreateObject("Scripting.Dictionary")
For i = LBound(arrData) To UBound(arrData)
If Not oDic.exists(arrData(i, 1)) Then oDic.Add arrData(i, 1), arrData(i, 1)
Next i
arrSeparateItems() = oDic.items
For n = LBound(arrSeparateItems) To UBound(arrSeparateItems)
ReDim arrTemp(1 To UBound(arrData), 1 To UBound(arrData, 2))
k = 0
For i = LBound(arrData) To UBound(arrData)
If arrData(i, 5) = arrSeparateItems(n) Then
k = k + 1
For m = LBound(arrData, 2) To UBound(arrData, 2)
arrTemp(k, m) = arrData(i, m)
Next m
End If
Next i
Workbooks.Add
Range("A1").Resize(UBound(arrTemp), UBound(arrTemp, 2)).Value = arrTemp
Columns("A:E").AutoFit
Columns("B:B").HorizontalAlignment = xlLeft
ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & Right(arrSeparateItems(n), 10), xlExcel8
ActiveWorkbook.Close SaveChanges:=True
Next n
Application.ScreenUpdating = True
MsgBox "Данные разделены и сохранены в " & ThisWorkbook.Path & "\", vbInformation, "Конец"
End Sub
Помогите, пожалуйста, доработать код в части сохранения открываемого файла xml с наименованием из ячейки xlsbl файла. Пример прилагаю. Строчкой "ActiveWorkbook.SaveAs" не получается)
Здравствуйте! Подскажите, как вставить скопированный диапазон на Листе Exel и вставить его из буфера в шаблон текстового файла в "Блокнот" и сохранение с заполненного файла с новым именем "Новый.txt"
Код
Sub Bloknot1()
'
Dim ReturnValue
Sheets("Лист1").Select
Range("E7:E20").Select
Selection.Copy
'
ReturnValue = Shell("C:\Windows\system32\notepad.exe C:\Users\Papa\Desktop\Пустой.txt")
End Sub
Ячейки столбца содержат текст, разделённый установленным сочетанием символов "ОДИНПРОБЕЛ>ОДИНПРОБЕЛ" (только такой разделитель!). Текст выгружен из базы данных. Нужно с помощью формулы найти ячейки в которых один или более раз встречаются другие разделители, например, без пробелов ">"; или "НЕТПРОБЕЛА>ОДИНПРОБЕЛ";"ОДИНПРОБЕЛ>НЕТПРОБЕЛА";"ДВАПРОБЕЛА>ДВАПРОБЕЛА".
Прошу помочь в решении задачи по поиску одинаковых строк в таблице по содержимому ячеек, находящихся в нескольких столбцах. Задачу решаю, применив формулы СУММЕСЛИМН. Упрощённый пример прилагаю (было и результат). Настоящая таблица на 100 тыс.строк. Если применять к одной таблице одновременно несколько СУММЕСЛИМН (с различным набором условий) - время выполнения расчётов получается около трёх часов. Подскажите пожалуйста способ решения подобных задач, не затратный по времени. Благодарю!
Есть число, выгруженное из базы данных, состоящее из двух частей, разделённых двоеточием. Задача "отсечь" первую (основную) часть в неизменном виде. При автозамене "двоеточие*" на "ничего" изменяется само число. Манипуляции с форматами ячеек не дают нужного результата. Ввод чисел вручную даёт правильный результат (Пример1). Помогите автоматизировать.
Помогите с рабочим кодом, с помощью которого можно получить СПИСОК НАИМЕНОВАНИЙ открытых в данный момент программных ОКОН (окон приложений) и окон документов (вторичных окон). Весь инет "прошерстил" - нет ничего вразумительного.
Некая программа создаёт (на основе базы данных) последовательно по каждому из филиалов («А», «В», «С») один НОВЫЙ_файл.xls. Файлы автоматически НЕ сохраняются и висят, ожидая ручного сохранения. Есть ли способ сохранения "на лету": открылся файл – сохранился (например, в корень «С:/») с именем филиала «А»-закрылся- ожидается открытие следующего файла..? Поиском по форуму пользовался, не увидел. Как понимаю: макрос по событию открытия книги получится прописать только в уже существующую книгу.
В надстройке Plex видим возможность сохранять листы в отдельные файлы (все или выделенные). Покажите, пожалуйста, как создавать файлы из ВСЕХ листов книги, кроме первых "n" (например, начиная с третьего по порядку)? Тогда, если листов в книге = 10, а книг (xls) на выходе в папке "ИТОГ" на диске "С" получится =8.
Подскажите, пожалуйста, универсальный код для группировки любого количества строк по наименованию в крайнем левом столбце. Диапазон обработки до первой пустой строки. Пример прилагаю (исходные данные, желаемый результат).
Друзья! Кто поможет с формулой?: нужно в любой день недели получать ячейку с датой - на первое число предыдущего месяца от сегодняшней даты. Т.е. сегодня 19.05.2017, а в соседней ячейке 01.04.2017, или сегодня 31.05.2017, а в соседней по-прежнему 01.04.2017, но 01.06.2017 соответственно - 01.05.2017 Благодарю)
Здравствуйте! Как при смене наименования месяца в ячейке А2 получать в диапазоне С2:С6 соответствующие этому наименованию данные из таблицы? Комбинацией СУММЕСЛИ и СМЕЩ не выходит у меня ничего путного..
Доброго дня! Есть ли простое решение такой задачи?: Необходимо при вставке текстовых данных из любого другого файла-источника в столбцы «B» или «G» основной таблицы (прилагаю) производить замены в каждой ячейке «на лету» на верный текст (из таблички соответствий текста). Заранее благодарю за помощь!
Как организовать такое (?): 1) остановка макроса с сообщением "Выбери автофильтром нужные значения и нажми "ОК"; 2) человек выполняет нужные действия с таблицей, нажимает "ОК"; 3) далее макрос продолжает работу до окончания