Run time error 3706 vba excel

  • Remove From My Forums
  • Question

  • I am trying to connect to an Oracle Database from Excel VBA and have Windows7 SP1 installed on my machine.

    I am getting an error message when it tries to open the connection, I have also installed Oracle Client and SQL Developer and the same connection string works fine from SQL Developer but not VBA.

    Earlier I was using provider as OraOLEDB.Oracle but I was getting  RunTime Error -2147467259(80004005) Automation Unspecified error, then I removed . Oracle from it which led to 3706 error.

    Could you please suggest me something here as now i have spent 2 days almost here with nothing working out, am I missing any driver or setting ?

    PFB the snippet of code, also i have added MS Active X Dataobject 6.1 library and MS Active X Data Object recordset 6.0 library.

    Conn_String = «Provider=OraOLEDB;Data Source=(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 123)(PORT = 123)) )(CONNECT_DATA =(SERVICE_NAME = abc)));User
    Id=abc;Password=abc;»
        Set cn = New ADODB.Connection

       
        With cn
             .ConnectionString = Conn_String
             .CursorLocation = adUseClient
             .Open
        End With
        If cn.State = adStateOpen Then
            MsgBox («connected successfully.»)
        Else: MsgBox («Error in connection.»)
        End If

Answers

  • Hi,

    >>I am getting an error message when it tries to open the connection, I have also installed Oracle Client and SQL Developer and the same connection string works fine from SQL Developer but not VBA.<<

    According to your description, I assume the code has no compile error since it can connect to SQL Server successfully. So the issue may be more related to the connection string or your Oracle provider rather than
    development of Excel or VBA. Please check whether the provider is correct in your connection string.

    After researching, I find the Runtime Error 3706 means «Provider cannot be found».

    Here is a KB article about this topic for your reference:
    PRB: ERR «ADO Could Not Find The Specified Provider»

    The MSDASQL OLE DB provider is either unavailable or is not registered. This can be caused by an incomplete upgrade or a bad install of the   Microsoft Data Access Components (MDAC) components.

    Here are two ways to resolve this problem:   

    • Register the Msdasql.dll using the following command:

            REGSVR32 «C:Program FilesCommon FilesSystemole dbMSDASQL.DLL»

    • Reinstall the Microsoft Data Access Components used. The newest version of MDAC can be downloaded from the following Web site:

    By the way, since this forum is for Office development, for more question about connect to Oracle, you could also consider posting in
    Oracle official forum for more responses. 


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.

    Click
    HERE to participate the survey.

    • Edited by

      Friday, April 11, 2014 7:32 AM

    • Marked as answer by
      Luna Zhang — MSFT
      Wednesday, April 16, 2014 7:40 AM

  • Thanks Luna for your reply, I uninstalled the Oracle client and installed it manually and it worked, Thanks.

    • Edited by
      PoonamDubey
      Friday, April 11, 2014 11:38 AM
    • Marked as answer by
      Luna Zhang — MSFT
      Wednesday, April 16, 2014 7:41 AM

I am trying to connect Visual Basic to MS Access using ADODB. But as I execute my code, it prompts: «Provider cannot be found.It may not be installed properly.» But when I check on my directory I’ve got my «msjetoledb40.dll» installed.

Here is my code:

Dim conn As ADODB.Connection, rec As ADODB.Recordset

    Sub sample()

    Set conn = New ADODB.Connection

    conn.Open ("Provider=Microsoft.Jet.OLEDB 4.0;Data Source=C:sample.mdb;Persist Security Info=false;")
End Sub

JustinJDavies's user avatar

asked Nov 29, 2013 at 5:18

Kentot's user avatar

1

This would be better:

Sub sample()

  Dim conn As ADODB.Connection, rec As ADODB.Recordset
  Set conn = New ADODB.Connection
  conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:sample.mdb;"
  conn.Open
End Sub

You missed a point.

Microsoft.Jet.OLEDB 4.0 => Microsoft.Jet.OLEDB.4.0

Ref: http://www.connectionstrings.com/.

answered Nov 29, 2013 at 7:26

jacouh's user avatar

jacouhjacouh

8,3275 gold badges30 silver badges43 bronze badges

1

Confirming the version of your MS Office on which the script is running. If you have installed MS Office 2013 or later, you should revise the connection string from:

Provider=Microsoft.Jet.OLEDB 4.0;Data Source=C:sample.mdb;Persist Security Info=false;

to:

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:sample.mdb;Persist Security Info=false;

At least, this sovled my problem.

answered Nov 15, 2017 at 2:45

Sheng Huang's user avatar

My solution:

Error 3706

cs = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & sPath & ";Persist Security Info=False;"

Just Change 12.0 for 15.0

cs = "Provider=Microsoft.ACE.OLEDB.15.0;Data Source=" & sPath & ";Persist Security Info=False;"

and works, always you must to try change the version of the controller!.

msanford's user avatar

msanford

11.6k10 gold badges67 silver badges92 bronze badges

answered Aug 16, 2017 at 18:58

Luis's user avatar

Icon Ex Номер ошибки: Ошибка 3706
Название ошибки: Excel Error 3706
Описание ошибки: Ошибка 3706: Возникла ошибка в приложении Microsoft Excel. Приложение будет закрыто. Приносим извинения за неудобства.
Разработчик: Microsoft Corporation
Программное обеспечение: Microsoft Excel
Относится к: Windows XP, Vista, 7, 8, 10, 11

Определение «Excel Error 3706»

Это наиболее распространенное условие «Excel Error 3706», известное как ошибка времени выполнения (ошибка). Разработчики программного обеспечения, такие как Microsoft Corporation, обычно принимают Microsoft Excel через несколько уровней отладки, чтобы сорвать эти ошибки перед выпуском для общественности. Тем не менее, возможно, что иногда ошибки, такие как ошибка 3706, не устранены, даже на этом этапе.

После установки программного обеспечения может появиться сообщение об ошибке «Excel Error 3706». Когда появится ошибка, пользователи компьютеров смогут уведомить разработчика о наличии ошибки 3706 через отчеты об ошибках. Microsoft Corporation вернется к коду и исправит его, а затем сделает обновление доступным для загрузки. Поэтому, когда вы сталкиваетесь с запросом на обновление Microsoft Excel, это обычно связано с тем, что это решение для исправления ошибки 3706 и других ошибок.

Как триггеры Runtime Error 3706 и что это такое?

Сбой во время выполнения Microsoft Excel, как правило, когда вы столкнетесь с «Excel Error 3706» в качестве ошибки во время выполнения. Проанализируем некоторые из наиболее распространенных причин ошибок ошибки 3706 во время выполнения:

Ошибка 3706 Crash — Номер ошибки вызовет блокировка системы компьютера, препятствуя использованию программы. Обычно это происходит, когда Microsoft Excel не может обработать данные в удовлетворительной форме и поэтому не может получить ожидаемый результат.

Утечка памяти «Excel Error 3706» — Когда Microsoft Excel обнаруживает утечку памяти, операционная система постепенно работает медленно, поскольку она истощает системные ресурсы. Возможные искры включают сбой освобождения, который произошел в программе, отличной от C ++, когда поврежденный код сборки неправильно выполняет бесконечный цикл.

Ошибка 3706 Logic Error — логическая ошибка Microsoft Excel возникает, когда она производит неправильный вывод, несмотря на то, что пользователь предоставляет правильный ввод. Это видно, когда исходный код Microsoft Corporation включает дефект в анализе входных данных.

Как правило, такие Microsoft Corporation ошибки возникают из-за повреждённых или отсутствующих файлов Excel Error 3706, а иногда — в результате заражения вредоносным ПО в настоящем или прошлом, что оказало влияние на Microsoft Excel. Как правило, решить проблему можно заменой файла Microsoft Corporation. В некоторых случаях реестр Windows пытается загрузить файл Excel Error 3706, который больше не существует; в таких ситуациях рекомендуется запустить сканирование реестра, чтобы исправить любые недопустимые ссылки на пути к файлам.

Классические проблемы Excel Error 3706

Общие проблемы Excel Error 3706, возникающие с Microsoft Excel:

  • «Ошибка Excel Error 3706. «
  • «Ошибка программного обеспечения Win32: Excel Error 3706»
  • «Возникла ошибка в приложении Excel Error 3706. Приложение будет закрыто. Приносим извинения за неудобства.»
  • «Excel Error 3706 не может быть найден. «
  • «Excel Error 3706 не найден.»
  • «Проблема при запуске приложения: Excel Error 3706. «
  • «Excel Error 3706 не выполняется. «
  • «Excel Error 3706 остановлен. «
  • «Ошибка пути программного обеспечения: Excel Error 3706. «

Ошибки Excel Error 3706 EXE возникают во время установки Microsoft Excel, при запуске приложений, связанных с Excel Error 3706 (Microsoft Excel), во время запуска или завершения работы или во время установки ОС Windows. При появлении ошибки Excel Error 3706 запишите вхождения для устранения неполадок Microsoft Excel и чтобы HelpMicrosoft Corporation найти причину.

Причины ошибок в файле Excel Error 3706

Эти проблемы Excel Error 3706 создаются отсутствующими или поврежденными файлами Excel Error 3706, недопустимыми записями реестра Microsoft Excel или вредоносным программным обеспечением.

В основном, осложнения Excel Error 3706 связаны с:

  • Недопустимый Excel Error 3706 или поврежденный раздел реестра.
  • Вирус или вредоносное ПО, которые повредили файл Excel Error 3706 или связанные с Microsoft Excel программные файлы.
  • Excel Error 3706 злонамеренно удален (или ошибочно) другим изгоем или действительной программой.
  • Другая программа, конфликтующая с Excel Error 3706 или другой общей ссылкой Microsoft Excel.
  • Неполный или поврежденный Microsoft Excel (Excel Error 3706) из загрузки или установки.

Продукт Solvusoft

Загрузка
WinThruster 2022 — Проверьте свой компьютер на наличие ошибок.

Совместима с Windows 2000, XP, Vista, 7, 8, 10 и 11

Установить необязательные продукты — WinThruster (Solvusoft) | Лицензия | Политика защиты личных сведений | Условия | Удаление

  • Remove From My Forums
  • Question

  • Hi all,

    I recently (after a lot of sweat) Managed to install VB6 on Win8.

    Fact is I get Runtime 3706 error (Provider not found, it may be not properly installed) when trying to connect to na accdb (Access 2010 database) vi aMicrosoft.Ace.oledb.12.0,

    The amusing part is that Microsoft.Ace.oledb.12.0 is fully working and being recognized by Excel (VBA).

    Since I have a bag full of some 5 years of médium-t0-big Works in VB6, and, being 70yrs old, have not the nerve, nor the skills to migrate all the bulk to VS 2010, please, help

    • Moved by

      Monday, November 19, 2012 9:00 AM
      (From:Visual Basic General)

Скрипт

5468 / 1148 / 50

Регистрация: 15.09.2012

Сообщений: 3,514

1

07.11.2013, 15:06. Показов 14985. Ответов 5

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Скажите, пожалуйста, какая ошибка в макросе.
Ошибка возникает в строке 20. Полный текст ошибки: Run-time Error ‘3706’ Не удается найти указанный поставщик. Возможно, он установлен неправильно.

Макрос

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub Procedure_1()
    
    'Путь к папке, где содержатся текстовые файлы.
    Const myFolderPath As String = "C:UsersUserDesktop;"
        
    'Библиотека "Microsoft ActiveX Data Objects версия Library".
    Dim myConnection As ADODB.Connection
    
    
    'Создание объекта "Connection".
    Set myConnection = CreateObject(Class:="ADODB.Connection")
    
    'Указываем, какой провайдер нужно использовать, адрес базы данных,
        'дополнительные параметры.
    myConnection.ConnectionString = _
        "Provider={Microsoft Text Driver (*.txt; *.csv)};DBQ=" & myFolderPath & _
        "Extensions=asc,csv,tab,txt"
 
    'Подключение к базе данных.
    myConnection.Open
    
End Sub

Вообще задача следующая: нужно из Excel получить доступ к CSV-файлу, чтобы работать с CSV-файлом не в программе «Excel», а как с базой данных. Так по идее правильнее будет.

Ещё хотелось бы пользоваться одним поставщиком (а не несколькими) в разных версиях «MS Office».

Примечание

Поставщик (имеет ещё название «провайдер») — это программа, которая подключается к базе данных. База данных в данной теме — это CSV-файл. Поставщик в данной теме «Microsoft Text ODBC Driver» (в макросе поставщик записан «{Microsoft Text Driver (*.txt; *.csv)}».
Библиотека «ADO» подключается к поставщику.
Макрос подключается к библиотеке «ADO».



0



Аксима

6076 / 1320 / 195

Регистрация: 12.12.2012

Сообщений: 1,023

07.11.2013, 16:28

2

Здравствуйте, Скрипт,

Есть несколько замечаний по вашей строке подключения:

  1. Рассмотрим часть вашей строки подключения «Provider={Microsoft Text Driver (*.txt; *.csv)}…». Название параметра здесь не Provider, а Driver. Смотрите официальную статью Microsoft, раздел «Строки подключения ODBC».
  2. После замены названия параметра мы обнаружим, что в вашей строке подключения не указан поставщик (Provider). Нужно его указать.

На моей машине из числа ODBC поставщиков есть поставщик MSDASQL, а исправленная программа выглядит так:

ODBC подключение к текстовому файлу

Visual Basic
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
Sub Procedure_1()
 
    Const Q As String = """"
    
    'Ïóòü ê ïàïêå, ãäå ñîäåðæàòñÿ òåêñòîâûå ôàéëû.
    Const myFolderPath As String = "C:UsersUserDesktop"
    
    'Èìÿ òåêñòîâîãî ôàéëà.
    Const myDatabaseFile As String = "test.csv"
    
    'Îáúÿâëÿåì ïåðåìåííûå îáúåêòíîãî òèïà (èñïîëüçóåì ïîçäíåå ñâÿçûâàíèå).
    Dim myConnection As Object
    Dim myRecordset As Object
 
    'Ñîçäàåì îáúåêò "Connection".
    Set myConnection = CreateObject(Class:="ADODB.Connection")
    
    'Óêàçûâàåì, êàêîé ïðîâàéäåð íóæíî èñïîëüçîâàòü, àäðåñ áàçû äàííûõ,
        'äîïîëíèòåëüíûå ïàðàìåòðû.
    myConnection.ConnectionString = _
        "Provider=MSDASQL.1;" & _
        "Extended Properties=" & _
        Q & _
            "Driver={Microsoft Access Text Driver (*.txt, *.csv)};" & _
            "DBQ=" & myFolderPath & ";" & _
            "Extensions=txt,csv,tab,asc;" & _
            "FileDSN=" & myFolderPath & "" & myDatabaseFile & ".dsn" & _
        Q
 
    'Ïîäêëþ÷àåìñÿ ê áàçå äàííûõ.
    myConnection.Open
    
    'Ñîçäàåì îáúåêò "Recordset".
    Set myRecordset = CreateObject(Class:="ADODB.Recordset")
    
    'Óêàçûâàåì ñîåäèíåíèå, èñïîëüçóåìîå îáúåêòîì "Recordset".
    myRecordset.ActiveConnection = myConnection
    
    'Âûïîëíÿåì çàïðîñ ê áàçå äàííûõ.
    myRecordset.Open "SELECT * FROM " & myDatabaseFile
    
    'Òåñòèðóåì ðåçóëüòàò çàïðîñà.
    With myRecordset.Fields(0)
        Debug.Print "Ïåðâîå çíà÷åíèå ïîëÿ " & Q & .Name & Q & " ðàâíî " & .Value
    End With
    
    'Çàêðûâàåì íàáîð çàïèñåé.
    myRecordset.Close
    
    'Îñâîáîæäàåì ñîåäèíåíèå.
    myConnection.Close
    
End Sub

С уважением,

Aksima



1



5468 / 1148 / 50

Регистрация: 15.09.2012

Сообщений: 3,514

07.11.2013, 17:25

 [ТС]

3

Aksima, строку подключения я смотрел на специальном сайте (http://www.connectionstrings.com/textfile/), но название параметра не заметил. Сделал вместо слова «Provider» слово «Driver» и заработало.

Aksima, сейчас посмотрел в интернете, но не понял до конца (статьи на английском находил). Я правильно понял, что в текстовых файлах разделитель между полями при использовании «ADO» можно устанавливать только в двух местах:

  1. Windows-реестр;
  2. нужно создать текстовый файл и поместить его в специальное место. Из этого текстового файла макрос будет брать разделитель.

Если это так, то, наверное, в моём случае не подходит использование «ADO», т.к. сложно всё получается.

Мне нужно указать разделитель «;».



0



6076 / 1320 / 195

Регистрация: 12.12.2012

Сообщений: 1,023

07.11.2013, 17:42

4

Здравствуйте, Скрипт,

Да, вы правы. Если нужно использовать особый разделитель, то необходимо либо изменить соответствующую запись в реестре, либо использовать файл schema.ini.

По ссылке Excel, csv & Query вы можете найти мое решение этой проблемы.

С уважением,

Aksima



1



5468 / 1148 / 50

Регистрация: 15.09.2012

Сообщений: 3,514

07.11.2013, 18:26

 [ТС]

5

Aksima, я подробно не вчитывался в тему, ссылку на которую Вы дали в предыдущем сообщении (надо много времени потратить, прежде, чем осмыслить, что в той теме), но понял, что Вы используете текстовый файл, в котором есть информация о разделителе.

Буду знать, что не всё так просто с «ADO» и текстовыми файлами.

Aksima, не подскажите, в какой строке этого кода https://www.cyberforum.ru/post5065494.html указывается специальный текстовый файл с информацией о разделителях? Всматриваюсь и не могу найти.



0



Аксима

6076 / 1320 / 195

Регистрация: 12.12.2012

Сообщений: 1,023

07.11.2013, 22:22

6

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

Однако необходимо, чтобы этот файл лежал в той же папке, что и csv-файл. Когда драйвер будет его обрабатывать, он самостоятельно проверит наличие в папке csv-файла файла схемы данных и если он есть — применит указанные в нем настройки.

Если вы посмотрели далее в этой же теме еще один листинг, то наверняка обратили внимание на то, что при программном создании файла schema.ini я располагаю его в той же папке, где и csv-файл. Таким образом, указанное выше условие соблюдается.

Visual Basic
1
2
3
4
5
6
7
p = Application.GetOpenFilename("CSV data logs,*.csv", , _
    "Укажите расположение csv-файла", , False)
' ...
p = Left(p, InStrRev(p, "")) 'Путь к папке csv-файла.
' ...
Open p & "schema.ini" For Output As #1
' ...

С уважением,

Aksima



1



Понравилась статья? Поделить с друзьями:
  • Run time error 2147467259 80004005 vba excel
  • Run time error 2147467259 80004005 from excel
  • Run time error 2147417848 80010108 vba excel
  • Rtf в word на русском
  • Run time error 13 type mismatch ошибка как исправить excel