Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.10.2009, 19:49   #1
Rossoman
Пользователь
 
Регистрация: 14.10.2009
Сообщений: 14
По умолчанию Поиск файла до первого вхождения?

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

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


Прелюдия:
Открыт отчет, заполненный ячейками, макрос ищет выделенную желтым ячейку с размером, если находит файл .FileName = "bb?" & xxNameIst & ".txt", который составляется из столбца левее(желтой ячейки)
If Worksheets("Лист1").Cells(i, 6).Interior.ColorIndex = 6 Then
xxNameIst = Right(Cells(i, 5), 7)
то он считывает размер файла, записывает его в эту ячейку, и снимает желтый... ну там еще один ньюанс с xFileK, но это можно опустить, это еще одна проверка.

Код:
Sub Avtomat()
Dim xxStroka, xxStolbec, xxSize, xxSize2, xkkk, i As Integer
Dim xxNameIst, xxS, xFileK, xa, xxBukva, xxK, xxK2, xDate3 As String

ActiveSheet.Unprotect
Application.ScreenUpdating = False

xFileK = "D:\ini\spisok.txt" 'файл формата: "CAZ - 1,2"

   xxStroka = 4
   xxStolbec = 2
   While Worksheets("Лист1").Cells(xxStroka, xxStolbec).Value <> ""
   xxStroka = xxStroka + 1
   Wend
   xkkk = 0
   xDate3 = Format(Date, "yyyy")
   
   
   For i = 4 To xxStroka
   If Worksheets("Лист1").Cells(i, 6).Interior.ColorIndex = 6 Then
   xxNameIst = Right(Cells(i, 5), 7)


   With Application.FileSearch
   .LookIn = "D:\СКАНЫ\" & xDate3 & "\" 'папка с файлами
   .SearchSubFolders = True
   .FileType = msoFileTypeAllFiles
   .FileName = "bb?" & xxNameIst & ".txt"

'вот здесь я понимаю он ищет все вхождения
'а было бы хорошо чтоб он нашел файл и начал уже выполнять операцию с этим вхождением
   If .Execute >= 1 Then
   xa = .FoundFiles(1)
   xxSize = Fix(FileLen(xa) / 1024) + 2
   xxBukva = Mid(xa, Len(xa) - 10, 3)
   Cells(i, 6).Value = xxSize
   Cells(i, 6).Interior.ColorIndex = 0
   xkkk = xkkk + 1
      Open xFileK For Input As #1
      Do While Not EOF(1)
      Line Input #1, xxS
      xxK = LCase(Left(xxS, 3))
      xxSize2 = 0
      If xxBukva = xxK Then
      xxK2 = Right(xxS, 3)
      xxSize2 = Fix(xxSize * xxK2 - xxSize)
      End If
      Loop
      Close #1
   If xxSize2 <> 0 Then
   Cells(i, 7).Value = xxSize2
   Cells(i, 7).Interior.ColorIndex = 0
   End If
   End If
   
   End With

   End If
   Next i
  MsgBox xkkk
  Application.ScreenUpdating = True
End Sub
Rossoman вне форума Ответить с цитированием
Старый 16.10.2009, 05:04   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

1. Метод FileSearch лучше не использовать, ибо разработчики "Microsoft" от него отказались. Для поиска требуемого файла используйте цикл Do...Loop.
2. Для записи данных в txt файл очень часто более рационально использовать метод Write (WriteLine) объекта TextStream из FileSystemObject.
3. Прикрепите файл с исходными данными и подробно опишите задачу, что требуется сделать. В таком случае, Вы получите более правильный ответ, нежели восстанавливать задачу, разбирая Ваш код.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 16.10.2009, 19:49   #3
Rossoman
Пользователь
 
Регистрация: 14.10.2009
Сообщений: 14
По умолчанию

[стер сообщение]

Последний раз редактировалось Rossoman; 17.10.2009 в 16:27.
Rossoman вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Vba определить количество вхождения строки S1 в строку S2 Berckyt Помощь студентам 4 17.08.2011 20:24
Поиск первого файла с заданным расширением Mixasik Помощь студентам 1 06.06.2009 20:16
Задача на строки и вхождения Mrs.BlondieProger) Паскаль, Turbo Pascal, PascalABC.NET 5 25.06.2008 21:15
Поиск файла БД D-mon БД в Delphi 12 29.05.2008 13:26