powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VB2005 и обработка в Excel
6 сообщений из 6, страница 1 из 1
VB2005 и обработка в Excel
    #33568990
TheEye
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Такая проблема.

У меня в VB2005 не получается открыть файл Excel для обработки данных. Причем в VB6 никаких проблем нет. Если кто знает, в чем прикол, вывесте плз код работающего в VB2005 фрагмента для открытия Excel файла.
...
Рейтинг: 0 / 0
VB2005 и обработка в Excel
    #33569654
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно так :-)

Код: plaintext
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.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
                'работаем с Excel
                'открываем шаблон и запускаем расчет на выполнение
                Dim sAppProgID As String = "Excel.Application"
                Dim tExcelObj As Type = Type.GetTypeFromProgID(sAppProgID)
                oExcel = Activator.CreateInstance(tExcelObj)

                args( 0 ) = True
                oExcel.GetType().InvokeMember("Visible", BindingFlags.SetProperty, Nothing, oExcel, args)
                (oExcel.GetType().InvokeMember("DisplayAlerts", BindingFlags.SetProperty, Nothing, oExcel, args))

                'получаем доступ к колекции книг
                oWorkbooks = oExcel.GetType.InvokeMember("Workbooks", BindingFlags.GetProperty, Nothing, oExcel, Nothing)
                'открываем книгу
                args( 0 ) = strFileName
                oWorkbook = oWorkbooks.GetType.InvokeMember("Open", BindingFlags.InvokeMethod, Nothing, oWorkbooks, args)

                'запускаем макрос на исполнение
                ReDim args( 1 )
                args( 0 ) = "'" & strFileName & "'!ИмяМакроса"
                oExcel.GetType.InvokeMember("Run", BindingFlags.InvokeMethod, Nothing, oExcel, args)

                'получаем ссылку на коллекцию листов книги
                oWorksheets = oWorkbook.GetType.InvokeMember("Worksheets", BindingFlags.GetProperty, Nothing, oWorkbook, Nothing)

                'берем лист "НужныйЛист" первый по счету
                ReDim args( 0 )
                Dim strWorkSheetName As String = ""
                args( 0 ) =  1 
                Do
                    strWorkSheetName = ""
                    oWorksheet = oWorksheets.GetType.InvokeMember("Item", BindingFlags.GetProperty, Nothing, oWorksheets, args)
                    strWorkSheetName = CType(oWorksheet.GetType.InvokeMember("Name", BindingFlags.GetProperty, Nothing, oWorksheet, Nothing), String)

                'сохраняем книгу
                oWorkbook.GetType.InvokeMember("Save", BindingFlags.InvokeMethod, Nothing, oWorkbook, Nothing)

                'получаем ссылку на ячейку (точнее на объект Range("B3"))
                args( 0 ) = "A1"
                oRange = oWorksheet.GetType.InvokeMember("Range", BindingFlags.GetProperty, Nothing, oWorksheet, args)
                'получаем сообщение об ошибке, если таковое есть
                Dim strError As String = ""
                strError = CType(oRange.GetType.InvokeMember("Value", BindingFlags.GetProperty, Nothing, oRange, Nothing), String)

                'закрываем книгу без принятия всех изменений
                args( 0 ) = False
                oWorkbook.GetType.InvokeMember("Close", BindingFlags.InvokeMethod, Nothing, oWorkbook, args)

                'освобождаем переменные
                If Not oRange Is Nothing Then Marshal.ReleaseComObject(oRange)
                oRange = Nothing
                If Not oWorksheet Is Nothing Then Marshal.ReleaseComObject(oWorksheet)
                oWorksheet = Nothing
                If Not oWorksheets Is Nothing Then Marshal.ReleaseComObject(oWorksheets)
                oWorksheets = Nothing
                If Not oWorkbook Is Nothing Then Marshal.ReleaseComObject(oWorkbook)
                oWorkbook = Nothing
                If Not oWorkbooks Is Nothing Then Marshal.ReleaseComObject(oWorkbooks)
                oWorkbooks = Nothing


        'закрываем Excel
        If Not oExcel Is Nothing Then
            oExcel.GetType.InvokeMember("Quit", BindingFlags.InvokeMethod, Nothing, oExcel, Nothing)
        End If

        'Уничтожение объекта Excel.
        Marshal.ReleaseComObject(oExcel)

        oExcel = Nothing

        'Вызываем сборщик мусора для немедленной очистки памяти
        GC.Collect()
        GC.GetTotalMemory(True)

хотя с Excell можно работать и как в Басике6
напиши что не получается и какие ошибки выдает
лучше кусок кода
...
Рейтинг: 0 / 0
VB2005 и обработка в Excel
    #33569885
Дурак
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TheEyeТакая проблема.

У меня в VB2005 не получается открыть файл Excel для обработки данных. Причем в VB6 никаких проблем нет. Если кто знает, в чем прикол, вывесте плз код работающего в VB2005 фрагмента для открытия Excel файла.

Не понял, причем в этом форуме VB2005.
...
Рейтинг: 0 / 0
VB2005 и обработка в Excel
    #33570627
Slava100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Module Module1
Dim snip As New Excel.Application
Dim excelbook As Excel.Workbook
Dim xlsheet As Excel.Worksheet
Sub Main()


excelbook = snip.Workbooks.Open("C:\snip.xls") 'открытие файла данных
xlsheet = excelbook.Worksheets.Add

excelbook.Worksheets(2).Activate()

xlsheet = excelbook.Worksheets(2)

snip.Visible = True
End Sub

End Module



Ошибка: Использован старый формат, либо библиотека имеет неверный тип. (Exception from HRESULT: 0x80028018 (TYPE_E_INVDATAREAD))

Использованная библиотека:Microsoft Excel 10.0 Object Library v.1.4
...
Рейтинг: 0 / 0
VB2005 и обработка в Excel
    #34188891
МЫлашка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
помогите найти ошибку, не пойму где она


Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Const n = 4
Dim a(n - 1, n - 1) As Single
Dim s, p As Single
Dim i, j, As Integer
'считывание массива с формы
For i = 0 To n - 1
For j = 0 To n - 1
a(i, j) = Me.DataGridView1.Item(i, j).Value
Next
Next
p = 1
For i = 0 To n - 1
For j = 0 To n - 1
If a(i, j) > 0 Then p = p * a(i, j)
Next
Next
s = 0
For i = 0 To n - 1
If a(i, 3) Mod 2 <> 0 Then s = s + a(i, 3)
Next i
TextBox1.Text = s
TextBox2.Text = p
End Sub
End Class
...
Рейтинг: 0 / 0
VB2005 и обработка в Excel
    #34188893
МЫлашка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
надо было найти произведение положительных элементов матрицы и сумму элементов 3 строки с нечетными индексами
Модератор: Для вопросов по VB.NET есть свой форум. Кстати выкапывать годовалой давности топики для этих целей тоже не рекомендуется.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VB2005 и обработка в Excel
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]