Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] можно ли реализовать в vb6 сравнение 2 таблиц odt? (http://forum.oszone.net/showthread.php?t=336783)

artemu88 20-09-2018 09:39 2832170

можно ли реализовать в vb6 сравнение 2 таблиц odt?
 
добрый день! Как реализовать (и возможно ли) в vb6 сравнение двух таблиц ods (openofficecalc) или dbf? Просто даже пока не знаю куда копать))
Заранее спасибо!

Iska 20-09-2018 12:31 2832216

Цитата:

Цитата artemu88
(и возможно ли) в vb6 сравнение двух таблиц ods (openofficecalc) »

А как в Вашем представлении должно вообще выглядеть сравнение двух таблиц (не суть чьих)?

Цитата:

Цитата artemu88
или dbf»

Тот же вопрос.

Теоретически можно попробовать посмотреть, что можно сделать для доступа к OpenOffice SpreadSheet: OpenOffice SpreadSheet connection strings - ConnectionStrings.com. С доступом же к dbf проблем быть не должно в принципе, главное — знать, что это за dbf.

artemu88 20-09-2018 13:29 2832227

Я думаю, что нужно по индексированному полю (присутствующему в двух таблицах и где, например каждой организации соответствует определенная сумма) сравнивать. И заполнять следующие ячейки недостающими значениями. Только как вывод всего этого в отдельную книгу осуществить я не знаю.
В vba более или менее понятно, нашел на просторах интернета и то понял не до конца. А как в vb6 это реализовать вообще темный лес))

Iska 20-09-2018 13:36 2832230

Цитата:

Цитата artemu88
А как в vb6 это реализовать вообще темный лес)) »

Да практически точно так же, как на VBA. Там разницы между языками с гулькин нос.

artemu88 20-09-2018 13:46 2832231

точно также с указанием пути к книге и номерами листов и диапазонов? А есть что-нибудь почитать по этому вопросу? Просто ничего не нашел

Iska 20-09-2018 18:55 2832255

Да практически любое пособие по VB, от 800-1200 страниц и выше, смотрите раздел по работе с базами данных.

artemu88 04-10-2018 17:22 2834419

сравнил 2 листа в экселе при помощи модуля - все получилось
хотел спросить как подключить книгу эксель из текстового поля в vb6, чтобы пользователь указывал путь к первой книге и путь ко второй книге, нажимал кнопку "сравнить" и все сравнивалось. код сравнения есть. Не знаю как реализовать подключение книги через текстовое поле text1. Как бд подключает, но как дальше работать с синтаксисом vba в vb6 для сравнения книг?

Заранее спасибо за ответ!

Iska 04-10-2018 22:25 2834469

Покажите код, опишите, что вызывает вопросы.

artemu88 05-10-2018 08:11 2834510

Вложений: 1
Код прикрепил, сначала делаю соединение с бд, может как то по-другому надо?

Спасибо!

artemu88 05-10-2018 12:53 2834545

Прошу прощения, исправило код, но все равно не видит файл как рабочую книгу

Option Explicit
Dim oldRow As Integer
Dim newRow As Integer
Dim lrow_input As Integer, lrow_output As Integer
Dim WB_Input As Workbook
Dim WB_Output As Workbook
Dim WS_Input As Worksheet
Dim WS_Output As Worksheet
Dim Excel As Object, sWBName$, sFullPath As String
Dim sWBName1$, sFullPath1 As String
Dim MyFile

Private Sub Command1_Click()
Set Excel = CreateObject("Excel.Application")
sFullPath = Text1.Text
sWBName = Dir(sFullPath)
sFullPath1 = Text2.Text
sWBName1 = Dir(sFullPath1)
WB_Input = Workbooks(sWBName)
WB_Output = Workbooks(sWBName1)

Iska 06-10-2018 13:01 2834685

artemu88, я посмотрел на Ваш код, но так и не понял, что Вы хотите получить в целом. Если код в:
Цитата:

Цитата artemu88
сравнил 2 листа в экселе при помощи модуля - все получилось »

был аналогичен — то Вы явно делаете что-то не то, поскольку Вы создаёте соединение, которое потом никак не используется в принципе, а дальше Вы начинаете работать с рабочими книгами и рабочими листами посредством Automation напрямую через Excel.Application. Понимаете?

Если выбросить всё относящееся к OLE DB, то для работы посредством Automation напрямую через Excel.Application должно быть примерно так:
Код:


' Если в проекте задана ссылка на библиотеку типов Microsoft Excel,
           
           

               
Скрытый текст

               
               

                   
               

               
           
                             
           
' используем раннее связывание:
Dim objExcel As New Excel.Application
' Минус такого подхода — мы привязаны к конкретной версии библиотеки (читай — Microsoft Office).

' Если в проекте не задана ссылка на библиотеку типов Microsoft Excel,
' используем позднее связывание:
Dim objExcel As Object
Set objExcel = CreateObject("Excel.Application")

' В Text1.Text и Text2.Text должны быть полные пути к Рабочим книгам
Set WB_Input = objExcel.Workbooks.Open(Text1.Text)
Set WB_Output = objExcel.Workbooks.Open(Text2.Text)
' По-хорошему, перед их открытием ещё надо бы проверить, что файл Рабочей книги, указанный в Text1.Text, существует, и что он, как минимум, имеет расширение .xls/.xlsx.


artemu88 08-10-2018 11:30 2834923

Вложений: 1
СПАСИБО ОГРОМНОЕ!!!!!!!
Все работает, теперь вопрос, как эти изменения сохранить. SaveAs не работает, можно ли как-то сохранить изменения во второй книге?

Iska 08-10-2018 13:54 2834937

artemu88, а в каком месте Вы добавляли .SaveAs? Что значит «не работает» — как это выглядит? Почему не просто .Save?

artemu88 08-10-2018 16:50 2834966

Все подправил, просто не разобрался сначала, все сохраняет в отдельную книгу!!!!!!!!!

MsgBox ("процедура закончена!")
ActiveWorkbook.SaveAs "C:\Users\Documents\бд\baza.xls"

Все работает

еще делал сейвом и тоже все работало, прошу прощения. СПАСИБО БОЛЬШОЕ ЗА ПОМОЩЬ!

Iska 08-10-2018 21:29 2834994

Цитата:

Цитата artemu88
в отдельную книгу!!!!!!!!! »

В отдельную — да, .SaveAs.

artemu88 09-10-2018 09:36 2835024

Спасибо за помощь, очень вам благодарен!))


Время: 22:06.

Время: 22:06.
© OSzone.net 2001-