Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
7 / 7 / 1
Регистрация: 11.06.2012
Сообщений: 352

На основе анализа ячеек сформировать другой файл xls с отчетом

05.01.2013, 12:13. Показов 1084. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет.
Необходимо открыть файл xls проанализировать ячейки и закрыть. Далее на основе анализа сформировать другой файл xls с отчетом.
С excel не когда не работал в vb. С чего начать? Желательно бы литературку по работе с office.
Вроде говорят самоучитель Гарнаев хороший. Но ссылки на него устарели. Заранее благодарен...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.01.2013, 12:13
Ответы с готовыми решениями:

Сохранение массива на основе структуры в файл xls
Доброго времени суток, уважаемые форумчане! Помогите пожалуйста с решением задачи: Объвлена структура, содержащая в себе 100 переменных...

Открыть xls файл, найти значение, скопировать в другой файл, закрыть первую
Привет. Имеются file1.xls и file2.xls. Нужно написать макрос, которая сначала открывает file2.xls, потом, с первого листа этого...

Как найти в xls-файле слово и скопировать его в другой xls?
Если кто может... HELP!!! Надо из book1.xls найти слово test и перекинуть его в book2.xls

17
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,708
Записей в блоге: 14
05.01.2013, 12:46
Книг на эту тему - море... То, что тебе нужно, выглядит так:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Dim xlsApp As Object
Dim xlsWb  As Object
Dim xlsSh   As Object
 
      Set xlsApp=CreateObject("Excel.Application")
      Set xlsWb =xlsApp.Workbooks.Open("имя-книги")
      Set xlsSh  =xlsWb.Sheets("Имя-или-номер-листа")
      
      For i%=1 to 10
          For  j%=1 to 20
                x#=xlsSh.Cells(i%,j%).Value
                ...
                xlsSh.Cells(i%,j%).Value=...
          Next j%
      Next i%
 
      xlsWb.Save
      xlsWb.Close
      xlsApp.Quit
0
7 / 7 / 1
Регистрация: 11.06.2012
Сообщений: 352
05.01.2013, 16:00  [ТС]
спасибо. прога у меня вроде открывает, но внизу на панели ее не вижу????
Пробую так открыть файл пишет файл уже открыть, но его не видно...
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,708
Записей в блоге: 14
05.01.2013, 16:03
Visual Basic
1
2
3
4
5
...
 
      Set xlsApp=CreateObject("Excel.Application")
      xlsApp.Visible=True
...
0
7 / 7 / 1
Регистрация: 11.06.2012
Сообщений: 352
05.01.2013, 17:07  [ТС]
понятно
по умолчанию стояло
[VB]xlsApp.Visible=False[VB]

Добавлено через 56 минут
проблемка возникла:
проверяем один столбец. При условии что в ячейке стоит "выполнено", мы копируем строчку там где стояло "выполнено" и далее открываем новый файл и вставляем эту строчку. Далее идем по столбцу и ищем "выполнено" итд.
Visual Basic
1
2
3
4
5
6
7
8
9
10
 For i% = 1 To 10
         For j% = 1 To 20
                x = xlsSh.Cells(i%, j%).Value
                 If xlsSh.Cells(i, 8).Value = "выполнено" Then
          ....копируем всю строчку....
           Set xlsWb = xlsApp.Workbooks.Open("C:\Users\Lenovo\Desktop\сюда.xls")
           .....вставляем в строчку....
           End If     
          Next j
      Next i
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,708
Записей в блоге: 14
05.01.2013, 17:15
Если открываешь новый файл, а старый еще нужен, то в 6-й строке объектная переменная должна быть другая:

Visual Basic
1
Set xlsWb_1 = xlsApp.Workbooks.Open("C:\Users\Lenovo\Desktop\сюда.xls")
0
7 / 7 / 1
Регистрация: 11.06.2012
Сообщений: 352
05.01.2013, 17:19  [ТС]
все верно не заметил.
это понятно. а как само копирование и вставление строчки сделать
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,708
Записей в блоге: 14
05.01.2013, 17:29
Способ первый - по одной ячейке в цикле
Способ второй - скопировать строку, перейти в нужный лист нужной книги и вставить. Так быстрее.
Понадобятся методы Select, Copy и Paste
1
Заблокирован
05.01.2013, 17:45
Цитата Сообщение от Техник55 Посмотреть сообщение
это понятно. а как само копирование и вставление строчки сделать
Это поможет: Пример записи / чтения с Microsoft Excel в VB
1
7 / 7 / 1
Регистрация: 11.06.2012
Сообщений: 352
06.01.2013, 21:28  [ТС]
Люди, подскажите, рабочую ссылку на литературу по работе с Excel. Чтобы быстрее дело пошло

Добавлено через 2 часа 50 минут
Всех поздравляю с Рождеством...
Ребята ну ссылка нужна очень...

Добавлено через 17 минут
И желательно на русском...
0
Заблокирован
07.01.2013, 07:38
Техник55, Я думаю лучше зайти тебе в Microsoft Excel там есть запись макросов. Включи ее, поделай под запись в листе что-то, потом посмотри код который он тебе написал и воткни его в VB немного подредактировав вот и все. А если тебе так нужная писанина, тогда просто иди сюда: https://www.google.ru/ и ищи с такими словами, Visual Basic работа с Excel или что-то типа того.
0
7 / 7 / 1
Регистрация: 11.06.2012
Сообщений: 352
07.01.2013, 18:15  [ТС]
попробовал как предложили выше!!!
вот код:
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
Private Sub Command1_Click()
Dim xlsApp As Object
Dim xlsWb  As Object
Dim xlsSh   As Object
Dim xlsWb1  As Object
Dim xlsSh1   As Object
 
      Set xlsApp = CreateObject("Excel.Application")
      xlsApp.Visible = True
      Set xlsWb = xlsApp.Workbooks.Open("C:\Users\Lenovo\Desktop\пример1.xls")
      Set xlsSh = xlsWb.Sheets("лист1")
 Dim i%
 Dim j%
 Dim x  As Variant
 
      For i% = 1 To 5
                x = xlsSh.Cells(i%, 5).Value
               
                
                If xlsSh.Cells(i%, 5).Value = "выполнено" Then
                Select Case i%
                Case 1
                Windows("пример1.xls").Activate
                Range("B6:C6").Select
                Selection.Copy
                Set xlsWb1 = xlsApp.Workbooks.Open("C:\Users\Lenovo\Desktop\пример2.xls")
                Set xlsSh1 = xlsWb1.Sheets("лист1")
                Windows("пример2.xls").Activate
                Range("B6:C6").Select
                ActiveSheet.Paste
                Case 2
               Windows("пример1.xls").Activate
                Range("B8:C8").Select
                Selection.Copy
                Set xlsWb1 = xlsApp.Workbooks.Open("C:\Users\Lenovo\Desktop\пример2.xls")
                Set xlsSh1 = xlsWb1.Sheets("лист1")
                Windows("пример2.xls").Activate
                Range("B8:C8").Select
                ActiveSheet.Paste
                End Select
                End If
                
      Next i
 
      xlsWb.Save
      xlsWb.Close
      xlsApp.Quit
End Sub
Ошибку на этой строчке:
Visual Basic
1
 Windows("пример1.xls").Activate
ошибка 48 Error in loading DLL
0
Заблокирован
07.01.2013, 18:35
Цитата Сообщение от Техник55 Посмотреть сообщение
Set xlsWb = xlsApp.Workbooks.Open("C:\Users\Lenovo\D esktop\пример1.xls")
1. В своем проекте добавь ссылку на Excel.exe
2. У тебя по данной ссылке C:\Users\Lenovo\Desktop\пример1.xls расположен файл пример1.xls ?
0
7 / 7 / 1
Регистрация: 11.06.2012
Сообщений: 352
07.01.2013, 18:43  [ТС]
1) не понял а зачем ссылка на excel.exe??? где воткнуть?
2) да пример1 по этому адресу!!!
0
Заблокирован
07.01.2013, 18:53
Насколько я понял, не найденный DLL есть отсутствия ссылки на объект Excel, вот и проблемы.
Миниатюры
На основе анализа ячеек сформировать другой файл xls с отчетом   На основе анализа ячеек сформировать другой файл xls с отчетом  
0
7 / 7 / 1
Регистрация: 11.06.2012
Сообщений: 352
07.01.2013, 19:16  [ТС]
Это не помогает!!??
Хотя я эту библиотеку сразу добавил. Все остальное то оно выполняет.
А кое что не понимает!!!!????
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,708
Записей в блоге: 14
07.01.2013, 19:21
Попробуй:

Visual Basic
1
xlsApp.Windows(и далее по тексту)
1
7 / 7 / 1
Регистрация: 11.06.2012
Сообщений: 352
08.01.2013, 02:36  [ТС]
Это помогло!!! Благодарю
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.01.2013, 02:36
Помогаю со студенческими работами здесь

Сформировать второй файл на основе исходного
Решить задачу с помощью процедур и функций. дан текстовый файл F. получить файл g добавляя в i-тую строку А i последних символов.

Копировать значения ячеек в другой файл
Доброго времени суток! Есть задача для автоматизации труда, которую не могу решить самостоятельно. Кто знает помогите пожалуйста. ...

Распарсить текстовый файл и сформировать HTML на его основе
Всем привет! Направьте, пожалуйста, на путь истинный в решении такой вот задачки. Есть текстовый файл. Необходимо его...

Сформировать файл F1, содержащий целые числа, и переписать в другой файл
Ðàçðàáîòàòü ïðîãðàììó, êîòîðàÿ ôîðìèðóåò ôàéë F1, ñîäåðæàùèé öåëûå ÷èñëà, è ïåðåïèñûâàåò ýòîò ôàéë â äðóãîé ôàéë - F2, ïîìåùàÿ â íåãî èç...

Требуется сформировать внешний файл, содержащий исходные данные и переписать в другой файл
Требуется сформировать внешний файл ABITURIENT.DAT, содержащий список абитуриентов, их оценок в аттестате, оценок по вступительным...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru