Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Повторы просматриваемых файлов - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Повторы просматриваемых файлов
A_3485 Дата: Пятница, 28.11.2014, 08:55 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 146
Репутация: 0 ±
Замечаний: 40% ±

2007
Добрый день уважаемые форумчане!
Подскажите пожалуйста каким способом можно определить повторяющийся файл в каталоге. Поясню свой вопрос. Из за глюков вспомогательного ПО в общую обработку файлов иногда попадают файлы с одинаковым именем и информация задваивается. Из-за этого портится вся общая отчетность.
 
Ответить
СообщениеДобрый день уважаемые форумчане!
Подскажите пожалуйста каким способом можно определить повторяющийся файл в каталоге. Поясню свой вопрос. Из за глюков вспомогательного ПО в общую обработку файлов иногда попадают файлы с одинаковым именем и информация задваивается. Из-за этого портится вся общая отчетность.

Автор - A_3485
Дата добавления - 28.11.2014 в 08:55
Мурад Дата: Пятница, 28.11.2014, 09:34 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 513
Репутация: 18 ±
Замечаний: 0% ±

Excel 2007
Доброе утро! Все файлы с расширением .xlsx? Все в одной папке?
 
Ответить
СообщениеДоброе утро! Все файлы с расширением .xlsx? Все в одной папке?

Автор - Мурад
Дата добавления - 28.11.2014 в 09:34
Мурад Дата: Пятница, 28.11.2014, 09:42 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 513
Репутация: 18 ±
Замечаний: 0% ±

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

Автор - Мурад
Дата добавления - 28.11.2014 в 09:42
Мурад Дата: Пятница, 28.11.2014, 10:34 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 513
Репутация: 18 ±
Замечаний: 0% ±

Excel 2007
еще вопрос, точно ли имена файлов одинаковые, или к дубликатам прибавляется (1), (2) или что-то типа этого? Файлы с одинаковым именем и расширением в одной папке находиться не могут (попробовал закинуть в папку такой же файл, система предлагает заменить старый или добавить префикс)
 
Ответить
Сообщениееще вопрос, точно ли имена файлов одинаковые, или к дубликатам прибавляется (1), (2) или что-то типа этого? Файлы с одинаковым именем и расширением в одной папке находиться не могут (попробовал закинуть в папку такой же файл, система предлагает заменить старый или добавить префикс)

Автор - Мурад
Дата добавления - 28.11.2014 в 10:34
A_3485 Дата: Пятница, 28.11.2014, 10:34 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 146
Репутация: 0 ±
Замечаний: 40% ±

2007
Все файлы расширения *.txt.
Я понимаю, что нужно делать через DIR а вот как внутри организовать проверку на повторы не знаю.
 
Ответить
СообщениеВсе файлы расширения *.txt.
Я понимаю, что нужно делать через DIR а вот как внутри организовать проверку на повторы не знаю.

Автор - A_3485
Дата добавления - 28.11.2014 в 10:34
A_3485 Дата: Пятница, 28.11.2014, 10:35 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 146
Репутация: 0 ±
Замечаний: 40% ±

2007
Добавляется копия с присоединением префикса (1) и т.д. Я префикс убираю функцийе MID.
 
Ответить
СообщениеДобавляется копия с присоединением префикса (1) и т.д. Я префикс убираю функцийе MID.

Автор - A_3485
Дата добавления - 28.11.2014 в 10:35
nilem Дата: Пятница, 28.11.2014, 11:17 | Сообщение № 7
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
Привет, A_3485,
может, как-то вот так попробовать?:
[vba]
Код
Sub ertert()
Dim Fold As String, f As String
Dim sFlNames As String, t As String

If Right(ThisWorkbook.Path, 1) <> "\" Then Fold = ThisWorkbook.Path & "\" Else Fold = ThisWorkbook.Path
f = Dir(Fold & "*.txt", vbNormal)

Do While f <> ""
     If f <> ThisWorkbook.Name Then
         t = IIf(InStr(f, "("), Split(f, "(")(0), Split(f, ".")(0))
          
         If InStr(sFlNames, t) = 0 Then
             sFlNames = sFlNames & t & "~"
             ' не повторяющийся файл пишем в 1-й столбик
             Cells(Rows.Count, 1).End(xlUp)(2, 1).Value = f
         Else
             ' повторяющийся файл пишем во 2-й столбик
             Cells(Rows.Count, 2).End(xlUp)(2, 1).Value = f
         End If
     End If
     f = Dir()
Loop
End Sub
[/vba]


Яндекс.Деньги 4100159601573
 
Ответить
СообщениеПривет, A_3485,
может, как-то вот так попробовать?:
[vba]
Код
Sub ertert()
Dim Fold As String, f As String
Dim sFlNames As String, t As String

If Right(ThisWorkbook.Path, 1) <> "\" Then Fold = ThisWorkbook.Path & "\" Else Fold = ThisWorkbook.Path
f = Dir(Fold & "*.txt", vbNormal)

Do While f <> ""
     If f <> ThisWorkbook.Name Then
         t = IIf(InStr(f, "("), Split(f, "(")(0), Split(f, ".")(0))
          
         If InStr(sFlNames, t) = 0 Then
             sFlNames = sFlNames & t & "~"
             ' не повторяющийся файл пишем в 1-й столбик
             Cells(Rows.Count, 1).End(xlUp)(2, 1).Value = f
         Else
             ' повторяющийся файл пишем во 2-й столбик
             Cells(Rows.Count, 2).End(xlUp)(2, 1).Value = f
         End If
     End If
     f = Dir()
Loop
End Sub
[/vba]

Автор - nilem
Дата добавления - 28.11.2014 в 11:17
A_3485 Дата: Пятница, 28.11.2014, 11:54 | Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 146
Репутация: 0 ±
Замечаний: 40% ±

2007
Вариант, хороший но хочется без привлечения Листов Excel.
 
Ответить
СообщениеВариант, хороший но хочется без привлечения Листов Excel.

Автор - A_3485
Дата добавления - 28.11.2014 в 11:54
Мурад Дата: Пятница, 28.11.2014, 13:50 | Сообщение № 9
Группа: Проверенные
Ранг: Ветеран
Сообщений: 513
Репутация: 18 ±
Замечаний: 0% ±

Excel 2007
По вашему запросу модератор форума www.cyberforum.ru Аксима предоставила решение:
[vba]
Код
Sub FindDuplicateFiles()
      Dim d As Object, p As Long, n As String, k As Variant
      Set d = CreateObject("Scripting.Dictionary")
      n = Dir("C:\Temp\" & "*.txt") 'Вместо C:\Temp\ необходимо указать путь к папке с файлами.
      While n <> vbNullString
          n = Left(n, Len(n) - 4) 'Отсекаем расширение.
          p = InStrRev(n, "(")
          If p > 0 Then If IsNumeric(Mid(n, p + 1, 1)) Then n = Trim(Left(n, p - 1)) 'Отсекаем скобки с цифрами (если есть).
          If d.Exists(n) Then d(n) = 1& Else d.Add n, 0& 'Запоминаем имя файла, либо ставим пометку, что найден дубликат.
          n = Dir
      Wend
      For Each k In d
          If d(k) = 1& Then Debug.Print k & ".txt" 'Выводим дубликаты.
      Next k
End Sub   
   
[/vba]


Сообщение отредактировал Мурад - Пятница, 28.11.2014, 13:52
 
Ответить
СообщениеПо вашему запросу модератор форума www.cyberforum.ru Аксима предоставила решение:
[vba]
Код
Sub FindDuplicateFiles()
      Dim d As Object, p As Long, n As String, k As Variant
      Set d = CreateObject("Scripting.Dictionary")
      n = Dir("C:\Temp\" & "*.txt") 'Вместо C:\Temp\ необходимо указать путь к папке с файлами.
      While n <> vbNullString
          n = Left(n, Len(n) - 4) 'Отсекаем расширение.
          p = InStrRev(n, "(")
          If p > 0 Then If IsNumeric(Mid(n, p + 1, 1)) Then n = Trim(Left(n, p - 1)) 'Отсекаем скобки с цифрами (если есть).
          If d.Exists(n) Then d(n) = 1& Else d.Add n, 0& 'Запоминаем имя файла, либо ставим пометку, что найден дубликат.
          n = Dir
      Wend
      For Each k In d
          If d(k) = 1& Then Debug.Print k & ".txt" 'Выводим дубликаты.
      Next k
End Sub   
   
[/vba]

Автор - Мурад
Дата добавления - 28.11.2014 в 13:50
Мурад Дата: Пятница, 28.11.2014, 13:56 | Сообщение № 10
Группа: Проверенные
Ранг: Ветеран
Сообщений: 513
Репутация: 18 ±
Замечаний: 0% ±

Excel 2007
Решение дано для условия, при котором в папке содержатся одноименные файлы, различающиеся только цифровой добавкой _(N)
 
Ответить
СообщениеРешение дано для условия, при котором в папке содержатся одноименные файлы, различающиеся только цифровой добавкой _(N)

Автор - Мурад
Дата добавления - 28.11.2014 в 13:56
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!