![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 14.08.2009
Сообщений: 66
|
![]()
Всем привет!
Подскажите, пожалуйста, что не так! Мне нужно, чтобы один и тот же макрос выполнялся во всех книгах в одной папке одновременно. Сам макрос расположен в файле МАКРОС. Макрос выполняет суммирование по облигациям рыночной стоимости и НКД. Код: Sub Auto_Whrite_In_Books() Dim sFolder As String, sFiles As String, li As Long With Application.FileDialog(msoFileDialo gFolderPicker) If .Show = False Then Exit Sub sFolder = .SelectedItems(1) End With Application.ScreenUpdating = False sFiles = Dir(sFolder & Application.PathSeparator & "*.xlsx") Do While sFiles <> "" Workbooks.Open sFiles Dim i As Double, n As Double For i = ActiveWorkbook.Sheets(1).Cells.Find ("Облигации").Row + 1 To ActiveWorkbook.Sheets(1).Cells.Find ("Итого Облигации предприятий:").Row - 1 For n = ActiveWorkbook.Sheets(1).Cells.Find ("% по облигациям").Row + 1 To ActiveWorkbook.Sheets(1).Cells.Find ("Итого % по облигациям:").Row - 1 If Mid(Cells(n, 1), InStr(Cells(n, 1), "№")) & "; " = Mid(Cells(i, 1), InStr(Cells(i, 1), "№")) Then Cells(i, 29) = Cells(i, 29) + Cells(n, 29) Cells(i, 29).NoteText "= A" & i & "+ A" & n & "" Exit For End If: Next: Next: ActiveWorkbook.Close True sFiles = Dir Loop Application.ScreenUpdating = True End Sub ПОДСКАЖИТЕ, что не так? ОШИБОК НЕТ, НО И НЕ РАБОТАЕТ! Заранее большое спасибо |
![]() |
![]() |
![]() |
#2 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
![]()
Вот так будет работать:
Код:
sFiles = Dir(sFolder & Application.PathSeparator & "*.xlsx") |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 14.08.2009
Сообщений: 66
|
![]()
Спасибо большое!
Только теперь он ошибку пишет: Invalide procedure call or argument в строчке If Mid(Cells(n, 1), InStr(Cells(n, 1), "№")) & "; " = Mid(Cells(i, 1), InStr(Cells(i, 1), "№")) Then |
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 14.08.2009
Сообщений: 66
|
![]()
Правда ошибка выдается только для одного файла ПИ_TIP
Если его удалить из папки, то макрос работает! В чем проблема с данным файлом? |
![]() |
![]() |
![]() |
#5 | |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
![]() Цитата:
Ошибку вызывает эта часть кода: Код:
Соответственно, InStr(Cells(i, 1), "№") возвращает 0 А функция Mid не может считать текст, начиная с нулевой позиции... |
|
![]() |
![]() |
![]() |
#6 |
Участник клуба
Регистрация: 10.08.2009
Сообщений: 1,796
|
![]()
Здравствуйте Наталья.
Код вполне работоспособный Код:
Вынос текста в константы не только уменьшает нагрузку кода избавляя от необходимости неоднократной интерпретации, но и делает код более удобочитаемым. Использование переменных для однократного присвоения значения объекта лучше чем многократное обращение к объекту - "For i = ActiveWorkbook.Sheets(1).Cells" в цикле. Евгений. P.S. код заключенный в тэги [соde] ... [/соde] будет тоже "более удобочитаемым". ![]() Последний раз редактировалось Teslenko_EA; 06.11.2009 в 18:01. |
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 14.08.2009
Сообщений: 66
|
![]()
Огромное Вам всем спасибо за помощь, за разъяснения и подсказки!
Очень многому меня научили! С самыми наилучшими пожеланиями, Наталья |
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 20.01.2010
Сообщений: 53
|
![]()
Классно, отличная тема!
Последний раз редактировалось 1134; 08.07.2010 в 13:21. Причина: Решил проблему сам :) |
![]() |
![]() |
![]() |
#9 | |
Новичок
Джуниор
Регистрация: 24.12.2012
Сообщений: 3
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#10 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
![]()
ertree, данный код должен работать в любой версии Windows.
Возможно, вы как-то не так его используете? В чем проявляется проблема? Выскакивает ошибка? Если да, то на какой строке? |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как в указанной директории узнать названия всех папок | evgenrpo | Общие вопросы C/C++ | 5 | 08.06.2009 14:20 |
Как заставить работать CheckBox? | ridmal | Microsoft Office Word | 1 | 21.05.2009 09:47 |
Как вывести название папок из указанной папки? | zotox | Помощь студентам | 1 | 01.05.2009 14:37 |
Как заставить работать php? | yourself | Помощь студентам | 9 | 20.05.2008 08:08 |
Как заставить работать dll ? | Volkogriz | Общие вопросы Delphi | 10 | 13.12.2007 10:24 |