Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 4 5 След.
выгрузка дерева каталогов и файлов с атрибутами
 
Цитата
БМВ написал:
дополните условием не равенства тому что нужно исключить.
Опять всем привет =)
Еще раз подниму тему, т.к. еще дорабатываю макрос.

Исключение из поиска по имени файла, благодаря БМВ, сделал, спасибо.
А сейчас мне надо сделать исключение конкретной подпапки из поиска.
Не могу понять, где и как прописать это.

Пример:
Папка E:\SOFT, содержит подпапки E:\SOFT\CAD, E:\SOFT\Windows, E:\SOFT\Драйверы и т.п. со своими подпапками и файлами.
Надо провести поиск по всем подпапкам на всю глубину, кроме E:\SOFT\Windows и всех в нее вложенных.
Код
Function GetAllFileNamesUsingFSO(ByVal FolderPath As String, ByVal Mask As String, ByRef FSO, _                                 
ByRef FileNamesColl As Collection, ByVal SearchDeep As Long)
    ' перебирает все файлы и подпапки в папке FolderPath, используя объект FSO
    ' перебор папок осуществляется в том случае, если SearchDeep > 1
    ' добавляет пути найденных файлов в коллекцию FileNamesColl
    On Error Resume Next: Set curfold = FSO.GetFolder(FolderPath)
    If Not curfold Is Nothing Then    ' если удалось получить доступ к папке


        For Each fil In curfold.Files    ' перебираем все файлы в папке FolderPath
            If fil.Name Like "*" & Mask Xor fil.Name Like "~$*" & Mask Xor fil.Name Like "*" & "db" Then FileNamesColl.Add fil.Path

        Next
        SearchDeep = SearchDeep - 1    ' уменьшаем глубину поиска в подпапках
        If SearchDeep Then    ' если надо искать глубже

        For Each sfol In curfold.SubFolders    ' ' перебираем все подпапки в папке FolderPath
                GetAllFileNamesUsingFSO sfol.Path, Mask, FSO, FileNamesColl, SearchDeep
            Next
        End If
        Set fil = Nothing: Set curfold = Nothing    ' очищаем переменные
    End If
End Function
Изменено: Андрей Прокофьев - 23.05.2023 23:28:49
Ограничение количества гиперссылок на рабочем листе, Обход ограничения количества 65530 гиперссылок на рабочем листе
 
Цитата
написал:
Т.е. на листе не будет ни одной гиперссылки, но когда пользователь щёлкает 2 раза мышкой на любой ячейке в столбце B, то макрос сам открывает файл, по указанной ячейке ссылке.
Спасибо, идея действительно отличная!
Но тут возникает проблема с копированием строк в другую чистую книгу. Макрос сам не скопируется в нее и пользователь вряд ли разберется, как это делается =))
Как вариант, конечно, сделать надстройку и залить на компы пользователей... буду думать.

Если есть еще какие-то решения, буду признателен.
Ограничение количества гиперссылок на рабочем листе, Обход ограничения количества 65530 гиперссылок на рабочем листе
 
Здравствуйте.
Новая тема и новая надежда на вашу помощь =)

Задача - каким либо образом обойти ограничение количества гиперссылок на рабочем листе в 65530 шт.
Вводные:
1. Максимальное количество строк в формируемой таблице - 150.000, т.е. это 300.000 гиперссылок.
2. Гиперссылки в столбце B - уникальные, в столбце D - могут повторяться. Но крайне не желательно дублирующиеся гиперссылки объединять\удалять и т.п., т.к. каждая строка будет рассматриваться в отдельности, а также будут применяться различные фильтры по данным и сортировки.
3. данные из этой таблицы могут и будут вручную построчно копироваться в другую новую чистую книгу.

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

Код
    Dim Cell As Range
    Dim Cell2 As Range
    
    For Each Cell In Range("B6:B60000")
        If Cell <> "" Then ActiveSheet.Hyperlinks.Add Range("b" & Rows.Count).End(xlUp), ПутьКФайлу
    Next

    For Each Cell2 In Range("B60001:B160000")
        If Cell2 <> "" Then ActiveSheet.Hyperlinks.Add Range("b" & Rows.Count).End(xlUp), ПутьКФайлу
    Next

Пример файла во вложении.
выгрузка дерева каталогов и файлов с атрибутами
 
Вопрос закрыт, решение найдено
выгрузка дерева каталогов и файлов с атрибутами
 
Цитата
написал:
Цитата
Андрей Прокофьев: как-то сделать выгрузку в эксель инфы о всей файлопомойке
в TotalCommander выбираете папку, всю инфу в которой нужно найти и, собственно, ищете с выводом в отдельное окно. Оттуда можно скопировать все пути в Excel или куда хотите (есть кнопка копирования пути к файлу, которая работает для всех выделенных).
    Про атрибуты я вам сказал - у FSO всё есть, а примеры по моей ссылке очень подробные.
К сожалению нет технической возможности установить тоталкомандер и вообще какой-либо софт туда, где эта файлопомойка находится (удаленный сервер)
Поэтому только эксель.
А про FSO я тоже писал, что я далеко не спец, а любитель и как ни пытался, не смог разобраться, как это все использовать в коде из моего примера.
Сидел и тупо 2 часа подставлял в разные места кода названия переменных, функций и т.п., по аналогии с примерами. Эффекта разумеется ноль.
выгрузка дерева каталогов и файлов с атрибутами
 
:D  очень познавательный диалог у вас получился. Без иронии.
Полностью согласен, что надо бороться с привычкой особо одаренных пользователей создавать файлы с полным ФИО сотрудника в имени и расположенной в 20 подпапке от корня.  :evil:
Именно этим сейчас и занимаемся.
И именно для этого я и пытаюсь как-то сделать выгрузку в эксель инфы о всей файлопомойке, где и столкнулся с проблемами =))
Если поможете, буду безмерно благодарен.

Осталось 2 вопроса, если исключить длину пути:
1. выгрузка правильного размера файла.
2. выгрузка даты создания и даты изменения файла. FileDateTime выгружает именно дату изменения, но не создания.
выгрузка дерева каталогов и файлов с атрибутами
 
проблема в том, что я не могу сообразить, как в коде из моего примера прописать что нужно.
Уже перечитал все про FSO, но там везде примеры совсем не похожи на этот код. Тут какая-то коллекция собирается и из нее уже вся инфа достается =(( я же его тоже не сам написал, а нашел и чуть-чуть доработал.

А вот про длину пути не знал =(( это ограничение никак не обойти? У нас в общем хранилище такая помойка, что там иногда явно будет больше 255 символов
выгрузка дерева каталогов и файлов с атрибутами
 
Прошу вашей помощи.
Осталось всего 2 вопроса, которые я не могу решить, т.к. просто не хватает знаний. =((
1. выгрузка правильного размера файла.
2. выгрузка даты создания и даты изменения файла. FileDateTime выгружает именно дату изменения, но не создания.
3. в идеале еще отфильтровать файлы со свойством скрытый на этапе отбора, но это совсем мелочь, можно и в итоговых результатах отфильтровать.

Пример 5 постами выше
выгрузка дерева каталогов и файлов с атрибутами
 
Цитата
написал:
https://www.script-coding.com/WSH/FileSystemObject.html.#5.2.11 .
вы обо мне слишком хорошего мнения =)) я не настолько силен в VBA, с этим точно сам не справлюсь
выгрузка дерева каталогов и файлов с атрибутами
 
Цитата
написал:
и смотрите что вернула функция
Не работает.
Если размер файла больше 2 147 483 648 (2Гб), но до 4294967296 (4Гб), то да, это сработает, просто добавив к возвращенному значению 4294967296 получаем истинный размер файла.
Но вот если размер файла равен 4294967296, то функция возвращает 0 и в то же время, если размер файла равен 0, то тоже возвращается 0, т.е. функция FileLen не видит разницы между файлом размером 0 байт и 4 Гб.

Как я понял, функция FileLen работает только с файлами до 2Гб корректно, дальше все ломается.
Нужен какой-то другой вариант
Изменено: Андрей Прокофьев - 01.05.2023 20:06:55
выгрузка дерева каталогов и файлов с атрибутами
 
Цитата
дополните условием не равенства тому что нужно исключить.
Заработало!! =)) Спасибо вам огромное.
Хотя, если файл "скрытый", но соответствует маске отбора, то все равное его имя не выводится. (строка 11 - этому файлу я указал атрибут "скрытый" в свойствах)

И теперь еще одна проблема вылезла =((
Если размер файла больше какого-то непонятного значения, то почему-то в ячейку выводится отрицательное и неверное значение размера.
Обновил пример.
По факту размер файла "123.exe" (строка 6) равен 2,14 ГБ (2 307 242 984 байт).
Причем файл "234.exe" (строка 7) с размером 1,95 ГБ (2 094 611 768 байт) выводится нормально.

Экспериментально выяснил, что размер файла, если он хотя бы на 1 байт больше, чем 2 147 483 647 (ровно 2Гб минус 1 байт), выводится с ошибкой.
Изменено: Андрей Прокофьев - 01.05.2023 18:36:24
выгрузка дерева каталогов и файлов с атрибутами
 
Опять подниму свой вопрос.
Решение выше работает, спасибо.
Я в итоге нашел еще одно решение и чуть доработал его. См.приложеный файл.
Но осталась мелочь, которую я решить никак не могу.
Как прописать в макросе исключения по имени файлов в поиске.
В примере, в строках 14 и 16 есть 2 файла с именами "Thumbs.db" и содержащий в начале "~$", а мне их надо исключить из поиска. Это скрытые системные файлы.
Есть варианты, как это сделать?
Изменено: Андрей Прокофьев - 01.05.2023 17:13:16
выгрузка дерева каталогов и файлов с атрибутами
 
Всем привет.
Есть задача выгрузить дерево каталогов и файлов по указанному пути.
Я полностью изучил приемы вот тут https://www.planetaexcel.ru/techniques/3/45/, но они не выдают полной требуемой информации о файле.
Можно ли с помощью Power Query или макросов выгрузить следующую информацию о файлах\папках:
Название папки\файла с расширением, дата создания, дата последнего изменения, размер в килобайтах, путь к файлу, создатель (если указан. НЕ "владелец")?
отбор значений в массиве по условию, вывести не пустые значения из массива по заданному условию
 
Спасибо огромное!
Ну вот ни в жизнь бы не додумался до такой формулы. Крайне признателен.


Игорь, за решение на VBA отдельное спасибо! Обнаружил правда пару багов при работе =), но буду разбираться, возможно это будет более удобное решение.  
отбор значений в массиве по условию, вывести не пустые значения из массива по заданному условию
 
Добрый день.
Никак не могу сообразить с формулой массива, чтобы отбирать только нужные значения в нем по заданному условию.

Суть задачи:
1. По заданному значению в ячейке I3 ("Питер") определить столбец (D) и вывести значения из столбца B, напротив которых в определенном ранее столбце (D) не нулевые\пустые значения. Итог должен быть "Слива", "Ананас", "Манго"
2. Аналогичная зеркальная задача. По заданному значению в ячейке J3 ("Слива") определить строку (5) и вывести значения из строки 2, напротив которых в определенной ранее строке (5) не нулевые\пустые значения. Итог должен быть "Москва", "Питер"
Пример во вложении.

Сам массив постепенно дополняется вручную новыми строками и столбцами, поэтому в формулах он задан "с запасом"

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

Первый
Код
Function КОД_ПАРТИИ(Код_номенклатуры, Дата_производства)
Dim m As String
Dim y As String
Dim d As String

If Код_номенклатуры = 0 Then
    КОД_ПАРТИИ = "Введите код номенклатуры!"
Exit Function
ElseIf Дата_производства = 0 Then
    КОД_ПАРТИИ = "Введите дату!"
Exit Function
End If

If Month(Дата_производства) = 1 Then
    m = "R"
End If

If Year(Дата_производства) = 2019 Then
    y = "X"
End If

If Day(Дата_производства) = 1 Then
    d = "R"
End If

КОД_ПАРТИИ = m & y & d

End Function

Второй
Код
Function TEST1(A, B)
Dim iFullName As String

iFullName = "C:\Program Files\1234.jpg"
If Dir(iFullName) = "" Then
    TEST1 = "ffgg"
    Exit Function
Else
    TEST1 = A & B
End If
End Function

Если файл 1234.jpg есть по указанному пути, все работает, функция выдает верный ответ.

Если файла нет, то функция выдает ошибку #ЗНАЧ!

Расчет по формуле в одной книге, а исходные данные и результат в другой книге.
 
Цитата
StepanWolkoff написал: запишите свою формулу в виде пользовательской функции
получилось! Спасибо =)

Но теперь мне нужна подсказка в другом. вопрос не по теме [МОДЕРАТОР]
Изменено: Андрей Прокофьев - 19.05.2020 02:31:05
Расчет по формуле в одной книге, а исходные данные и результат в другой книге.
 
хм, а это вариант! надо испытать, спасибо за подсказку.

Цитата
StepanWolkoff написал:
PS А вообще, как показывает практика, ворует тот кто охраняет.
Не наш случай =)) у нас похоже ворует тот, кто руководит.
Расчет по формуле в одной книге, а исходные данные и результат в другой книге.
 
Да, я знаю про нее.
Это не защитит от "кражи" алгоритма.
Также как и защиты листа и книги паролями штатными методами - вскрывается на раз.

Идея - именно разнести вычисления и выдачу результатов по разным файлам.
Если украдут клиентский, то в нем ничего не будет, кроме неких "ссылок" на другой файл.
А вот файл с вычислениями (формулой шифра) будет лежать в недоступном месте, откуда пользователи его точно не смогут забрать.
Расчет по формуле в одной книге, а исходные данные и результат в другой книге.
 
Всем добра!
Друзья, подскажите, как и можно ли реализовать мою идею.
Смысл таков.
Есть некая формула, которая по особому алгоритму шифрует изначальные данные и выдает в результате "шифр".
Пользователь имеет эти изначальные данные и должен в итоге получить шифр, но никаким образом не должен видеть саму формулу и принцип формирования "шифра".
Сейчас я это реализовал в одной книге, но на разных листах - пользовательский и служебный.
Пользовательский имеет 2 ячейки для заполнения и одну для результата-"шифра".
Служебный - саму формулу. Этот лист скрыт.
Но у меня есть опасения, что книгу целиком могут скопировать, унести, передать в ненужные руки и алгоритм расшифруют.

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

Простейший пример во вложении. Шифр, естественно, намного сложнее, чем тут. =))
Сравнить строки по значениям в столбцах и выделить одинаковые
 
Это очень круто. Правда есть ошибка. Пока не понял где именно в коде, но он неверно определяет "уникальный kod" и kod1, начиная с 6 строки.
Сравнить строки по значениям в столбцах и выделить одинаковые
 
великолепно! Ваш макрос определяет совпадение по составу, но не определяет совпадение по пропорциям входящих в состав компонентов.
Но это можно доработать просто еще одним столбцом с суммой по условию =))
Спасибо!
Сравнить строки по значениям в столбцах и выделить одинаковые
 
не работает =((
Добавил еще несколько строк, но ваша формула массива их тоже выделяет, хотя рецептуры другие. Вы же формулу просто протягивали по строкам, верно?
Причем я не понял, почему некоторые желтым выделяет, а некоторые зеленым, хотя они все разные.

Я понял! =)) вы суммируете номера столбцов и если сумма одинакова, окрашиваете в какой-либо цвет. Но ведь может быть так, столбцы 2+4+5+9 = 20 и столбцы 8+12 тоже 20.
Изменено: Андрей Прокофьев - 02.04.2020 00:29:30
Сравнить строки по значениям в столбцах и выделить одинаковые
 
Конечно. Если он будет самым последним, вообще идеально =)
Таблица с рецептами у меня статичная, ее просто надо привести в порядок и забыть на еще один год. Потом по новой проверять...
Сравнить строки по значениям в столбцах и выделить одинаковые
 
Цитата
Ігор Гончаренко написал:
по какому признаку вы найдете пару любой из этих зеленых строк
Вручную. Это в разы проще, чем перебирать вручную 400 строк.
Если можно как-то попарно выделять, то это идеально. Причем надо еще и различие "одинаковый - идентичный" оставить.
Сравнить строки по значениям в столбцах и выделить одинаковые
 
Цитата
Valo написал:
а почему 3 и 5 состав не покрашены
Потому что в 3 строке используются компоненты 6 и 10, которых нет в других составах.
А в 5 строке - компоненты 3 и 5, которые тоже не используются в других составах.
Т.е. если два состава имеют даже 9 одинаковых компонентов, а 10го в одном из них нет, это уже разные рецептуры.

Поясню на простом примере.
Блины обычные и блины с начинкой. Блины обычные рецепт - вода 100 гр, мука 100 гр, яйца 2 шт, сахар 20 гр. Блины с начинкой - вода 100 гр, мука 100 гр, яйца 2 шт, сахар 20 гр, начинка 50 гр.
Это два разных рецепта из-за наличия начинки в одном из них.

Но! Если я делаю Блины обычные рецепт - вода 100 гр, мука 100 гр, яйца 2 шт, сахар 20 гр. и Блины обычные рецепт - вода 100 гр, мука 100 гр, яйца 2 шт, сахар 60 гр., то это уже одинаковые рецепты по составу, но разные по пропорциям.
Изменено: Андрей Прокофьев - 01.04.2020 22:59:46
Сравнить строки по значениям в столбцах и выделить одинаковые
 
Цитата
Ігор Гончаренко написал:
это КРЕПКО ПОМОГЛО??вам именно это нужно?
Да, если учесть, что строк более 400, а одинаковых из них будет процентов 10-15, не больше
И вы не заметили, что зеленым будут выделяться совершенно одинаковые строки (с идентичными числовыми значениями в столбцах). И эти зеленые составят половину от этих 10-15 процентов.
Итого желтых останется только 20-30 строк из 400+.
Сравнить строки по значениям в столбцах и выделить одинаковые
 
Эм. У вас все строки желтым просто выделены. Либо я опять не понял, либо вы решили пошутить.
Неужели я и правда непонятно описал, что хочу получить в итоге?

Или вы хотели сказать, что у меня в результате все сроки могут оказаться желтыми?
нет, такого точно не будет. Максимум 50-70 строк будут одинаковыми или даже идентичными.
Изменено: Андрей Прокофьев - 01.04.2020 22:27:24
Сравнить строки по значениям в столбцах и выделить одинаковые
 
Друзья, уже всю голову сломал.
Существует ли какой-то быстрый метод сравнить строки в таблице?

Суть задачи такова.
Есть столбец "А" со списком составов неких веществ.
В столбцах "B:K" указаны некие химические компоненты.
На пересечении строки и столбца указано цифрами, сколько конкретно берется компонента для этого вещества.
Другими словами это таблица рецептур.

Необходимо в таблице выделить каким-либо образом (цветом или еще как-то):
1. Вещества (строки) в которых используются одни и те же компоненты. В данном примере выделены зеленым. Компоненты одинаковые, но пропорции разные.
2. Вещества (строки) с совершенно одинаковыми рецептами. В данном примере выделены желтым. И компоненты и пропорции одинаковые.

В полной таблице у меня 400+ строк (веществ) и 200+ столбцов (компонентов).

Забыл добавить, что всю таблицу можно транспонировать, если это потребуется.
Изменено: Андрей Прокофьев - 01.04.2020 22:03:29 (забыл =)))
как сделать динамическую таблицу с данными из таблиц на разных листах
 
Цитата
vikttur написал:
Об этом нужно сразу сообщать.  
Сообщил во втором сообщении.
Страницы: 1 2 3 4 5 След.
Наверх