Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/35: Рейтинг темы: голосов - 35, средняя оценка - 5.00
 Аватар для dzug
695 / 236 / 18
Регистрация: 17.01.2011
Сообщений: 583
Записей в блоге: 1

Обработка активной книги Excel

31.01.2013, 04:56. Показов 7012. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Необходимо определить количество заполненных строк первого и второго, по индексу, листов активной книги Excel (книга открыта). На седьмой строке переменной xlsWb , значение не присваивает ???
Спасибо за ответ.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub main()
Dim xlsApp As Object 
Dim xlsWb  As Object 
Dim xlsSh  As Object 
Dim a&, n&, b&
    Set xlsApp = CreateObject("Excel.Application") '    xlsApp.Visible = True
    Set xlsWb = xlsApp.ActiveWorkbook 
    n = xlsWb.Sheets.Count
    Set xlsSh = xlsWb.Sheets(1)
      a = xlsSh.Cells(Rows.Count, 1).End(xlUp).Row
    Set xlsSh = xlsWb.Sheets(2)
      b = xlsSh.Cells(Rows.Count, 1).End(xlUp).Row
End Sub
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.01.2013, 04:56
Ответы с готовыми решениями:

Интеграция книги Excel в VB
Всем добрый день. Есть книга EXEL с макросами, кнопками. Хочу через Visual Studio 2010 Professional перевести книгу в EXE файл. Тем самым...

Excel: Как сделать безвопросное закрытие книги?
Она, естесс-но всячески изменяется в процессе работы, но нужно чтоб она закрывалась и по моему требованию (кнопке) и по общему ЗАКРЫТЬ без...

Как с помощью ADODC получить данные из книги Excel ?
Я всё пытался с помощью ADODC получить данные из книги Excel, но у меня ничего не вышло. Я запутался. Если можно пришлите какой нибудь...

18
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
31.01.2013, 05:25
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub main()
Dim xlsApp As Object
Dim xlsWb  As Object
Dim xlsSh  As Object
Dim a&, n&, b&
    Set xlsApp = CreateObject("Excel.Application") '    xlsApp.Visible = True
    Set xlsWb = ActiveWorkbook
    n = xlsWb.Sheets.Count
    Set xlsSh = xlsWb.Sheets(1)
      a = xlsSh.Cells(Rows.Count, 1).End(xlUp).Row
    Set xlsSh = xlsWb.Sheets(2)
      b = xlsSh.Cells(Rows.Count, 1).End(xlUp).Row
End Sub
0
 Аватар для dzug
695 / 236 / 18
Регистрация: 17.01.2011
Сообщений: 583
Записей в блоге: 1
31.01.2013, 05:34  [ТС]
Увы, не работает..
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
31.01.2013, 05:39
0
 Аватар для dzug
695 / 236 / 18
Регистрация: 17.01.2011
Сообщений: 583
Записей в блоге: 1
31.01.2013, 05:49  [ТС]
Проверил ещё раз. Не работает ..
Миниатюры
Обработка активной книги Excel  
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
31.01.2013, 05:57
Я в Excel запускал, там пашет, сейчас посмотрю в VB6
0
 Аватар для dzug
695 / 236 / 18
Регистрация: 17.01.2011
Сообщений: 583
Записей в блоге: 1
31.01.2013, 05:59  [ТС]
Вылазит вот такая "петрушка" на восьмой строке.. А на седьмой строке значение объектной переменной xlsWb не присваивается..
Запускать из VB6..
Миниатюры
Обработка активной книги Excel  
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
31.01.2013, 06:32
Так?
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub main()
Dim XL As New Excel.Application, xlsSh
XL.Workbooks.Open App.Path & "\Book.xlsx"
Set XL = XL.ActiveWorkbook.Sheets.Application
XL.Visible = True
 
Dim a&, n&, b&
    n = XL.Sheets.Count
    Set xlsSh = XL.Sheets(1)
      a = xlsSh.Cells(Rows.Count, 1).End(xlUp).Row
    Set xlsSh = XL.Sheets(2)
      b = xlsSh.Cells(Rows.Count, 1).End(xlUp).Row
End Sub
Миниатюры
Обработка активной книги Excel  
0
 Аватар для dzug
695 / 236 / 18
Регистрация: 17.01.2011
Сообщений: 583
Записей в блоге: 1
31.01.2013, 06:41  [ТС]
В том то и дело, что книга Excel открыта и название у неё может быть разное. Обращаться надо к АКТИВНОЙ книге..
В Вашем коде выдаёт ошибку на строке:
Visual Basic
1
Dim XL As New Excel.Application, xlsSh
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
31.01.2013, 06:50
В Вашем коде выдаёт ошибку на строке:
1
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
31.01.2013, 07:57
Цитата Сообщение от dzug Посмотреть сообщение
Excel открыта и название у неё может быть разное. Обращаться надо к АКТИВНОЙ книге.
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
Sub main()
Dim xlsApp As Excel.Application
Dim xlsWb  As Excel.Workbook
Dim xlsSh  As Excel.Worksheet
Dim a&, n&, b&
    Set xlsApp = GetObject(, "Excel.Application")
        For Each xlsWb In xlsApp.Workbooks
              If xlsWb.Name = "Book.xlsx" Then
                    MsgBox "Нужная книга!"
              End If
        Next
    Set xlsWb = xlsApp.ActiveWorkbook
    n = xlsWb.Sheets.Count
    
    
    Set xlsSh = xlsWb.Sheets(1)
    
    ' а дальше - косяк :)
    
      a = xlsWb.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
    Set xlsSh = xlsWb.Sheets(2)
      b = xlsSh.Cells(Rows.Count, 1).End(xlUp).Row
End Sub
1
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
31.01.2013, 08:05
Цитата Сообщение от SoftIce Посмотреть сообщение
' а дальше - косяк
Устранил
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub main()
Dim xlsApp As Excel.Application
Dim xlsWb  As Excel.Workbook
Dim xlsSh  As Excel.Worksheet
Dim a&, n&, b&
    Set xlsApp = GetObject(, "Excel.Application")
    Set xlsWb = xlsApp.ActiveWorkbook
    n = xlsWb.Sheets.Count
    
    
      Set xlsSh = xlsWb.Sheets(1)
      a = xlsSh.Cells(xlsSh.Rows.Count, 1).End(xlUp).Row
      Set xlsSh = xlsWb.Sheets(2)
      b = xlsSh.Cells(xlsSh.Rows.Count, 1).End(xlUp).RowEnd Sub
Миниатюры
Обработка активной книги Excel  
1
 Аватар для dzug
695 / 236 / 18
Регистрация: 17.01.2011
Сообщений: 583
Записей в блоге: 1
31.01.2013, 11:34  [ТС]
Цитата Сообщение от SoftIce Посмотреть сообщение
Устранил

Visual Basic
1
 b = xlsSh.Cells(xlsSh.Rows.Count, 1).End(xlUp).RowEnd

Спасибо. Всё заработало. Только вместо xlUp надо написать -4162 . Понять это помогла соседняя тема
Работа с excel ячейками

Ещё раз спасибо.

Добавлено через 30 минут
Цитата Сообщение от SoftIce Посмотреть сообщение
Не могу прочитать название подключаемой библиотеки.. Напишате пожалуста название отдельно.
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
31.01.2013, 11:38
Microsoft Excel 12.0 Object Library
1
 Аватар для dzug
695 / 236 / 18
Регистрация: 17.01.2011
Сообщений: 583
Записей в блоге: 1
31.01.2013, 11:41  [ТС]
Разобрался с библиотекой..Спасибо.
0
 Аватар для dzug
695 / 236 / 18
Регистрация: 17.01.2011
Сообщений: 583
Записей в блоге: 1
11.12.2015, 13:09  [ТС]
Да простят меня администраторы за поднятие темы с "двухлетней бородой" , но вопрос стопроцентно по этой теме.
Открыта книга Эксель, на листе выделена одна ячейка.
Как из VB 6 узнать что записано в активной ячейке ?
Пробовал так:
Visual Basic
1
2
3
4
5
6
7
Dim xSh  As Excel.Worksheet, xlsApp As Excel.Application, xlsWb As Excel.Workbook, xlsSh  As Excel.Worksheet
Dim txt$, l&, r As Range
Set xlsApp = GetObject(, "Excel.Application")
Set xlsWb = xlsApp.ActiveWorkbook
Set xSh = xlsWb.ActiveSheet
Set r = xSh.ActiveCell
txt = r.Text   '.ActiveCell
0
 Аватар для Апострофф
9908 / 3924 / 742
Регистрация: 11.10.2011
Сообщений: 5,904
11.12.2015, 13:52
Visual Basic
1
txt = GetObject(, "Excel.Application").ActiveCell
?
1
 Аватар для dzug
695 / 236 / 18
Регистрация: 17.01.2011
Сообщений: 583
Записей в блоге: 1
11.04.2017, 21:58  [ТС]
Созрел ещё один вопрос по этой "бородатой" теме:
Как из VB6 записать в активную ячейку Книги.xls формулу.
В VBA это пишется так:

Visual Basic
1
ActiveCell.FormulaR1C1 = "=R[+1]C+R[0]C[-2]"
А вот из VB6 записать не получается . Пробовал по разному (см.мой пост № 16)в т.ч. и так:

Visual Basic
1
xlsWb.ActiveCell.FormulaR1C1 = "=R[+1]C+R[0]C[-2]"
пробовал и с xlsApp , и с xSh .
0
 Аватар для dzug
695 / 236 / 18
Регистрация: 17.01.2011
Сообщений: 583
Записей в блоге: 1
13.04.2017, 21:13  [ТС]
Сам задал вопрос, сам и отвечаю.

Методом "тыка" получилось сделать так:

Visual Basic
1
GetObject(, "Excel.Application").ActiveCell.FormulaR1C1 = "=R[+1]C+R[0]C[-2]"
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.04.2017, 21:13
Помогаю со студенческими работами здесь

Как в VB вызывать модуль содержащийся в макросе книги Excel?
Необходимо в VB вызывать модуль содержащийся в макросе книги Excel.

Range.Find - ошибка при открытии книги Excel
Ошибка в самом конце кода. использую функцию .find для нахождения ячеек по их значению. Поиск всегда идет в 2 листах эксель из 2 книг. ...

Создание новой книги в Excel и назначение там макросов
Всем привет! Помогите плиз, не могу справится с одной проблемой. Есть VB код содержащийся в Excel-евском файле. Он создает новую...

Открытие книги Excel и выделение в ней определенных ячеек
Такая проблема, есть существующая книга, сделанная в 2003 офисе. Нужно написать в Visual Basic 2010 программу, которая при нажатии на...

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


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru