Страницы: 1
RSS
из Excel в MySQL
 
Здравствуйте ув.-мые форумчанины.  
Нагуглить не смог , не нашел, поэтой причине обращаюсь к Вам.  
Имеется ли у кого нить готовое решение или кто знает как можно решить задачу экспорта из Эксель в MySQL посредством макроса.  
 
Сами данные из MySQL импортирую через ODBC , но  к сожалению экспорта там же я не нашел...  
Прошу не предлогать посредством варианта посредством сохранении в csv и т.д.  
 
Заранее спасибо.
 
Нашел в просторах инета файл "Excel MySQL Import, Export & Convert Software.xla"  
экспорт он делает, но делает это дело коряво и вдобавок на VBA проект пароль стоит....
 
{quote}{login=Jnas}{date=23.11.2011 02:46}{thema=}{post}Нашел в просторах инета файл "Excel MySQL Import, Export & Convert Software.xla"  
экспорт он делает, но делает это дело коряво и вдобавок на VBA проект пароль стоит....{/post}{/quote}  
Покажите строку подключения к MySql, а также какие данные необходимо загрузить в базу,также предоставьте структуру таблицы в которую импортируются данные.  
Данные сведения необходимо оформить в файле формата *xls , не более 100 кб.  
____________________  
 
Если к вечеру ни кто не отпишется я помогу Вам.
Спасибо
 
в Excel 2010 подключение к базе данных ввиду через OBDC  
то  есть выбираю: Данные -> Из других источников -> Из Мастера подключения данных-> ODBC DSN -> Свой источник данных  -> выбираю таблицу  
Далее в свойствах ставлю обновлять при открытии, этим я хочу, чтоб при открытии файла я получал данные из MySQL базы, то есть чтоб мог подредактировать эти данные и сохранить их в базе MySQL.    
 
В ранее указанном варианте, с надстройкой "Excel MySQL Import, Export & Convert Software.xla" он экспортирует данные обратно, как я понимаю просто создавая новую таблицу в MySQL (то есть переписывая ). Меня бы это устраивало ,но при таком подходя он теряет тип переменных и примари кей.... Файл может быть любым с такой структурой, так как таблицы будут всегда разные... Кстати сама строка подключения "DSN=MySQL_My;" выбор "SELECT * FROM `11`.`user`"
 
Надстройку "Excel MySQL Import, Export & Convert Software.xla" саму не могу выложить так как она в сжатом виде весит более почти 103 кб )  
качал отсюда    
http://www.sobolsoft.com/excelmysql/download/setup.exe  
 
кейген к нему имеется в случае чего
 
http://mysql.borsen.dk/Downloads/Win32/MyOLEDB3.exe  
Качаем MySQL OLE Db provider  
www.connectionstrings.com/mysql#p27  
Смотрим как настраивать строку подключения  
 
А далее по идее стандартные способы ADODB
 
Sub GetMySqlUpdate()  
Dim cn As Object  
Set cn = CreateObject("ADODB.Connection")  
cn.Open "DSN=MySQL_My;"  
For i = 2 To 3  
DSql = "UPDATE [11].[user] AS a SET" _
   & " a.apikey = '" & CStr(Cells(i, 2)) & "'" _  
   & " a.email = '" & CStr(Cells(i, 3)) & "'" _  
   & " a.secret = '" & CStr(Cells(i, 4)) & "'" _  
   & " a.pass = '" & CStr(Cells(i, 5)) & "'" _  
   & " WHERE a.userid =" & Cells(i, 1)  
cn.Execute UPDSql  
Next  
cn.Close  
Set cn = Nothing  
End Sub  
если подключение пройдет значит обновит  
Проверить не на чем :(
Спасибо
 
Я конечно в этом новичек  
 
Но ответа не смог найти на свой вопрос, может не правильно задаю поисковую фразу в гугле, но всё же....  
 
Скачал поставил, но вот не могу понять/найти, где стоит настраивать "строку подключения". Подозрение одолевают конечно, нашел одно окошко (прикрепил файл), но при вводе всех данных выходит "Error occured". да и как понимаемая строка подключение это и есть "SQL commans on connect" , если да , то почему то я не могу туда ввести полную надпись "Provider=MySQLProv;Data Source=11;User Id=root;Password=;" вводится только "Provider=MySQLProv;Data Source=11;User Id=root;Pa"    
 
Я так понимаю скорее всего и по этой же причине не работает макрос, выводит ошибку "Run-time error '-2147217908(80040e0c)'  
Не был задан текст команды для командного объекта"
 
Также возник вопрос по макросу, так на будующее, я не VBA программист, пишу всё только на PHP, поэтому я предполагаю что строка " For i = 2 To 3" заносит данные 2-ой, 3-тей строки, возможно ли организовать, что заносились данные от строк выделенной мышкой?
 
да, насчет строк вы правильно поняли  
для выделения(selection):  
 
for i=selection.row to selection.row+selection.rows.count-1  
..  
next  
 
или  
 
with selection  
i=.row  
for i=i to i+.rows.count-1  
..  
next  
end with
Живи и дай жить..
 
могу выложить разблокированный xla на rghost, если необходимо
 
{quote}{login=anvg}{date=24.11.2011 11:02}{thema=}{post}могу выложить разблокированный xla на rghost, если необходимо{/post}{/quote}  
 
Выложите пожалуйста.
 
или вышлите на 250753@mail.ru
 
Выложил  
http://rghost.ru/31905341  
пароль на VBAProject: 123  
Хотя обновление таблицы базы данных по изменениям в таблице в Excel не самая тривиальная задача. Наверное не зря Microsoft обеспечил только одностороннюю связь
 
Заинтересовал Ваш вопрос, поставил MySQL, MySQL OLEDb оказалась фигнёй, снёс, так как не работает. Попробовал ODBC, используя VBScript, вот код для примера работы.  
==========  
Option Explicit  
 
Const adAffectCurrent = 1, adSearchForward = 1  
Const adUseClient = 3, adOpenStatic = 3  
Const adCmdTable = 2, adLockOptimistic = 3  
 
Dim pConn, pRSet  
Set pConn = CreateObject("ADODB.Connection")  
Set pRSet = CreateObject("ADODB.Recordset")  
 
pConn.Open "DRIVER={MySQL ODBC 5.1 Driver};SERVER=ServerName;DATABASE=DatabaseName;USER=root;PASSWORD=Password;"  
 
pRSet.CursorLocation = adUseClient 'обязательно для перемещения по данным  
pRSet.Open "Select * from tabledisk", pConn, adOpenStatic, adLockOptimistic  
'отображение данных таблицы  
Do Until pRSet.EOF  
   WScript.Echo pRSet("DiskName") & " " & pRSet("DiskDate")  
   pRSet.MoveNext  
Loop  
'изменение поля записи  
pRSet.MoveFirst  
pRSet.Find "IDDisk=1", 0, adSearchForward  
pRSet("DiskName") = "The Jive Aces"  
'удаление записи  
pRSet.MoveFirst  
pRSet.Find "IDDisk=2", 0, adSearchForward  
pRSet.Delete adAffectCurrent  
'добавление записи  
pRSet.AddNew  
pRSet("IDDisk") = 5  
pRSet("DiskName") = "Мои песни"  
pRSet("DiskDate") = Now  
 
'обновление внесённых изменений в таблице  
pRSet.Update
 
Спасибо за помошь...  
Если честно не смог разобраться да и найти, как подключить и использоватьс VBS...
 
Код будет работать и в VBA. Поместить код в процедуру (кроме конечно Option Explicit), заменить WScript.Echo на Debug.Print, ну и названия: сервера, базы, таблицы и имена полей Ваши. Извините, совсем забыл, что Вы больше по PHP.
Страницы: 1
Читают тему
Наверх