Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помогите дораться до ячейки в Excel используя VB6

17K
27 июня 2006 года
exe_128
2 / / 12.04.2006
Создаю Addin проект и пишу следующие строчки

Option Explicit
Dim oXL As Object
Dim WithEvents MyButton As Office.CommandBarButton

Private Sub AddinInstance_OnConnection(ByVal Application As Object, _
ByVal ConnectMode As AddInDesignerObjects.ext_ConnectMode, _
ByVal AddInInst As Object, custom() As Variant)
On Error Resume Next
MsgBox "My Addin started in " & Application.Name
Set oXL = Application
Set MyButton = oXL.CommandBars("Standard").Controls.Add(1)
With MyButton
.Caption = "My Custom Button"
.Style = msoButtonCaption
.Tag = "My Custom Button"
.OnAction = "!<" & AddInInst.ProgId & ">"
.Visible = True
End With
End Sub

Private Sub AddinInstance_OnDisconnection(ByVal RemoveMode As _
AddInDesignerObjects.ext_DisconnectMode, custom() As Variant)
On Error Resume Next
MsgBox "My Addin was disconnected by " & _
IIf(RemoveMode = ext_dm_HostShutdown, _
"Excel shutdown.", "end user.")
MyButton.Delete
Set MyButton = Nothing
Set oXL = Nothing
End Sub

Private Sub MyButton_Click(ByVal Ctrl As Office.CommandBarButton, _
CancelDefault As Boolean)

' !!! А сдесь хотелось бы добраться до ячейки листа!!!

End Sub
16K
27 июня 2006 года
kostyanet
24 / / 23.06.2006
Честно говоря ни шиша не понял. Если это не VBA (а написано как на VBA) то добавьте в проект референс на ёкзельную объектную (или типов) библиотеку, и обращайтесь к ёкзелю в котором должен быть открыт документ. Типа вот так:

Код:
Private Sub mnuExel_Click()
Dim xl As Object ' New Excel.Worksheet
Dim ws As New Excel.Worksheet
Dim wb As Workbook
Dim rng As Excel.Range

Set xl = CreateObject("Excel.Sheet")
Set xl = xl.Application.ActiveWorkbook.ActiveSheet

Set wb = xl.Application.Workbooks(1)
 
Set rng = wb.Windows(1).ActiveCell.CurrentRegion

For r = 1 To rng.Rows.Count
    debug.print rng.Cells(r, 1).Text
Next r

end sub


Я уже точно не помню что у меня эта функция делала, потому что была написана временно, для сверки данных из ёкзеля и mdb.

Или делайте просто через ODBC (нужен контрол или класс ADO):

Код:
Private Sub openExcelDoc(s as String)

Dim rst As New ADODB.Recordset
Dim cnn As New ADODB.Connection
Dim fl As ADODB.Field

If Len(s) Then
    cnn.Open "DRIVER={Microsoft Excel Driver (*.xls)};" & "ReadOnly=1 ;DBQ=" & s
    rst.Open "SELECT * FROM [Лист1$]", cnn, adOpenStatic, adLockOptimistic
   
' печатаем имена столбцов

    For Each fl In rst.Fields
        Debug.Print fl.Name
    Next
   
' печатаем данные первого столбца по ячейкам

    Do Until rst.EOF
        Debug.Print rst.Fields(1).Value
        rst.MoveNext
    Loop

End If

End Sub


В этом случае екзель вообще не нужен, не говоря чтобы в нем был загружен какой-нить шит.
17K
29 июня 2006 года
exe_128
2 / / 12.04.2006
Мне нужно надстройку в Excel сделать (написанною в VB6)
И чтобы работала по типу вставка функции в excel
Мне нужен синтаксис определения активной ячейки (также книги и листа) или лучше если код с пояснениями
16K
29 июня 2006 года
kostyanet
24 / / 23.06.2006
А что такое "надстройка"?

Доступ к активной ячейке: ActiveWindow.ActiveCell
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог