Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: VBA Word запрос к базе данных.  (Прочитано 38611 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
rikomono
Интересующийся

ru
Offline Offline

« : 30-05-2011 16:50 » 

Помогите написать макрос.
1)   Имеется текст в редакторе Word
2)   Нужно чтобы по каждому слову был сделан запрос к базе данных или к книги Exel
3)   Это слово там найдено.
4)   Слово находящееся в ячейке  справа было помещено на слово в исходном тексте с помощью (PhoneticGuide)
5)   А если слова нет в базе данных, то слово в тексте заключалось  бы в такие скобки <слово>
 

Добавлено через 1 час, 14 минут и 59 секунд:
У меня есть такой макрос.
Я его переделал из другого насколько хватило мозгов. Но как сделать чтобы происходило обращение к базе данных Access или книги Exel, а не просто помещения текста между кавычками на слово слева?
(click to show)
Sub Trans()
Dim s As String
Do
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = ChrW(12298) & "*" & ChrW(12299)
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchSoundsLike = False
        .MatchWildcards = True
    End With
    Selection.Find.Execute
    s = Selection.Text
    If Len(s) < 2 Then Exit Sub 'нет искомого текста, конец работы
    s = Mid(s, 2, Len(s) - 2)   'удалить первый и последний символ
    Selection.Cut
    Selection.MoveLeft Unit:=wdWord, Count:=1, Extend:=wdExtend
    Selection.Range.PhoneticGuide Text:=s, _
        Alignment:=wdPhoneticGuideAlignmentOneTwoOne, Raise:=14, FontSize:=10 _
        , FontName:="Lucida Sans Unicode"
Loop
End Sub

Добавлено через 10 минут и 16 секунд:
Немного поправлю свой вопрос.
1)   Имеется текст в редакторе Word
2)   Нужно чтобы по каждому слову был сделан запрос к базе данных Access или к книги Exel
3)   Поиск слова в поле "ААА".
4)   Слово находящееся в ячейке поля "ВВВ"  справа от слова в поле "ААА" было помещено на слово в исходном тексте с помощью (PhoneticGuide)
5)   А если слова нет в базе данных, то слово в тексте заключалось  бы в такие скобки <слово>
 Скромно так...
« Последнее редактирование: 30-05-2011 18:05 от rikomono » Записан
HandKot
Молодой специалист

ru
Offline Offline

« Ответ #1 : 31-05-2011 05:08 » 

примерно так, но, скажу сразу, макрос не работает
придется доработать напильником  Внимание! Говорит и показывает...

Код:
Public Sub test()
    Dim w As Range
    Dim i As Integer
    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
   
    'открываем соединение к БД
    Set cn = New ADODB.Connection
    cn.ConnectionString = "тута строка подключения"
   
    'бежим по всем словам в тексте
    For i = 1 To ThisDocument.Words.Count
        'ищем слово в БД
        rs.Open cn, "select BBB from Таблица where AAA = '" + w.Text + "'"
       
        'Слово находящееся в ячейке поля "ВВВ"  справа от слова в поле "ААА" было помещено на слово в исходном тексте с помощью (PhoneticGuide
        If Not rs.EOF Then
            Set w = ThisDocument.Words.Item(i)
            If Asc(w.Text) > 30 Then w.PhoneticGuide Text:="qqq", Alignment:=wdPhoneticGuideAlignmentOneTwoOne, Raise:=14, FontSize:=10, FontName:="Lucida Sans Unicode"
       
        ' А если слова нет в базе данных, то слово в тексте заключалось  бы в такие скобки <слово>
        Else
             w.Text = "<" + w.Text + ">"
        End If
        rs.Close
    Next
   
    Set rs = Nothing
    cn.Close
    Set cn = Nothing
End Sub
Записан

I Have Nine Lives You Have One Only
THINK!
rikomono
Интересующийся

ru
Offline Offline

« Ответ #2 : 31-05-2011 05:34 » 

примерно так, но, скажу сразу, макрос не работает
придется доработать напильником  Внимание! Говорит и показывает...

Спасибо. Пойду искать напильник, если мозгов хватит  Улыбаюсь

Добавлено через 11 часов, 21 минуту и 9 секунд:
примерно так, но, скажу сразу, макрос не работает
Мне помогли, написали вот такой макрос, но он тоже не работает http://narod.ru/disk/14632215001/%D0%90%D0%90%D0%90.rar.html
Там нужно как я понял две базы одна в Exel, а другая в Access и ещё вставить кусок кода?
« Последнее редактирование: 31-05-2011 16:55 от rikomono » Записан
rikomono
Интересующийся

ru
Offline Offline

« Ответ #3 : 31-05-2011 17:21 » 

Код:
Public Sub test()
    Dim w As Range
    Dim i As Integer
    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
   
    'открываем соединение к БД
    Set cn = New ADODB.Connection
    cn.ConnectionString = "тута строка подключения"
   
    'бежим по всем словам в тексте
    For i = 1 To ThisDocument.Words.Count
        'ищем слово в БД
        rs.Open cn, "select BBB from Таблица where AAA = '" + w.Text + "'"
       
        'Слово находящееся в ячейке поля "ВВВ"  справа от слова в поле "ААА" было помещено на слово в исходном тексте с помощью (PhoneticGuide
        If Not rs.EOF Then
            Set w = ThisDocument.Words.Item(i)
            If Asc(w.Text) > 30 Then w.PhoneticGuide Text:="qqq", Alignment:=wdPhoneticGuideAlignmentOneTwoOne, Raise:=14, FontSize:=10, FontName:="Lucida Sans Unicode"
       
        ' А если слова нет в базе данных, то слово в тексте заключалось  бы в такие скобки <слово>
        Else
             w.Text = "<" + w.Text + ">"
        End If
        rs.Close
    Next
   
    Set rs = Nothing
    cn.Close
    Set cn = Nothing
End Sub

Мне сказали, что в последнем куске кода не указана строка подключения к базе данных. А ещё для работоспособности указанного куска кода необходимо подключить к проекту VBA одну из версий библиотеки Microsoft ActiveX Data Objects. Определись, в каком формате база данных, где она находится (путь к файлу базы данных).
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 31-05-2011 17:45 » 

rikomono, сразу видно, что ты даже не прочитал, что тебе написали...

Цитата
Код:
cn.ConnectionString = "тута строка подключения"
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
rikomono
Интересующийся

ru
Offline Offline

« Ответ #5 : 31-05-2011 18:38 » 

rikomono, сразу видно, что ты даже не прочитал, что тебе написали...

Цитата
Код:
cn.ConnectionString = "тута строка подключения"
Нет я прочитал вписал туда адрес базы. Вписывал туда адрес документа Ехеl затем вписывал адрес базы Access, так и так не работает. Вылетает ошибка (Compile error: User-defined type not defined)

(click to show)
Public Sub test()
    Dim w As Range
    Dim i As Integer
    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
   
    'открываем соединение к БД
    Set cn = New ADODB.Connection
    cn.ConnectionString = "C:\DataB1.accdb"
   
    'бежим по всем словам в тексте
    For i = 1 To ThisDocument.Words.Count
        'ищем слово в БД
        rs.Open cn, "select BBB from Таблица where AAA = '" + w.Text + "'"
       
        'Слово находящееся в ячейке поля "ВВВ"  справа от слова в поле "ААА" было помещено на слово в исходном тексте с помощью (PhoneticGuide
        If Not rs.EOF Then
            Set w = ThisDocument.Words.Item(i)
            If Asc(w.Text) > 30 Then w.PhoneticGuide Text:="qqq", Alignment:=wdPhoneticGuideAlignmentOneTwoOne, Raise:=14, FontSize:=10, FontName:="Lucida Sans Unicode"
       
        ' А если слова нет в базе данных, то слово в тексте заключалось  бы в такие скобки <слово>
        Else
             w.Text = "<" + w.Text + ">"
        End If
        rs.Close
    Next
   
    Set rs = Nothing
    cn.Close
    Set cn = Nothing
End Sub
и пробовал вот так
(click to show)
Public Sub test()
    Dim w As Range
    Dim i As Integer
    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
   
    'открываем соединение к БД
    Set cn = New ADODB.Connection
    cn.ConnectionString = "C:\AAA.xlsx"
   
    'бежим по всем словам в тексте
    For i = 1 To ThisDocument.Words.Count
        'ищем слово в БД
        rs.Open cn, "select BBB from Таблица where AAA = '" + w.Text + "'"
       
        'Слово находящееся в ячейке поля "ВВВ"  справа от слова в поле "ААА" было помещено на слово в исходном тексте с помощью (PhoneticGuide
        If Not rs.EOF Then
            Set w = ThisDocument.Words.Item(i)
            If Asc(w.Text) > 30 Then w.PhoneticGuide Text:="qqq", Alignment:=wdPhoneticGuideAlignmentOneTwoOne, Raise:=14, FontSize:=10, FontName:="Lucida Sans Unicode"
       
        ' А если слова нет в базе данных, то слово в тексте заключалось  бы в такие скобки <слово>
        Else
             w.Text = "<" + w.Text + ">"
        End If
        rs.Close
    Next
   
    Set rs = Nothing
    cn.Close
    Set cn = Nothing
End Sub

Добавлено через 41 минуту и 53 секунды:
Помогите, пожалуйста, очень нужен макрос, а я к сожалению плохо разбираюсь в VBA Краснею
« Последнее редактирование: 31-05-2011 19:20 от rikomono » Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 31-05-2011 19:27 » 

Почитай вот это:
http://ru.wikipedia.org/wiki/%D0%A1%D1%82%D1%80%D0%BE%D0%BA%D0%B0_%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D1%8F

Потом сходи сюда: http://www.connectionstrings.com/
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
rikomono
Интересующийся

ru
Offline Offline

« Ответ #7 : 01-06-2011 04:53 » 

Спасибо за информацию. Я почитал.
Там для подключения к Exel 2007 (ACE OLEDB 12.0) даны следующие варианты.

(click to show)
Connection strings for Excel 2007 (ACE OLEDB 12.0)
Type:    OLE DB Provider
Usage:  Provider=Microsoft.ACE.OLEDB.12.0

Xlsx files
This one is for connecting to Excel 2007 files with the Xlsx file extension. That is the Office Open XML format with macros disabled.
Код:
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myExcel2007file.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES";
"HDR=Yes;" indicates that the first row contains columnnames, not data. "HDR=No;" indicates the opposite.

Treating data as text
Use this one when you want to treat all data in the file as text, overriding Excels column type "General" to guess what type of data is in the column.
Код:
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myExcel2007file.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES;IMEX=1";
If you want to read the column headers into the result set (using HDR=NO even though there is a header) and the column data is numeric, use IMEX=1 to avoid crash.

To always use IMEX=1 is a safer way to retrieve data for mixed data columns. Consider the scenario that one Excel file might work fine cause that file's data causes the driver to guess one data type while another file, containing other data, causes the driver to guess another data type. This can cause your app to crash.

Xlsb files
This one is for connecting to Excel 2007 files with the Xlsb file extension. That is the Office Open XML format saved in a binary format. I e the structure is similar but it's not saved in a text readable format as the Xlsx files and can improve performance if the file contains a lot of data.
Код:
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myBinaryExcel2007file.xlsb;Extended Properties="Excel 12.0;HDR=YES";
You can also use this connection string to connect to older 97-2003 Excel workbooks.

"HDR=Yes;" indicates that the first row contains columnnames, not data. "HDR=No;" indicates the opposite.
Xlsm files
This one is for connecting to Excel 2007 files with the Xlsm file extension. That is the Office Open XML format with macros enabled.
Код:
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myExcel2007file.xlsm;Extended Properties="Excel 12.0 Macro;HDR=YES";
Important note!
The quota " in the string needs to be escaped using your language specific escape syntax.
c#, c++   \"
VB6, VBScript   ""
xml (web.config etc)   &quot;
or maybe use a single quota '.

"HDR=Yes;" indicates that the first row contains columnnames, not data. "HDR=No;" indicates the opposite.
Для моего случая наверно надо использовать первый вариант. Подскажите как правильно это сделать. Я пробовал у меня не получилось
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #8 : 01-06-2011 07:22 » 

1. MS Office 2007 у тебя стоит?
2. Что  не получилось? Код в студию!
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
rikomono
Интересующийся

ru
Offline Offline

« Ответ #9 : 01-06-2011 15:27 » 

Да у меня MS Office 2007.
Вот код.
(click to show)
Public Sub test()
    Dim w As Range
    Dim i As Integer
    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
   
    'открываем соединение к БД
    Set cn = New ADODB.Connection
    cn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\AAA.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES";"
   
    'бежим по всем словам в тексте
    For i = 1 To ThisDocument.Words.Count
        'ищем слово в БД
        rs.Open cn, "select BBB from Таблица where AAA = '" + w.Text + "'"
       
        'Слово находящееся в ячейке поля "ВВВ"  справа от слова в поле "ААА" было помещено на слово в исходном тексте с помощью (PhoneticGuide
        If Not rs.EOF Then
            Set w = ThisDocument.Words.Item(i)
            If Asc(w.Text) > 30 Then w.PhoneticGuide Text:="qqq", Alignment:=wdPhoneticGuideAlignmentOneTwoOne, Raise:=14, FontSize:=10, FontName:="Lucida Sans Unicode"
       
        ' А если слова нет в базе данных, то слово в тексте заключалось  бы в такие скобки <слово>
        Else
             w.Text = "<" + w.Text + ">"
        End If
        rs.Close
    Next
   
    Set rs = Nothing
    cn.Close
    Set cn = Nothing
И ещё наверно вот в  этом месте
Код:
If Asc(w.Text) > 30 Then w.PhoneticGuide Text:="qqq", Alignment:=wdPhoneticGuideAlignmentOneTwoOne, Raise:=14, FontSize:=10, FontName:="Lucida Sans Unicode"
Вместо "qqq" должно стоять " + w.Text + "  наверно?
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #10 : 01-06-2011 17:13 » 

Гадать лучше всего на кофейной гуще. И бубен нужен настоящий, шаманский.

Если пишешь на языке, то изучи сперва его синтаксис! Когда в текст нужно вставить двойную кавычку, ее следует удвоить.

Код: (Visual Basic)
x = "aaaa""bbbb"""
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
rikomono
Интересующийся

ru
Offline Offline

« Ответ #11 : 01-06-2011 23:40 » 

Гадать лучше всего на кофейной гуще. И бубен нужен настоящий, шаманский.

Если пишешь на языке, то изучи сперва его синтаксис!

Я не гадаю на кофейной гуще, я просто не знаю VBA, но мне очень нужен этот макрос. Я для дочери делаю фонетическое руководство. Вот и пришёл на форум программистов за помощью.
Вот мне один хороший человек написал макрос он почти работает. А точнее он работает только если каждое слово на новой строке. Там он сказал происходит слияние двух баз затем разведка в базах что это оптимально потому что каждый раз не надо дёргать базы. При первом запросе надо открыть базу Exel при втором базу Access. http://narod.ru/disk/14767153001/%2B%2B%2B.rar.html
Мне действительно очень нужен этот макрос в нормальном рабочем состоянии, можно платно в разумных пределах.
« Последнее редактирование: 01-06-2011 23:52 от rikomono » Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #12 : 02-06-2011 03:17 » 

rikomono, эх, вот воя строчка:

Код:
cn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\AAA.xlsx;Extended Properties=""Excel 12.0 Xml;HDR=YES"";"


Макрос твой хреновый и работать не будет. Тут еще горы несуразностей.

Код: (Visual Basic)
  1. Public Sub test()
  2.     Dim w As Range
  3.     Dim i As Integer
  4.     Dim cn As ADODB.Connection
  5.     Dim rs As ADODB.Recordset
  6.    
  7.     'открываем соединение к БД
  8.    Set cn = New ADODB.Connection
  9.     cn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\AAA.xlsx;Extended Properties=""Excel 12.0 Xml;HDR=YES"";"
  10.  
  11.     Set rs = New ADODB.Recordset ' ------- Почему-то данной строчки не было.
  12.  
  13.     'бежим по всем словам в тексте
  14.    For i = 1 To ThisDocument.Words.Count
  15.         'ищем слово в БД  ------- Какое слово? Откуда оно взялось?
  16.        rs.Open cn, "select BBB from Таблица where AAA = '" + w.Text + "'"
  17.        
  18.         'Слово находящееся в ячейке поля "ВВВ"  справа от слова в поле "ААА" было помещено на слово в исходном тексте с помощью (PhoneticGuide
  19.        If Not rs.EOF Then
  20.             Set w = ThisDocument.Words.Item(i)
  21.             If Asc(w.Text) > 30 Then w.PhoneticGuide Text:=rs!BBB, Alignment:=wdPhoneticGuideAlignmentOneTwoOne, Raise:=14, FontSize:=10, FontName:="Lucida Sans Unicode"
  22.        
  23.         ' А если слова нет в базе данных, то слово в тексте заключалось  бы в такие скобки <слово>
  24.        Else
  25.              w.Text = "<" + w.Text + ">"
  26.         End If
  27.         rs.Close
  28.     Next
  29.    
  30.     Set rs = Nothing
  31.     cn.Close
  32.     Set cn = Nothing

Строчку 20, полагаю, надо пеместить на 15-ю позицию.

« Последнее редактирование: 02-06-2011 06:48 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
HandKot
Молодой специалист

ru
Offline Offline

« Ответ #13 : 02-06-2011 04:14 » 

Цитата
Строчку 20, полагаю, надо пеместить на 15-ю позицию.
это точно

скажу сразу, что не получилось
цикл зацикливался после команды PhoneticGuide (но лучше проверить)
возможно обойти эту проблему можно заменив
Код:
For i = 1 To ThisDocument.Words.Count
на обратный ход, но точной уверенности нет
Записан

I Have Nine Lives You Have One Only
THINK!
rikomono
Интересующийся

ru
Offline Offline

« Ответ #14 : 02-06-2011 06:26 » 

Цитата
Макрос твой хреновый и работать не будет. Тут еще горы несуразностей.
Да Вы правы он не работает, но вот посмотрите вот этот он почти работает +++.rar,запустить макрос start при первом запросе надо открыть базу Exel при втором базу Access (он работает только если каждое слово на новой строке).

Как бы сделать так, чтобы макрос start производил операцию (PhoneticGuide) в обычном тексте, а не когда каждое слово на отдельной строке.
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #15 : 02-06-2011 06:54 » 

rikomono, трудно понять, читаешь ли ты, что мы тебе пишем.

Короче, вот, что коллективный разум предложил:

Код: (Visual Basic)
  1. Public Sub test()
  2.     Dim w As Range
  3.     Dim i As Integer
  4.     Dim cn As New ADODB.Connection
  5.     Dim rs As New ADODB.Recordset
  6.    
  7.     cn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\AAA.xlsx;Extended Properties=""Excel 12.0 Xml;HDR=YES"";"
  8.    
  9.     'бежим по всем словам в тексте
  10.    For i = ThisDocument.Words.Count To 1 Step -1
  11.         Set w = ThisDocument.Words.Item(i)
  12.         'ищем слово в БД
  13.        rs.Open cn, "select BBB from Таблица where AAA = '" + w.Text + "'"
  14.        
  15.         'Слово находящееся в ячейке поля "ВВВ"  справа от слова в поле "ААА" было помещено на слово в исходном тексте с помощью PhoneticGuide
  16.        If Not rs.EOF Then
  17.             If Asc(w.Text) > 30 Then w.PhoneticGuide Text:=rs!BBB, Alignment:=wdPhoneticGuideAlignmentOneTwoOne, Raise:=14, FontSize:=10, FontName:="Lucida Sans Unicode"
  18.        
  19.         ' А если слова нет в базе данных, то слово в тексте заключалось  бы в такие скобки <слово>
  20.        Else
  21.              w.Text = "<" + w.Text + ">"
  22.         End If
  23.         rs.Close
  24.     Next
  25.    
  26.     Set rs = Nothing
  27.     cn.Close
  28.     Set cn = Nothing
  29. End Sub

Мне только не понятен смысл "Asc(w.Text) > 30" в строке 17.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
rikomono
Интересующийся

ru
Offline Offline

« Ответ #16 : 02-06-2011 16:10 » 

RXL, у меня вопрос, а макрос который Вы предложили у Вас работает?
У меня он не работает. Может я его как-то  не так запускаю или у меня чего нибудь не установлено?
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #17 : 02-06-2011 19:18 » 

Я его не проверял. Непонятное я указал постом выше - остальное очевидно.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
HandKot
Молодой специалист

ru
Offline Offline

« Ответ #18 : 03-06-2011 04:37 » new

Цитата: RXL
Мне только не понятен смысл "Asc(w.Text) > 30" в строке 17.
а это чтобы он не обрабатывал спец символы они вроде как отдельное слово или я что-то путаю Улыбаюсь

Цитата:  rikomono
У меня он не работает
он работает, только что проверил, но надо доработать напильником
Записан

I Have Nine Lives You Have One Only
THINK!
Fedor
Новенький

ru
Offline Offline

« Ответ #19 : 02-02-2014 07:31 » 

Господа мне тоже нужен такой код!
Последний из предложенных выдаёт ошибку User-defined type not defined и показывает на "cn As New ADODB.Connection" из четвертой строки. Прошу не ругаться если вопрос глупый, как исправить? и как должен называться файл базы данных excel (это имя в коде указано?)?
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #20 : 02-02-2014 08:50 » 

Fedor, надо подключить COM-объект. Как - не скажу, MSO давно уже под рукой нет.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
HandKot
Молодой специалист

ru
Offline Offline

« Ответ #21 : 03-02-2014 04:20 » 

выдаёт ошибку User-defined type not defined и показывает на "cn As New ADODB.Connection" из четвертой строки.
либо подключите библиотеку Microsoft ActiveX Data Objects x.x  Library
либо замените эту строку на две
Код:
Dim cn As Object
Set cn = CreateObject("ADODB.Connection")

Записан

I Have Nine Lives You Have One Only
THINK!
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines