Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Excel в VB, Открытие таблицы Excel в VB 
:(
    Опции темы
Kerrion
  Дата 21.3.2005, 00:12 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Такое дело... Мне надо открыть файл Excel'a.
у меня на форме лежит Spreadsheet. Я могу сохранять таблицу в .xls и смотреть ее в MSEXCEL, но вот беда открыть этот (.xls) я уже немогу! все что мне удалось это найти LoadText... больше возможностей для открытия я ненашел 8(
Я в отчаянии... smile
  Вверх
Flotskiy
Дата 21.3.2005, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 15.11.2004
Где: г. Омск

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



Добрый день всем!

Kerrion, привет! Я много занимаюсь данным вопросом: вот тебе мой код:
Код

Option Explicit
Dim adoConnection As ADODB.Connection
Dim adoRecordset As ADODB.Recordset
Dim connectString As String
Dim objExcel As Object
Dim objTemp As Object

и еще:
Код

Private Sub mnuIKniga_Click()
On Error Resume Next
Dim iIndx As Integer
Dim iRowIndex As Integer
Dim iColIndex As Integer
Dim iRecordCount As Integer
Dim iFieldCount As Integer
Dim sMessage As String
Dim avRows As Variant
Dim excelVersion As Integer

Dim sSqlString As String

Set adoConnection = New ADODB.Connection
Set adoRecordset = New ADODB.Recordset

connectString = "Provider=Microsoft.Jet.OLEDB.3.51;" _
                 & "Data Source=" & gDataBaseName 
'(путь к БД у меня например gDataBaseName = "C:\BIBLIOTEKA\BDanny\Bibliot.mdb")
sSqlString = "SELECT DatZap, InventNumber, " & _
        "(Autor & ' ' & Title) AS Imy,  " & _
        "DatPubl, Zena, " & _
        "Autor1, PodRed, InventNumber2, NumbPost" & _
        "FROM Titles WHERE InventNumber =" & Text2.Text

adoConnection.Open connectString
adoRecordset.CursorLocation = adUseClient
adoRecordset.Open sSqlString, adoConnection
'-- Read all of the records into our array
avRows = adoRecordset.GetRows() '

'-- Determine how many fields and records
iRecordCount = UBound(avRows, 2) + 1
iFieldCount = UBound(avRows, 1) + 1

'-- Create reference variable for the spreadsheet
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
objExcel.Workbooks.Open (App.Path & "\Document\KatalogKniga")
'если "objExcel.Workbooks.Add", то откроет новый файл 

'-- We need this line to insure Excel remains visible if we switch
Set objTemp = objExcel

excelVersion = Val(objExcel.Application.Version)
If (excelVersion >= 8) Then
 Set objExcel = objExcel.ActiveSheet
End If

'-- Place the names of the fields as column headers --
iRowIndex = 1
iColIndex = 1
For iColIndex = 1 To iFieldCount
  With objExcel.Cells(iRowIndex, iColIndex)
     .Value = adoRecordset.Fields(iColIndex - 1).Name
     With .Font
       .Name = "Arial"
       .Bold = True
       .Size = 9
     End With
  End With
Next

'-- Just add data --
With objExcel
  For iRowIndex = 2 To iRecordCount + 1
   For iColIndex = 1 To iFieldCount
    .Cells(iRowIndex, iColIndex).Value = avRows(iColIndex - 1, iRowIndex - 2)
   Next
  Next
End With
objExcel.Cells(1, 1).CurrentRegion.EntireColumn.AutoFit

End Sub

Что делаю:
Из БД Access выбираю запись согласно инвентарного номера (Text2.Text),
Открываю xls.файл, который указан в App.(путь)
и данные вставляю на первый лист.
Данный код не я придумал, а где-то нашел и вот пользуюсь. Если кто поправит что, то с удовольствием и я воспользуюсь.
А вот еще один:
Код

Dim objExcel As Object
Private Sub Command1_Click()
      Dim myXl
      Dim XL
    Set myXl = CreateObject("Excel.Application")

   Set XL = myXl.Workbooks.Open(App.Path & "\Doc\ProtokolDop.xls")
       Set objExcel = myXl
objExcel.Visible = True
 
End Sub


С уважением

Это сообщение отредактировал(а) Flotskiy - 21.3.2005, 09:33
--------------------
FlotskiySk k
PM MAIL   Вверх
jen
Дата 24.3.2005, 10:51 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Вопрос примерно на эту же тему.

Выдираю данные из базы и вывожу их в объект excel.

(пример)
sheet.cells(o_count, 1) = rs!ab_typ_abon
sheet.cells(o_count, 2) = rs!operator

У меня выгружаются длинные текстовые строки из цифр - инвентарные номера, примерно 15-20 цифр, и при занесении в ячейку эксела они автоматом преобразуются в формат с плавающей запятой, то есть дробь, помноженая на 10 в какой то степени, так как формат ячеек ставится в объекте эксел по умолчанию как общий.

Как указать из VB, что формат ячейки должен быть не общий а текстовый?
  Вверх
Flotskiy
Дата 24.3.2005, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 15.11.2004
Где: г. Омск

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



Добрый день всем!
jen,
Цитата
Как указать из VB, что формат ячейки должен быть не общий а текстовый?

это я не знаю, а свои данные загоняю в готовый файл.xls, где колонки заранее отформатированы
Может кто ответит на твой вопрос, я тоже с удовольствием приму на вооружение.
С приветом

--------------------
FlotskiySk k
PM MAIL   Вверх
Naghual
Дата 24.3.2005, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

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



Цитата
Как указать из VB, что формат ячейки должен быть не общий а текстовый?


Код
    .Cells(iRowIndex, iColIndex).NumberFormat = "@"



--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
Flotskiy
Дата 25.3.2005, 07:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 15.11.2004
Где: г. Омск

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



Добрый день всем!

Naghual
Спасибо за подсказку, если можно, то еще на такой вопрос:
в xls-файл в первую колонку отсылаются значения "дата",
во вторую - числовые,
в третью - денежные,
в четвертую - процентные.
Как в коде это записать?
Всего доброго, с уважением

--------------------
FlotskiySk k
PM MAIL   Вверх
Naghual
Дата 25.3.2005, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

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



Код

        'в первую колонку отсылаются значения "дата"
        .Columns(1).NumberFormat = "dd/mm/yy"
        'во вторую - числовые
        .Columns(2).NumberFormat = "0.00"
        'в третью - денежные
        .Columns(3).NumberFormat = "#,##0.00$"
        'в четвертую - процентные
        .Columns(4).NumberFormat = "0.00%"



--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
Flotskiy
Дата 25.3.2005, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 15.11.2004
Где: г. Омск

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



Naghual, благодарю за помощь.
Всего доброго.
С уважением
--------------------
FlotskiySk k
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


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

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


 




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


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

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