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

Вход

Регистрация

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

 

= Мир MS Excel/применить макрос к файлам в папке - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
применить макрос к файлам в папке
Lisavad Дата: Четверг, 19.09.2013, 16:30 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
скрипт открывает все файлы ексель по очереди и там выполняет скрипт qqq. масое главное, то что если применить скрипт qqq отдельно то все работает. а если применить вместе два скрипта, то скрипт не выполняет нужные действия.

[vba]
Код


Private Sub CommandButton1_Click()

Dim FSO As Object
Dim TheFolder As Object, TheFiles As Object, AFile As Object
Stop
'MyPath = "c:\1111\"""
Application.ScreenUpdating = False
'Set wb = Workbooks.Add(template:=xlWorksheet)
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TheFolder = FSO.GetFolder("C:\1111\") 'Каталог, откуда суммировать
Set TheFiles = TheFolder.Files

For Each AFile In TheFiles
If UCase(FSO.GetExtensionName(AFile.Path)) = "XLS" Then
Set xls = Workbooks.Open(Filename:=AFile, ReadOnly:=False)

'Application.Run ("Шпола.xls!qqq")
'Application.Run ("Шпола1.xls!qqq")

'xls.Sheets(1).Copy 'After:=wb.Sheets(wb.Sheets.Count)
'xls.Sheets(2).PasteSpecial Paste:=xlPasteValues
'xls.ActiveSheet.Copy After:=Sheets(1)
'Sheets(1).Copy After:=Sheets(Sheets.Count)
'Sheets(Sheets.Count).Name = ("Результат")
'Sheets(1).Activate
qqq
xls.ActiveSheet.Copy After:=Sheets(ActiveSheet.Index)

'Cells(1, 5) = strResult

'ThisWorkbook.Worksheets(1).Activate
End If

'Sheets(2).Columns("A:C").Select
'    Selection.ClearContents
   

ActiveWorkbook.Save
ActiveWorkbook.Close True
Next

MsgBox "Виконано"

End Sub

Sub qqq()

' Макрос1 Макрос
' Макрос записан 17.09.2013 (Администратор)
'

' a - первое значение имени, Б- второе значение имени
' Set wsh = Workbooks.Worksheets(1)
Dim a, b As String
  Dim n, m As Integer
  Dim sum As Currency
   
  'Stop
   
  With ActiveSheet
   n = 1
   m = 1
   a = .Cells(n, 1)
Do While (.Cells(n, 1) <> vbNullString)
     sum = 0
     Do
      If .Cells(n, 2) = "ЕСВ ФОТ (работники)" Then sum = sum + .Cells(n, 3)
      n = n + 1
      b = .Cells(n, 1)
      
     Loop Until (a <> b)
     If sum <> 0 Then
       .Cells(m, 4) = a
       .Cells(m, 5) = sum
       m = m + 1
     End If
  a = b
   
  Loop
  End With
   
  End Sub

[/vba]
 
Ответить
Сообщениескрипт открывает все файлы ексель по очереди и там выполняет скрипт qqq. масое главное, то что если применить скрипт qqq отдельно то все работает. а если применить вместе два скрипта, то скрипт не выполняет нужные действия.

[vba]
Код


Private Sub CommandButton1_Click()

Dim FSO As Object
Dim TheFolder As Object, TheFiles As Object, AFile As Object
Stop
'MyPath = "c:\1111\"""
Application.ScreenUpdating = False
'Set wb = Workbooks.Add(template:=xlWorksheet)
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TheFolder = FSO.GetFolder("C:\1111\") 'Каталог, откуда суммировать
Set TheFiles = TheFolder.Files

For Each AFile In TheFiles
If UCase(FSO.GetExtensionName(AFile.Path)) = "XLS" Then
Set xls = Workbooks.Open(Filename:=AFile, ReadOnly:=False)

'Application.Run ("Шпола.xls!qqq")
'Application.Run ("Шпола1.xls!qqq")

'xls.Sheets(1).Copy 'After:=wb.Sheets(wb.Sheets.Count)
'xls.Sheets(2).PasteSpecial Paste:=xlPasteValues
'xls.ActiveSheet.Copy After:=Sheets(1)
'Sheets(1).Copy After:=Sheets(Sheets.Count)
'Sheets(Sheets.Count).Name = ("Результат")
'Sheets(1).Activate
qqq
xls.ActiveSheet.Copy After:=Sheets(ActiveSheet.Index)

'Cells(1, 5) = strResult

'ThisWorkbook.Worksheets(1).Activate
End If

'Sheets(2).Columns("A:C").Select
'    Selection.ClearContents
   

ActiveWorkbook.Save
ActiveWorkbook.Close True
Next

MsgBox "Виконано"

End Sub

Sub qqq()

' Макрос1 Макрос
' Макрос записан 17.09.2013 (Администратор)
'

' a - первое значение имени, Б- второе значение имени
' Set wsh = Workbooks.Worksheets(1)
Dim a, b As String
  Dim n, m As Integer
  Dim sum As Currency
   
  'Stop
   
  With ActiveSheet
   n = 1
   m = 1
   a = .Cells(n, 1)
Do While (.Cells(n, 1) <> vbNullString)
     sum = 0
     Do
      If .Cells(n, 2) = "ЕСВ ФОТ (работники)" Then sum = sum + .Cells(n, 3)
      n = n + 1
      b = .Cells(n, 1)
      
     Loop Until (a <> b)
     If sum <> 0 Then
       .Cells(m, 4) = a
       .Cells(m, 5) = sum
       m = m + 1
     End If
  a = b
   
  Loop
  End With
   
  End Sub

[/vba]

Автор - Lisavad
Дата добавления - 19.09.2013 в 16:30
Alex_ST Дата: Четверг, 19.09.2013, 18:04 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3214
Репутация: 615 ±
Замечаний: 0% ±

2003
Не вникая в суть вычислений:
1. Где располагаются коды Ваших процедур?
2. Переменная xls в процедуре Private Sub CommandButton1_Click не определена.
3. Stop Вам в её начале не мешает?
4. Где должно идти накопление результата?
5. Открывая в цикле файл, Вы уверены, что в нём будет активна нужная страница? Если нет, то не используйте ActiveSheet, а указывайте имя нужной страницы.
6. …
Выложите в конце-концов пример: пару файлов, из которых Вы хотите собирать данные и файл, в котором они будут накапливаться. И сделайте пояснения, что хотите получить.



С уважением,
Алексей
MS Excel 2003 - the best!!!


Сообщение отредактировал Alex_ST - Четверг, 19.09.2013, 18:05
 
Ответить
СообщениеНе вникая в суть вычислений:
1. Где располагаются коды Ваших процедур?
2. Переменная xls в процедуре Private Sub CommandButton1_Click не определена.
3. Stop Вам в её начале не мешает?
4. Где должно идти накопление результата?
5. Открывая в цикле файл, Вы уверены, что в нём будет активна нужная страница? Если нет, то не используйте ActiveSheet, а указывайте имя нужной страницы.
6. …
Выложите в конце-концов пример: пару файлов, из которых Вы хотите собирать данные и файл, в котором они будут накапливаться. И сделайте пояснения, что хотите получить.

Автор - Alex_ST
Дата добавления - 19.09.2013 в 18:04
Hugo Дата: Четверг, 19.09.2013, 18:13 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3703
Репутация: 792 ±
Замечаний: 0% ±

365
Кроссы на планете и на кибере.

На кибере дело продвинулось дальше всех, на планете тему думаю прикроют - название не по правилам.



webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеКроссы на планете и на кибере.

На кибере дело продвинулось дальше всех, на планете тему думаю прикроют - название не по правилам.


Автор - Hugo
Дата добавления - 19.09.2013 в 18:13
Alex_ST Дата: Четверг, 19.09.2013, 18:18 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3214
Репутация: 615 ±
Замечаний: 0% ±

2003
Я-то думал, что нЕкому помочь, раз никто не откликается на вопрос.
Ну и ладно, тогда забудем. Тем более, что свободное время у меня всё равно уже закончилось (закрыл больничный лист, завтра на работу, а там СТОЛЬКО всего навалили!!!)



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеЯ-то думал, что нЕкому помочь, раз никто не откликается на вопрос.
Ну и ладно, тогда забудем. Тем более, что свободное время у меня всё равно уже закончилось (закрыл больничный лист, завтра на работу, а там СТОЛЬКО всего навалили!!!)

Автор - Alex_ST
Дата добавления - 19.09.2013 в 18:18
KuklP Дата: Четверг, 19.09.2013, 20:42 | Сообщение № 5
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Игорь, ну чего бы и не дать ссылки на кросс:
http://www.planetaexcel.ru/forum....e425700
на кибер не даем, из-за жлобства самого кибера :p
P.S. Леша, привет, рад видеть. hands


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728


Сообщение отредактировал KuklP - Четверг, 19.09.2013, 20:44
 
Ответить
СообщениеИгорь, ну чего бы и не дать ссылки на кросс:
http://www.planetaexcel.ru/forum....e425700
на кибер не даем, из-за жлобства самого кибера :p
P.S. Леша, привет, рад видеть. hands

Автор - KuklP
Дата добавления - 19.09.2013 в 20:42
Alex_ST Дата: Четверг, 19.09.2013, 21:21 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3214
Репутация: 615 ±
Замечаний: 0% ±

2003
[offtop]Привет, Серёга! Давно не общались - бешеный завал на работе уже больше полугода. На форумы только иногда удаётся заглянуть одним глазком, а самому что-нибудь писануть - нет.[/offtop]



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
Сообщение[offtop]Привет, Серёга! Давно не общались - бешеный завал на работе уже больше полугода. На форумы только иногда удаётся заглянуть одним глазком, а самому что-нибудь писануть - нет.[/offtop]

Автор - Alex_ST
Дата добавления - 19.09.2013 в 21:21
  • Страница 1 из 1
  • 1
Поиск:

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