Модераторы: diadiavova, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> определение диапазона ячеек Excel в VB.Net, как получить размер таблицы в Excel? 
V
    Опции темы
Panika
Дата 10.7.2009, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 10.7.2009

Репутация: нет
Всего: нет



Помогите плиз!
мне нужно определить размер таблицы в Excel, т.е. адрес последней ячейки или диапазон ячеек.
в VB.Net не знаю синтаксис...
может есть книги поработе с Excel в VB.Net?
спасибо!  
PM MAIL   Вверх
diadiavova
Дата 10.7.2009, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Сразу вопрос: каким образом в код попадает ссылка на таблицу? 
Там всё довольно просто любой диапазон ячеек - это объект Range, при чём не важно одна ячейка, строка, столбец или таблица. Стало быть, получив ссылку на него можно извлечь любую ячейку в виде такого же объекта Range и вызвать свойство Address например. Приведу код на VBA, переложить на VB.Net я думаю не проблема. Если проблема - выложи, что у тебя уже есть, потому что не очень понятен вопрос(точнее его контекст)
Следующий код в экселе выводит имя последней ячейки из выделенного в данный момент диапазона.
Код

Sub ShowAddress()
    Dim r As Range
    Set r = Selection
    Dim c As Range
    Set c = r(r.Rows.Count, r.Columns.Count)
    MsgBox c.Address
End Sub



--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Panika
Дата 10.7.2009, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 10.7.2009

Репутация: нет
Всего: нет



Задача: 
есть два файла Excel, нужно содержимое одного файла добавить в конец другого. Для этого мне надо определить размер первого и конец второго файла.
как видно из кода мне нужно определить две переменные row1 и column1 
код урезан выглядит примерно так:
Код


Public Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click
        
        Dim xlApp As New Excel.Application
        Dim xlWb1 As Excel.Workbook = xlApp.Workbooks.Open(path1)
        Dim xlWb2 As Excel.Workbook = xlApp.Workbooks.Open(path2)
        xlApp.Visible = True
       
        ' объявление первого файла
        Dim workbook1 As _Workbook = xlWb1
        Dim sheets1 As Sheets = workbook1.Worksheets
        Dim worksheet1 As _Worksheet = sheets1.Item(1)
        ' объявление второго файла
        Dim workbook2 As _Workbook = xlWb2
        Dim sheets2 As Sheets = workbook2.Worksheets
        Dim worksheet2 As _Worksheet = sheets2.Item(1)
        
        Dim i As Integer, a As Integer

        Dim row1 As Integer, column1 As Integer

        For a = 1 To row1
            For i = 1 To column1

                Dim xlRange As Excel.Range = worksheet1.Cells(a, i) ' определяем куда
                xlRange.Value2 = worksheet2.Cells(a, i) ' определяем откуда
                
            Next i
        Next a


        '
        Try
            workbook1.Close(True) ' можно указать путь и имя сохраняемого файла
            workbook2.Close(True)

            xlApp.Quit()
        Catch Outer As COMException
            Console.WriteLine("User closed Excel manually, so we don't have to do that")
        End Try

 End Sub



PM MAIL   Вверх
diadiavova
Дата 10.7.2009, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



У класса Worksheet есть свойство UsedRange. Как следует из имени оно возвращает используемый диапазон.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Panika
Дата 13.7.2009, 08:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 10.7.2009

Репутация: нет
Всего: нет



diadiavova, Огромное спасибо!
То что надо!

Если бы ещё подсказали литературку на эту тему цены бы Вам не было!!!  smile 
PM MAIL   Вверх
diadiavova
Дата 13.7.2009, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



С литературкой фиг знает, но думаю, что копать надо не в сторону решений VSTO, хотя и туда тоже, а скорее надо искать литературу по VBA. Там язык не слишком от VB.Net отличается, а вот объектная модель автоматизации офиса, как я полагаю лучше всего описана именно там.
Кроме того у нас есть форум, посвящённый программированию под офис, там тоже можно спросит и насчёт литературы и конкретных фич, типа той о которой шла речь в этом топике.
Ну, а что до программирования офиса под платформой .Net - то в первую очередь официальная документация


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума VB .NET
diadiavova
  • Прежде чем задать вопрос, воспользуйтесь поиском: возможно Ваш вопрос уже обсуждался и на него был получен ответ.
  • Если такой же вопрос не найден, не стоит задавать свой вопрос в любую тему, создайте новую.
  • Заголовок темы должен отображать ее суть.
  • Содержание поста должно описывать проблему понятно, но в то же время, по возможности, лаконично. Сначала следует описать суть вопроса, потом можно привести пример кода, не вынуждайте других участников угадывать в чем Ваша проблема - телепатов здесь нет.
  • Будьте взаимно вежливы и дружелюбны.
  • При оформлении сообщений используйте форматирование, примеры кода заключайте в теги [CODE=vbnet][/CODE].
  • Также ознакомьтесь с общими правилами, действующими на всем форуме.
  • Если вопрос решен, не забывайте помечать тему решенной(вверху темы есть ссылка). Кроме того, если Вы хотите отблагодарить участников, оказавших помощь в решении, можно повысить им репутацию, в случае, если у Вас менее 100 сообщений в форуме и функция изменения репутации Вам недоступна, можете написать сюда.
  • Общие вопросы по программированию на платформе .NET обсуждаются здесь.
  • Литература по VB .NET обсуждается здесь.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0683 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.