Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 10.06.2013
Сообщений: 23

Нужен совет в коде

19.09.2013, 13:07. Показов 2799. Ответов 41
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть парочка файликов в екселе они находятся в папке. нужно чтобы применялся скрипт на всех файлах. но он не применяется почему то.

я уже реализовал, что все файлы открываются, копируется лист и там нужно чтобы выполнился скрипт qqq. но почему то он не хочет делать нужные действия. если присвоим статическое имя к скрипту, то работает, а для всех файлов не работает.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
 Sub qqq()
 
' Макрос1 Макрос
' Макрос записан 17.09.2013 (Администратор)
'
 
' a - первое значение имени, Б- второе значение имени
 
 Dim a, b As String
 Dim n, m As Integer
 Dim sum As Currency
  n = 1
  m = 1
  a = Cells(n, 1)
Do While (Cells(n, 1) <> "")
    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 Sub
 
Private Sub CommandButton1_Click()
 
Dim FSO As Object
Dim TheFolder As Object, TheFiles As Object, AFile As Object
 
'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
ActiveSheet.Copy After:=Sheets(ActiveSheet.Index)
 
qqq
 
 
End If
Sheets(2).Columns("A:C").Select
    Selection.ClearContents
  
 
ActiveWorkbook.Save
ActiveWorkbook.Close True
Next
 
MsgBox "Виконано"
 
End Sub
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.09.2013, 13:07
Ответы с готовыми решениями:

Ошибка в коде. Нужен совет
Всем привет! Помогите, пожалуйста, разобраться. Необходимо написать: Написать функцию (метод), записывающий в массив-матрицу...

Нужен совет с ТЗ
При устройстве на работу дали одно из заданий, которое я не понял как правильно интерпретировать: Написать метод httpTitle(url) для...

Нужен совет
Извините если не в ту тему, просто не знал куда написать. В компании 8 человек. У каждого сотрудника свой ПК. Чтобы получить...

41
1261 / 147 / 32
Регистрация: 11.02.2011
Сообщений: 418
19.09.2013, 13:37
Поменяйте в начале qqq
Visual Basic
1
2
Sub qqq(name)
set wsh = Workbooks(name).Worksheets(1)
В кукуку же поменяйте все надписи Cells на wsh.Cells (напр. a = wsh.Cells(n, 1))
В вызове вместо qqq пишем qqq(AFile.name)

Ну, или не интересно сделать
В 60 строку написать Workbooks(AFile.name).Worksheets(1).Acti vate
А в 62 ThisWorkbook.Worksheets(1).Activate
1
0 / 0 / 0
Регистрация: 10.06.2013
Сообщений: 23
19.09.2013, 14:38  [ТС]
не работает так
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
19.09.2013, 15:37
Как я понимаю. Вы вызываете листинг qqq. А он не знает что и с чем. Попробуйте перед вызовом, присвоить какое-то абстрактное имя Вашему Activesheet и передать его как аргумент. А qqq подравьте, что б он понимал, что от него хотят. (Или, как минимум, qqq начните с With Activesheet (если без передачи аргумента), с коректировкой кода ниже.)
0
0 / 0 / 0
Регистрация: 10.06.2013
Сообщений: 23
19.09.2013, 15:41  [ТС]
можете написать более бодробнее как это все выглядит. пожалуйста
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
19.09.2013, 15:51
Ели так, на бегу, тогда замените код qqq этим. Будет работать, если в даный момент активный нужный лист.
Я там поставил точку остановки (Stop). Дальше идите вручную (через F8), и смотрите что будет. Потом Stop удалите.
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Sub qqq()
 
 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
0
0 / 0 / 0
Регистрация: 10.06.2013
Сообщений: 23
19.09.2013, 15:56  [ТС]
а где же закрыть With пишет ошибку, что незакрит with
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
19.09.2013, 15:56
Извините, уже исправил (смотрите там же).
0
0 / 0 / 0
Регистрация: 10.06.2013
Сообщений: 23
19.09.2013, 16:02  [ТС]
да я уже поставил там виз, но не пашет. ща дам ссилку на файл попробуете.
Ссылка удалена
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
19.09.2013, 16:08
Ща эту ссылку админы удалят - нельзя . Кидайте сюда.

Добавлено через 2 минуты
Успел (наверное, обедают )
0
0 / 0 / 0
Регистрация: 10.06.2013
Сообщений: 23
19.09.2013, 16:14  [ТС]
сделайте копию єтого файла и поробуйте. сначала запустите в файле что я скинул скрипт qqq и увидите что он делает

Добавлено через 1 минуту
можете написать более бодробнее как это все выглядит. пожалуйста

Добавлено через 3 минуты
разобрались или рассказать более подробнее?
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
19.09.2013, 16:24
Вы собираете сумму по фамилиям. Но проблема у Вас в другом, я думаю.
Щелкаете на кнопку, выбираете файл (-ы) и дальше их этим кодом обрабатываете. Правильно? Задача - научить qqq работать с этими файлами. Правильно?
0
0 / 0 / 0
Регистрация: 10.06.2013
Сообщений: 23
19.09.2013, 16:37  [ТС]
да все верно

Добавлено через 9 минут
ФАйли перебераются из папки по очереди
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
19.09.2013, 16:37
Святая Мария! Какой я умный!
Тогда оттуда и нужно начинать.
1. Из всех книг вы собираете данные. Вопрос - КУДА? Или это просто обработка листов с результатами рядом? Если да - тогда полученные результаты раньше (ст.D, E) нужно чистить?
2. Самое главное - кидайте еще одну книгу с подобным листом. Тогда и я прогоню нормально, и Вам понятней будет.
3. Откуда исх. данные попадают на листы?
4. Передайте директору, что скупее его я еще не встречал. (зарплата с 5 знаками, и после запятой!!! Это так нужно?)
И просто интересно - почему на двух языках?
А с With ... работает, просто проблема в коде кнопки.
0
0 / 0 / 0
Регистрация: 10.06.2013
Сообщений: 23
19.09.2013, 16:55  [ТС]
лист1 копируется и на втором листе применяется скрипт, а столбци d и e удаляются. сделайте просто копию того файла там фалы будут идентичные только с роазними данными

Добавлено через 15 минут
если у вас есть скайп тогда можно держать связь по скайпу мой Lisavad
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
19.09.2013, 17:13
Считаем, что в книгах по одному листу?
Ага, я его очень люблю (скайп). Особенно после пива, что б весь мир на меня посмотрел
И все будет, просто меня тут дергают (красивый я такой, наверно )
0
0 / 0 / 0
Регистрация: 10.06.2013
Сообщений: 23
19.09.2013, 17:18  [ТС]
после некоторых еспериментов, понял, что qqq просто не пишется в файлах. нужно его заставить его виполнятся на втором листе или первом.

Добавлено через 4 минуты
да по одному и создается его копия
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
19.09.2013, 17:26
А копия для чего? Закопаетесь в них - ни одна инспекция Вас не найдет. Давайте так. Получаем откуда. Обрабатываем каждый по очереди. результаты в одну книгу. Над каждой таблицей - строка, откуда получили (имя книги). Так пойдет? И сколько всего таких результатов? Собирать разных листах, или на одном но в разных диапазонах? (Поместится?)
0
0 / 0 / 0
Регистрация: 10.06.2013
Сообщений: 23
19.09.2013, 17:30  [ТС]
копия делается для заказчика. в одном документе сразу два варианта. берем с первого листа копируем на второй и там выполняем скрипт и чистим поля с д на втором листе. сохраняем и закрываем файл.
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
19.09.2013, 17:36
У заказчика получается два листа в копии книги? С данными и сумами? И суммы все нужны? И по ЕСВ ФОТ (по договорам ГПХ), и по ЕСВ ФОТ (оплата труда)? Раздельно по каждой фамилии, или по каждой фамилии все вместе?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.09.2013, 17:36
Помогаю со студенческими работами здесь

нужен совет
учусь программировать на Си под AVR (в avrstudyo) логика работы такая: в прерывании по переполнению таймера сканируется кнопка, раз нажал...

Нужен совет!
Доброго времени суток! Возможно таких тем как эта было уже миллион.. но всё же, хотелось бы услышать ваше мнение. Поставил перед...

Нужен совет
Всем добрый день, на днях собираюсь открывать сайт посвящённый &quot;Фильмам&quot;, не только скачать фильмы, но и биография актёров, обзор премьер,...

Нужен совет
1. Доказать, что в ударной волне газ нельзя сжать больше, чем в (y+1 )/(y-1 ) раз, где γ – показатель адиабаты газа. 2. Теорема...

Нужен совет
Мне нужен видео курс. Данный курс поступить в продажу 23 июля, и стоит он 3600 рублей. Однако на складчине идёт сбор взносов на этот курс и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru