Как получить MS EXCEL для подключения к базе данных MYSQL. Excel подключение к mysql


Обмен данными между Excel и MySQL

Вряд ли мы откроем секрет, если скажем, что MySQL является на сегодняшний день одной из наиболее доступных реляционных СУБД. Она бесплатна, стабильна в работе и ко всему прочему отличается неплохим быстродействием. Не случайно эта система управления базами данных пользуется огромной популярностью у разработчиков веб-приложений, построенных на основе клиент-серверной технологии.Конечно, время никогда не проходит даром, в том числе и для MySQL. Эволюционировав до 5й версии, она значительно возмужала и обзавелась отсутствующими ранее функциями (поддержкой триггеров, вложенных запросов и др.), но… "У "Жигулей" тоже четыре колеса, фары, руль и прочие атрибуты, но это не Mercedes. Точно так же и MySQL — это не Oracle", — процитировал мне знакомый программист, пытаясь объяснить разницу между существующими платформами для хранения данных. Глубокомысленное высказывание, ничего не скажешь. Ладно, долой философию, займемся делом, а именно — обменом данных в связке "Microsoft Excel — MySQL".

Матерым программистам баз данных наверняка по зубам эта операция, но мы облегчим свою участь при помощи специальной надстройки к табличному редактору Excel с длиннющим названием Excel to MySQL Import, Export & Convert 1.1 от компании Sobolsoft. Размер утилиты — 5,7 Мб, стоимость — 20 долларов США.

Установка приложения проходит без шума и пыли, единственное, необходимо понизить уровень безопасности Excel (Сервис -> Макрос -> Безопасность), разрешив ему выполнять макросы.

Перед началом работы нужно подключить базу данных при помощи специального мастера Setup MySQL Database Connection и установить соединение. А далее все как по маслу: при желании можно экспортировать выбранные ячейки в таблицу MySQL, либо, напротив, импортировать нужную информацию из базы данных. Естественно, без хотя бы минимальных знаний основ языка структурированных запросов SQL здесь не обойтись, но это не страшно — ведь документации навалом.

Что до области применения этой утилитки от Sobolsoft, то она воистину многогранна, начиная от использования в качестве удобного инструмента для операторов баз данных и заканчивая эксплуатацией в собственных программных разработках. На этой оптимистической ноте и поставим точку в нашей маленькой заметке.

www.internet-technologies.ru

vba - Подключение Excel к MySQL и SQLExecute для нескольких пользователей

Мне нужно разработать таблицу Excel, используемую всеми нашими сотрудниками для сбора данных о сроках и других связанных с проектом данных. Эти сотрудники имеют ряд версий Microsoft Office Excel. Мой план состоит в том, чтобы использовать MySQL Server (а не MS SQL) для сбора информации из этих электронных таблиц каждый раз, когда она обновляется или сохраняется.

Проблема:

Оригинальная система - система на основе excel, которая становится слишком большой. Эта новая система должна быть реализована параллельно и устранена громоздкой по мере продвижения, пока у нас не будет полной новой системы, которую все понимают (т.е. внедряя новый материал по частям).

Вопрос:

  1. Есть ли способ сделать это без VBA и жить? Если нет, мне нужен код для выполнения, когда электронная таблица будет сохранена. Код должен принимать значения из электронной таблицы и записывать их в определенное поле в таблице базы данных (INSERT INTO или UPDATE sql statements).
  2. Каков самый простой способ реализовать это (без необходимости устанавливать что-либо на всех компьютерах-сотрудниках, т.е. Эта таблица будет работать как-то развитая)?
  3. Мне нужно получить эту информацию для обработки в электронной таблице управления (т.е. импортировать последнюю информацию, полученную из таблиц базы данных MySQL). Что мне нужно сделать (я могу использовать VBA здесь) - Statement, такой как Select * from table_timesheets.
  4. Без компрометации привилегированной информации (например, расходов на зарплату) мне нужно, чтобы многие сотрудники/руководители проектов рассматривали ценность своих отдельных проектов в новой электронной таблице. (Я думаю, если я пойму пункт 3, я смогу сделать это).

Информация:

Версия MySQL: 5.1.73. База данных будет размещаться на локальном сетевом сервере на компьютере под управлением Windows. Внутренний IP-адрес сети фиксирован.

Любые предложения, пожалуйста.

задан Ryno Nel 02 дек. '16 в 17:11 источник поделиться

qaru.site

vba - Открытое подключение к MySQL из VBA Excel 2007

возможно, это может помочь вам/другим:

Добавьте эту ссылку в свой проект: Объект данных Microsoft ActiveX 2 (или любой более высокий вариант, который у вас есть)

Бросьте этот код в модуль и сохраните его: отредактируйте данные сервера в этом модуле.

'--------------------------------------------------------------------------------------- ' Module : Mod_Connection ' Author : Krish km, xkrishx.wordpress.com ' Date : 27/08/2014 ' Purpose : use this for build mysql connectin string. ' Declaration: © Krish KM, 2014. ' : Free to modify and re-use as long as a clear credit is made about the orgin of the code and the link above ' : This script is distributed in the hope that it will be useful, ' : but WITHOUT ANY WARRANTY; without even the implied warranty of ' : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ' : GNU General Public License for more details. '--------------------------------------------------------------------------------------- Option Explicit Public ConnectionString As String Private Const HKEY_LOCAL_MACHINE = &H80000002 Public Function GET_CURRENT_DRIVER() As String '--------------------------------------------------------------------------------------- ' Procedure : GET_CURRENT_DRIVER ' Author : Krish km ' Date : 27/08/2014 ' Purpose : This function returns available mysql odbc drivers found in the registry. You could search by MySQL ODBC and get the first result ' : but I prefer prioritize the drivers i would like to yield first '--------------------------------------------------------------------------------------- ' If FIND_ODBC_DRIVER(GET_ODBC_DRIVER_NAMES, "MySQL ODBC 5.2 Unicode Driver") <> "" Then GET_CURRENT_DRIVER = "MySQL ODBC 5.2 Unicode Driver" ElseIf FIND_ODBC_DRIVER(GET_ODBC_DRIVER_NAMES, "MySQL ODBC 5.2w Driver") <> "" Then GET_CURRENT_DRIVER = "MySQL ODBC 5.2w Driver" Else GET_CURRENT_DRIVER = FIND_ODBC_DRIVER(GET_ODBC_DRIVER_NAMES, "MySQL ODBC") End If End Function Public Function GET_CONNECTION_STRING() As String '--------------------------------------------------------------------------------------- ' Procedure : GET_CONNECTION_STRING ' Author : Krish KM ' Date : 27/08/2014 ' Purpose : Returns MySQL connection string '--------------------------------------------------------------------------------------- ' If Not ConnectionString = vbNullString Then GET_CONNECTION_STRING = ConnectionString Else Dim Driver As String Dim mDatabase As String Dim mServer As String Dim mUser As String Dim mPassword As String Dim mPort As Integer mDatabase = "" ' DB name mServer = "" ' Server name mUser = "" ' DB user name mPassword = "" ' DB user password mPort = 3306 ' DB port Driver = GET_CURRENT_DRIVER If Driver = "" Then Err.Raise 1, Err.Source, "MYSQL ODBC drivers are missing" Exit Function End If ConnectionString = "DRIVER={" & Driver & "};PORT=" & mPort & ";DATABASE=" & mDatabase & ";SERVER={" & mServer & "};UID=" & mUser & ";PWD={" & mPassword & "};" GET_CONNECTION_STRING = ConnectionString End If End Function Public Function GET_ODBC_DRIVER_NAMES() '--------------------------------------------------------------------------------------- ' Procedure : GET_ODBC_DRIVER_NAMES ' Author : Krish KM ' Date : 27/08/2014 ' Purpose : Checks in the registry for any odbc driver signatures and returns the collection '--------------------------------------------------------------------------------------- ' Dim strComputer As String, strKeyPath As String Dim objRegistry As Object, arrValueNames, arrValueTypes strComputer = "." strKeyPath = "SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers" Set objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv") objRegistry.EnumValues HKEY_LOCAL_MACHINE, strKeyPath, arrValueNames, arrValueTypes GET_ODBC_DRIVER_NAMES = arrValueNames End Function Public Function FIND_ODBC_DRIVER(ByVal iArr, ByVal sValue) As String '--------------------------------------------------------------------------------------- ' Procedure : FIND_ODBC_DRIVER ' Author : Krish KM ' Date : 27/08/2014 ' Purpose : Simple array function to check if a specific value exists. if yes return the value if not return empty string '--------------------------------------------------------------------------------------- ' FIND_ODBC_DRIVER = "" Dim iValue As Variant For Each iValue In iArr If iValue = sValue Then FIND_ODBC_DRIVER = iValue Exit Function End If Next End Function

Скопируйте/измените эту функцию на кнопке/макросе страницы Excel: обновите инструкцию SQL_GET в соответствии с вашим запросом /SQL-вызовом.

Sub Retrieve_EMP_Details() '--------------------------------------------------------------------------------------- ' Procedure : Retrieve_EMP_Details ' Author : Krish KM ' Date : 27/08/2014 ' Purpose : connects to the database and retrieves employee details. '--------------------------------------------------------------------------------------- ' 'Connection variables Dim conn As New ADODB.Connection Dim cmd As New ADODB.Command Dim rs As ADODB.Recordset 'Get connection string and connect to the server On Error GoTo ERR_CONNECTION: conn.ConnectionString = GET_CONNECTION_STRING ' trap additional error if you want conn.Open 'Preparing SQL Execution Dim SQL_GET As String SQL_GET = "SELECT * FROM tbl_employee" ' extracts all data cmd.Name = "EMPSearch" cmd.ActiveConnection = conn cmd.CommandText = SQL_GET 'Execute SQL Set rs = cmd.Execute On Error GoTo ERR_READ_SQL If Not rs.EOF Then With Sheets(1).Cells ' Enter your sheet name and range here .ClearContents .CopyFromRecordset rs End With Else Sheets(1).Range("A1").value = "No records found :(" End If EXIT_SUB: On Error Resume Next Set conn = Nothing Set cmd = Nothing Set rs = Nothing Exit Sub ERR_CONNECTION: MsgBox "Sorry unable to connect to the server.." & vbNewLine & "Connection string: " & GET_CONNECTION_STRING & vbNewLine & "System Msg: " & Err.Description GoTo EXIT_SUB ERR_READ_SQL: MsgBox "Sorry unable read/wite results on the sheet.." & vbNewLine & "System Msg: " & Err.Description GoTo EXIT_SUB End Sub

Если у вас установлены драйверы ODBC, все данные сервера предоставлены, инструкция SQL настроена. просто выполните sub_routine {Retrieve_EMP_Details} и вы сможете увидеть результаты в листе (1)

Надеюсь, это поможет и понравится :)

Криш К.М.

qaru.site

sql - Как получить MS EXCEL для подключения к базе данных MYSQL

Я НАС НАЙТИ РЕШЕНИЕ...

Престижность к HongTAT за то, что я держу меня на правильном пути....

(Несмотря на то, что я сделал все начальные материалы, которые вы разместили, прежде чем я действительно разместил вопрос, The Act of you Posting it, Got me Посмотрев на него немного глубже...

Одна вещь привела к другой, и я нашел решение... Спасибо

я подозреваю, что какая-то проблема несовместимости, должно быть, была виновата здесь, я заметил, что Power Query 64 бит не будет установлен на моей 64-битной системе

вместо этого установщик Power Query предоставил ошибку, которая просто указала на эффект:

поскольку 32-разрядный офис не может установить 64-битный запрос мощности

но я установил Connector/ODBC и Connector/Net как 64bit

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

Кроме того, Aparently "бит-ness" представляет собой запутанный термин, который должен означать (убедитесь, что этот набор команд бит из ODBC-коннектора соответствует набору бит-команд Power Query в Excel)

На самом деле вам не нужен Power Query или Visual Studio, если на то пошло

Однако я могу видеть преимущество запроса мощности на этом этапе

ЧТО Я СДЕЛАЛ...

Я удалил все следы Microsoft Visual Studio из "Установка и удаление программ"

Я удалил все трассировки Visual C++, распространяемые с помощью "Установка и удаление программ"

Я удалил запрос мощности с помощью "Установка и удаление программ"

я Удаленный соединитель MYSQL/ODBC из программы "Установка и удаление программ"

я Удаленный соединитель/сеть MYSQL из программы "Установка и удаление программ"

я оставил установку WAMP и MYSQL Intact

я проверил Windows Update

я перезапустил систему

Затем я загрузил следующее и установил его

http://dev.mysql.com/downloads/file.php?id=450946

Теперь.. Хотя эта установка пакета - это то же самое, что установка 1 на 1

я обнаружил, что, выполняя "ТАМОЖЕННУЮ УСТАНОВКУ",

и установка всех продуктов ЗА ИСКЛЮЧЕНИЕМ СЕРИИ MYSQL

я смог сразу подключиться через соединитель/сеть к базе данных MYSQL

ПОСЛЕДНИЕ Я установил Power Query для Excel (так как это было всем началом)

и на этот раз он сразу подключился и отлично работал

имя сервера было localhost

как я подозревал

и учетные данные были правильными, поскольку я подозревал

единственное, что я должен был установить без шифрования пароля

я получил сообщение о том, что что-то вроде My Version of Office не поддерживало шифрование или что-то в этом роде

но я подключен без шифрования, и он отлично работал

ЗАДАЧА РЕШЕНА

Я ТЕПЕРЬ ДЕЙСТВУЮТ ЭТО ВОПРОС, ЧТОБЫ РЕШЕНО

THANKYOU TO HongTat

qaru.site

Подключение MySQL к Excel с запросом

Всем добрый день,Крайняя необходимость возникла, подключить SQL данные и выгрузить их на листок, пробовал вот такой кодSub excelmysql() Dim Conn As New ADODB.Connection Dim server_name As String Dim database_name As String Dim user_id As String Dim password As String   server_name = "sqlserver2" database_name = "esa14" user_id = "логин" password = "пароль"   Set Conn = New ADODB.Connection Conn.Open "DRIVER={MySQL ODBC 3.51 Driver}" _ & ";SERVER=" & server_name _ & ";DATABASE=" & database_name _ & ";UID=" & user_id _ & ";PWD=" & password _ & ";OPTION=3" End Sub Но он мне выдает неизвестную ошибку, может надо писать полный путь к серверу? либо не нужно указывать логин пароль, так как я локально без логина и пароля подключаюсь?, а мне нужно что бы я мог подключиться и спомощью этого запроса вытащить мне нужные данные, см. нижеSELECT     dbo.c_UserGroup.FullNameRus AS Дистрибьютор, dbo.c_InternalShop.[key] AS КодТТЛ, dbo.c_InternalShop.shopName AS Название,                       dbo.c_InternalShop.address_street AS Улица, dbo.c_InternalShop.address_house AS Дом, dbo.c_InternalShop.shopBoard AS Вывеска,                       dbo.c_ClientShop.[key] AS [Код ТТ] FROM         dbo.c_InternalShop LEFT OUTER JOIN                       dbo.c_UserGroup ON dbo.c_InternalShop.userGroupId = dbo.c_UserGroup.ID LEFT OUTER JOIN                       dbo.c_ClientShop ON dbo.c_InternalShop.id = dbo.c_ClientShop.mapId WHERE     (dbo.c_UserGroup.FullNameRus NOT LIKE '%подключение%') AND (dbo.c_UserGroup.FullNameRus NOT LIKE '%(НР)%') AND                       (dbo.c_UserGroup.FullNameRus NOT LIKE '%(ВНР)%') AND (dbo.c_UserGroup.FullNameRus NOT LIKE '%Велес Групп. Москва%') AND                       (dbo.c_UserGroup.FullNameRus NOT LIKE '%Невский берег. Москва%') AND (dbo.c_ClientShop.[key] IS NOT NULL)                                       AND (dbo.c_UserGroup.FullNameRus = 'Переменная из другого листочка ексель') GROUP BY dbo.c_UserGroup.FullNameRus, dbo.c_InternalShop.[key], dbo.c_InternalShop.shopName, dbo.c_InternalShop.shopBoard, dbo.c_InternalShop.address_street,                       dbo.c_InternalShop.address_house, dbo.c_ClientShop.[key] Честно пока даже не очень представляю как он выводит эти данные на листок. Товарищи, направьте слепого на путь истинный пожалуйста))

qa-help.ru

Подключение Excel к SQL Server

Для обработки данных в Excel требуется сначала получить сами данные. Часто такая информация находится во внешних источниках, а именно базах данных. В этой статье описывается подключение электронных таблиц к БД MS SQL Server.

На вкладке «Данные» имеется область «Получение внешних данных» на которой необходимо кликнуть по кнопке «Из других источников». Раскроется список источников, к которым можно осуществить подключение. В этом списке выберите пункт «С сервера SQL Server».

Теперь на экране появилось окно мастера подключения к данным. Изначально требуется указать имя сервера и учетные сведения для подключения (если Вы их не знаете, то обратитесь к администратору БД).

После заполнения формы нажмите кнопку «Далее», чтобы перейти к выбору базы данных.

Здесь же можно выбрать таблицы, из которых будут грузиться данные, или же снять галочку с пункта «Подключение к определенной таблице».

Нажмите кнопку «Далее», чтобы задать имя файла подключения и описание, чтобы в дальнейшем было проще найти данный файл.

Нажав кнопку «Готово», Вам будет предложено произвести импорт данных с сервера (если в мастере подключений Вами не была выбрана таблица, то сначала ее придется выбрать).

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

SQL-запрос

По умолчанию, при импорте из SQL Server, Excel выгружает всю таблицу. Можно изменить выборку, указав SQL-запрос.

Для этого во время импорта данных (предыдущий рисунок) необходимо кликнуть по кнопке «Свойства», если подключение создается впервые, либо, если файл подключения уже был добавлен к книге, на вкладке «Данные» в области «Получение внешних данных» кликнуть по кнопке «Подключения», выбрать нужное из списка и открыть его свойства.

В свойствах подключения на вкладке «Определение» в поле «Тип команды» поменяйте значение на «SQL», а в поле «Текст команды» введите SQL-код и нажмите «ОК».

Теперь, чтобы получить данные с помощью нового подключения, достаточно вызвать его из существующих подключений на вкладке «Данные» в области «Получение внешних данных». Дальнейшая процедура импорта аналогична рассмотренному выше.

webhamster.ru

sql - Подключение Excel к обновлению Mysql ПРОБЛЕМА

Я подключаюсь к таблице mysql через vba в excel, и я обновляю ее:

Set cn = New ADODB.Connection cn.Open "DRIVER={MySQL ODBC 5.1 Driver};" & _ "SERVER=localhost;" & _ "DATABASE=employees;" & _ "USER=root;" & _ "PASSWORD=M1llen;" & _ "Option=3" 'lets get the batch info ' ' open a recordset Set rs = New ADODB.Recordset rs.Open "batchinfo", cn, adOpenKeyset, adLockOptimistic, adCmdTable ' all records in a table from Report 1 'Set wsSheet1 = wbBook.Worksheets(1) ' better refer by name 'Set wsSheet1 = wbBook.Worksheets.("Report 1") Worksheets.Item("Report 1").Select dpath = Range("B2").Text atime = Trim(Range("B3").Text) rtime = Trim(Range("B4").Text) lcalib = Trim(Range("B5").Text) aname = Trim(Range("B6").Text) rname = Trim(Range("B7").Text) bstate = Trim(Range("B8").Text) instrument = GetInstrFromXML() With rs .AddNew ' create a new record ' add values to each field in the record .Fields("datapath") = "abc" .Fields("analysistime") = atime .Fields("reporttime") = rtime .Fields("lastcalib") = lcalib .Fields("analystname") = aname .Fields("reportname") = rname .Fields("batchstate") = bstate .Fields("instrument") = instrument .Update ' stores the new record End With

проблема заключается в том, что единственным полем, которое обновляется, является полем инструментов!

здесь я desc таблицы batchinfo mysql:

mysql> desc batchinfo; +--------------+---------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+---------+------+-----+---------+----------------+ | rowid | int(11) | NO | PRI | NULL | auto_increment | | datapath | text | YES | | NULL | | | analysistime | text | YES | | NULL | | | reporttime | text | YES | | NULL | | | lastcalib | text | YES | | NULL | | | analystname | text | YES | | NULL | | | reportname | text | YES | | NULL | | | batchstate | text | YES | | NULL | | | instrument | text | YES | | NULL | | +--------------+---------+------+-----+---------+----------------+ 9 rows in set (0.00 sec)

Смешно, что когда я воссоздаю таблицу без auto_increment, тогда она отлично работает

Мне действительно нужно, чтобы кто-то ответил на этот вопрос, я не забочусь, если у вас есть подозрение или не совсем точно, я попробую любое решение

источник поделиться

qaru.site