Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Запись данных в Google Table - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Запись данных в Google Table (Макросы/Sub)
Запись данных в Google Table
vlasssov71 Дата: Четверг, 30.10.2014, 15:03 | Сообщение № 1
Группа: Заблокированные
Ранг: Новичок
Сообщений: 16
Репутация: -5 ±
Замечаний: 40% ±

Excel 2007
Задача простая.
Есть файл Excel с некоторыми данными. Данные из листа, с некоторой обработкой, нужно вставить в Google таблицу. Как это сделать?
Есть аккаунт в google, таблица там уже создана.
Нужно, чтобы ать доступ к файлу нескольким пользователям.
 
Ответить
СообщениеЗадача простая.
Есть файл Excel с некоторыми данными. Данные из листа, с некоторой обработкой, нужно вставить в Google таблицу. Как это сделать?
Есть аккаунт в google, таблица там уже создана.
Нужно, чтобы ать доступ к файлу нескольким пользователям.

Автор - vlasssov71
Дата добавления - 30.10.2014 в 15:03
vlasssov71 Дата: Понедельник, 10.11.2014, 15:37 | Сообщение № 2
Группа: Заблокированные
Ранг: Новичок
Сообщений: 16
Репутация: -5 ±
Замечаний: 40% ±

Excel 2007
Продолжаю тему, потому что надо. Смысл производимых манипуляций, предоставить к некоторому набору данных общий доступ. Обраотать данные пользователю предоставляется в excel, а во дальше вывести автоматически во внешнюю таблицу. Единственное что накопал по данной тематике -процедуру вывода на языке 1с.

http://danila.org.ua/vyigruzka-tablichnogo-dokumenta-v-google-tab/

Как мог переписал на vba

[vba]
Код

Function ПолучитьМаркер(ВидСервиса, Пользователь)
     АдресКлиентЛогин = "https://www.google.com/accounts/ClientLogin"
      
     If ВидСервиса = "Таблица" Then
         Сервис = "wise"
     Else
     If ВидСервиса = "Документ" Then
         Сервис = "writely"
     End If
     End If
     Пароль = "parolprobe"
     Логин = "vlasssovprobe@gmail.com"
     Set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP")
         xmlhttp.Open "POST", АдресКлиентЛогин, False
         xmlhttp.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
         xmlhttp.Send "Email=" + Логин + "&Passwd=" + Пароль + "&service=" + Сервис + "&source=Gulp-CalGulp-1.05"
     If xmlhttp.Status = 200 Then
         Маркер = xmlhttp.ResponseText
         ПолучитьМаркер = Right(Маркер, Len(Маркер) - Len("Auth=") - InStr(1, Маркер, "Auth=") + 1)
     Else
         ПолучитьМаркер = "Ошибка:" + CStr(xmlhttp.Status) + "-" + CStr(xmlhttp.ResponseText)
          
     End If
      
End Function

Sub ПроверкаГугл()

MsgBox ПолучитьМаркер("Таблица", vsmeta)

End Sub
[/vba]

Результат работы

Ошибка:403-Error=BadAuthentication
Url=https://www.google.com/accounts/ContinueSignIn?sarp=1&scc=1&plt=AKgnsbujw6kPE4Ze89yjujnSsOc8lJ60J-NlaGEab9I1Fbb6k-tQLnQSHB7PAZ8YX3xKDzmmSVf5MEbzcsGT4qf2wBK96D1UGRygfKZg5dwvf31MMX9fuGocR88ee6rVfmyPyiHV NKLiMMtmDUHRlcrrneLlL34MtqSL2qTvlnzngiFLtk7zUnwyYCn-PoPzzJx5FtTbdWB-6BVjo34NBXhsctd510-ORpGjIatdHk-VteG4DQezil0
Info=WebLoginRequired

Как авторизироваться и получить маркер?? Дальше будем пытаться записать в ячейку.
 
Ответить
СообщениеПродолжаю тему, потому что надо. Смысл производимых манипуляций, предоставить к некоторому набору данных общий доступ. Обраотать данные пользователю предоставляется в excel, а во дальше вывести автоматически во внешнюю таблицу. Единственное что накопал по данной тематике -процедуру вывода на языке 1с.

http://danila.org.ua/vyigruzka-tablichnogo-dokumenta-v-google-tab/

Как мог переписал на vba

[vba]
Код

Function ПолучитьМаркер(ВидСервиса, Пользователь)
     АдресКлиентЛогин = "https://www.google.com/accounts/ClientLogin"
      
     If ВидСервиса = "Таблица" Then
         Сервис = "wise"
     Else
     If ВидСервиса = "Документ" Then
         Сервис = "writely"
     End If
     End If
     Пароль = "parolprobe"
     Логин = "vlasssovprobe@gmail.com"
     Set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP")
         xmlhttp.Open "POST", АдресКлиентЛогин, False
         xmlhttp.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
         xmlhttp.Send "Email=" + Логин + "&Passwd=" + Пароль + "&service=" + Сервис + "&source=Gulp-CalGulp-1.05"
     If xmlhttp.Status = 200 Then
         Маркер = xmlhttp.ResponseText
         ПолучитьМаркер = Right(Маркер, Len(Маркер) - Len("Auth=") - InStr(1, Маркер, "Auth=") + 1)
     Else
         ПолучитьМаркер = "Ошибка:" + CStr(xmlhttp.Status) + "-" + CStr(xmlhttp.ResponseText)
          
     End If
      
End Function

Sub ПроверкаГугл()

MsgBox ПолучитьМаркер("Таблица", vsmeta)

End Sub
[/vba]

Результат работы

Ошибка:403-Error=BadAuthentication
Url=https://www.google.com/accounts/ContinueSignIn?sarp=1&scc=1&plt=AKgnsbujw6kPE4Ze89yjujnSsOc8lJ60J-NlaGEab9I1Fbb6k-tQLnQSHB7PAZ8YX3xKDzmmSVf5MEbzcsGT4qf2wBK96D1UGRygfKZg5dwvf31MMX9fuGocR88ee6rVfmyPyiHV NKLiMMtmDUHRlcrrneLlL34MtqSL2qTvlnzngiFLtk7zUnwyYCn-PoPzzJx5FtTbdWB-6BVjo34NBXhsctd510-ORpGjIatdHk-VteG4DQezil0
Info=WebLoginRequired

Как авторизироваться и получить маркер?? Дальше будем пытаться записать в ячейку.

Автор - vlasssov71
Дата добавления - 10.11.2014 в 15:37
SkyPro Дата: Понедельник, 10.11.2014, 18:28 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
https://developers.google.com/google-apps/spreadsheets/
Изучайте АПИ. Или перейдите на хранение общих данных в базе данных.

ИМХО, использовать связку excel+google_spreadsheets+VBA - не самая лучшая идея.
Попробуйте лучше уж MySQL (для которого можно просто бесплатный хостинг завести) + excel+VBA.


skypro1111@gmail.com

Сообщение отредактировал SkyPro - Понедельник, 10.11.2014, 18:31
 
Ответить
Сообщениеhttps://developers.google.com/google-apps/spreadsheets/
Изучайте АПИ. Или перейдите на хранение общих данных в базе данных.

ИМХО, использовать связку excel+google_spreadsheets+VBA - не самая лучшая идея.
Попробуйте лучше уж MySQL (для которого можно просто бесплатный хостинг завести) + excel+VBA.

Автор - SkyPro
Дата добавления - 10.11.2014 в 18:28
vlasssov71 Дата: Среда, 12.11.2014, 10:44 | Сообщение № 4
Группа: Заблокированные
Ранг: Новичок
Сообщений: 16
Репутация: -5 ±
Замечаний: 40% ±

Excel 2007
ИМХО, использовать связку excel+google_spreadsheets+VBA - не самая лучшая идея.
Попробуйте лучше уж MySQL (для которого можно просто бесплатный хостинг завести) + excel+VBA.

Я, конечно, все понимаю, но почему все программисты никогда не берут во внимание фактор времени? Google таблицы известны работникам организации, Mysql - нет. Обучать новому интерфейсу, и тратить время на адаптацию интерфейса HTML под Google таблицы? А еще надо будет разделение прав делать, а еще... И столько времени, для того, чтобы расшарить пару документов и отурыть доступ нужным сотрудникам? Круто!
Пока все банально копируют из Excel в Google таблицы, что не очень удобно.
А если уж делать нормально, надо отдельную конфигурацию в 1С, и терминальный доступ. Это если уж совсем нормально.

А.. Ссылка не о том. Там про получение маркера с помощью post запроса ничего нет.


Сообщение отредактировал vlasssov71 - Среда, 12.11.2014, 10:47
 
Ответить
Сообщение
ИМХО, использовать связку excel+google_spreadsheets+VBA - не самая лучшая идея.
Попробуйте лучше уж MySQL (для которого можно просто бесплатный хостинг завести) + excel+VBA.

Я, конечно, все понимаю, но почему все программисты никогда не берут во внимание фактор времени? Google таблицы известны работникам организации, Mysql - нет. Обучать новому интерфейсу, и тратить время на адаптацию интерфейса HTML под Google таблицы? А еще надо будет разделение прав делать, а еще... И столько времени, для того, чтобы расшарить пару документов и отурыть доступ нужным сотрудникам? Круто!
Пока все банально копируют из Excel в Google таблицы, что не очень удобно.
А если уж делать нормально, надо отдельную конфигурацию в 1С, и терминальный доступ. Это если уж совсем нормально.

А.. Ссылка не о том. Там про получение маркера с помощью post запроса ничего нет.

Автор - vlasssov71
Дата добавления - 12.11.2014 в 10:44
SkyPro Дата: Среда, 12.11.2014, 12:38 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
Google таблицы известны работникам организации, Mysql - нет. Обучать новому интерфейсу, и тратить время на адаптацию интерфейса HTML под Google таблицы?

Ну хотите гланды удалять через задний проход - ваше право!
Гугл таблицы - табличный редактор, который вы, судя по всему, используете как БД. А мускул именно БД, которую можно использовать по назначению, храня ваши таблички в БД и обращаясь к ним прямо из экселя SQL запросами (можно любую другую СУБД использовать). О HTML вообще речи не шло.
Ссылка не о том.

Пару заголовков из документации по ссылке:
"Authorizing requests with OAuth 2.0"
"Working with worksheets"
"Changing contents of a cell"

А код, что вы выложили выше с 20 апреля 2012 года в статусе "officially deprecated".

А если уж делать нормально, надо отдельную конфигурацию в 1С, и терминальный доступ. Это если уж совсем нормально.

Делайте.


skypro1111@gmail.com
 
Ответить
Сообщение
Google таблицы известны работникам организации, Mysql - нет. Обучать новому интерфейсу, и тратить время на адаптацию интерфейса HTML под Google таблицы?

Ну хотите гланды удалять через задний проход - ваше право!
Гугл таблицы - табличный редактор, который вы, судя по всему, используете как БД. А мускул именно БД, которую можно использовать по назначению, храня ваши таблички в БД и обращаясь к ним прямо из экселя SQL запросами (можно любую другую СУБД использовать). О HTML вообще речи не шло.
Ссылка не о том.

Пару заголовков из документации по ссылке:
"Authorizing requests with OAuth 2.0"
"Working with worksheets"
"Changing contents of a cell"

А код, что вы выложили выше с 20 апреля 2012 года в статусе "officially deprecated".

А если уж делать нормально, надо отдельную конфигурацию в 1С, и терминальный доступ. Это если уж совсем нормально.

Делайте.

Автор - SkyPro
Дата добавления - 12.11.2014 в 12:38
vlasssov71 Дата: Среда, 12.11.2014, 14:42 | Сообщение № 6
Группа: Заблокированные
Ранг: Новичок
Сообщений: 16
Репутация: -5 ±
Замечаний: 40% ±

Excel 2007
Ну хотите гланды удалять через задний проход - ваше право!
Гугл таблицы - табличный редактор, который вы, судя по всему, используете как БД.

О! Судя по всему поциент гуру и телепат. Впервые сталскиваюсь на форумах с обратным процессом. Обычно ругают за то, что вопрос задан некорректно, а тут.. Оказывается я и таблицы Гугл как базу данных использую!!! Вау! Оказывается я не конкретный вопрос задавал, а спрашивал как организовать удаленный сервер с базой MySql!!!

Таблица Гугл используется как таблица. База данных, в первом приближении, не обладает инструментами визуализации данных, по крайней мере mysql - точно. Мне к нему, что потом лепить? Сайт на joomla?
А вот клиент на excel с запросом данных от Mysql - то еще извращение. Особенно эффектно будет выглядеть реализация процедуры обновления данных в базе, когда редактировать начнут с трех документов... А вот в Google tables это уже реализовано, чем они и хороши для совместного использования. Это называется изобретать велосипед.

Цитата vlasssov71, 12.11.2014 в 10:44, в сообщении № 4
А если уж делать нормально, надо отдельную конфигурацию в 1С, и терминальный доступ. Это если уж совсем нормально.

Делайте.


Попробуйте лучше уж MySQL (для которого можно просто бесплатный хостинг завести) + excel+VBA.

Делайте. Это и есть гланды, как вы изволили изящно выразиться.


Сообщение отредактировал vlasssov71 - Среда, 12.11.2014, 14:44
 
Ответить
Сообщение
Ну хотите гланды удалять через задний проход - ваше право!
Гугл таблицы - табличный редактор, который вы, судя по всему, используете как БД.

О! Судя по всему поциент гуру и телепат. Впервые сталскиваюсь на форумах с обратным процессом. Обычно ругают за то, что вопрос задан некорректно, а тут.. Оказывается я и таблицы Гугл как базу данных использую!!! Вау! Оказывается я не конкретный вопрос задавал, а спрашивал как организовать удаленный сервер с базой MySql!!!

Таблица Гугл используется как таблица. База данных, в первом приближении, не обладает инструментами визуализации данных, по крайней мере mysql - точно. Мне к нему, что потом лепить? Сайт на joomla?
А вот клиент на excel с запросом данных от Mysql - то еще извращение. Особенно эффектно будет выглядеть реализация процедуры обновления данных в базе, когда редактировать начнут с трех документов... А вот в Google tables это уже реализовано, чем они и хороши для совместного использования. Это называется изобретать велосипед.

Цитата vlasssov71, 12.11.2014 в 10:44, в сообщении № 4
А если уж делать нормально, надо отдельную конфигурацию в 1С, и терминальный доступ. Это если уж совсем нормально.

Делайте.


Попробуйте лучше уж MySQL (для которого можно просто бесплатный хостинг завести) + excel+VBA.

Делайте. Это и есть гланды, как вы изволили изящно выразиться.

Автор - vlasssov71
Дата добавления - 12.11.2014 в 14:42
SkyPro Дата: Среда, 12.11.2014, 15:25 | Сообщение № 7
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
О! Судя по всему поциент гуру и телепат. Впервые сталскиваюсь на форумах с обратным процессом. Обычно ругают за то, что вопрос задан некорректно, а тут.. Оказывается я и таблицы Гугл как базу данных использую!!! Вау! Оказывается я не конкретный вопрос задавал, а спрашивал как организовать удаленный сервер с базой MySql!!!

Смысл производимых манипуляций, предоставить к некоторому набору данных общий доступ.


Продолжайте в том же духе. С таким подходом вам и за деньги не каждый согласится помочь.

PS: а "поциент" не пробовал установить гугл драйв? Там и общий доступ и не общий доступ и свистелки и перделки есть.


skypro1111@gmail.com

Сообщение отредактировал SkyPro - Среда, 12.11.2014, 15:32
 
Ответить
Сообщение
О! Судя по всему поциент гуру и телепат. Впервые сталскиваюсь на форумах с обратным процессом. Обычно ругают за то, что вопрос задан некорректно, а тут.. Оказывается я и таблицы Гугл как базу данных использую!!! Вау! Оказывается я не конкретный вопрос задавал, а спрашивал как организовать удаленный сервер с базой MySql!!!

Смысл производимых манипуляций, предоставить к некоторому набору данных общий доступ.


Продолжайте в том же духе. С таким подходом вам и за деньги не каждый согласится помочь.

PS: а "поциент" не пробовал установить гугл драйв? Там и общий доступ и не общий доступ и свистелки и перделки есть.

Автор - SkyPro
Дата добавления - 12.11.2014 в 15:25
vlasssov71 Дата: Среда, 12.11.2014, 17:40 | Сообщение № 8
Группа: Заблокированные
Ранг: Новичок
Сообщений: 16
Репутация: -5 ±
Замечаний: 40% ±

Excel 2007
[offtop]
родолжайте в том же духе. С таким подходом вам и за деньги не каждый согласится помочь.

Ну с вашим подходом, денег вы точно не заработаете... Это ж надо предлагать поднять удаленный сервер на MySQL, вместо того, чтобы расшарить документ на Google Table!!! Ну-ну.. Кулинар! Особенно радует клиентское приложение на Excel. Это ... Это да! Почитайте книжки по клиент-серверному программированию, и будет вам щастье!

И расскажите всем что это за термины такие из области информации "гланды" и "задний проход". Я думаю, всем будет очень интересно. Мне вот просто по приколу интересно, с мифическими заказчиками господин SkyPro также общается?
[/offtop]
По теме. Ошибка была вызвана тем, что неправильно был сформирован POST запрос.

Вот как надо.
[vba]
Код

Function ПолучитьМаркер(ВидСервиса, Пользователь)
      АдресКлиентЛогин = "https://www.google.com/accounts/ClientLogin"
        
      If ВидСервиса = "Таблица" Then
          Сервис = "wise"
      Else
      If ВидСервиса = "Документ" Then
          Сервис = "writely"
      End If
      End If
      Пароль = "parolprobe"
      Логин = "vlasssovprobe"
        
      AuthenticationPost = "Email=" + Логин + "&Passwd=" + Пароль + "&service=" + Сервис + "&source=ecxelvba"
        
      Set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP")
          xmlhttp.Open "POST", АдресКлиентЛогин, False
          xmlhttp.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
          xmlhttp.Send AuthenticationPost
      If xmlhttp.Status = 200 Then
          Маркер = xmlhttp.ResponseText
          ПолучитьМаркер = Right(Маркер, Len(Маркер) - Len("Auth=") - InStr(1, Маркер, "Auth=") + 1)
      Else
          ПолучитьМаркер = "Ошибка:" + CStr(xmlhttp.Status) + "-" + CStr(xmlhttp.ResponseText)
            
      End If
        
End Function
[/vba]

Секрет в этой части кода
[vba]
Код
&source=ecxelvba"
[/vba]

Просто надо предварительно на сайте Google, вот по этому адресу

https://www.google.com/settings/security

зарегистрировать приложение.

Я зарегистрировал "excelvba" и аутентификация прошла. Маркер получен.
Теперь по ячейкам разберусь, отпишусь.


Сообщение отредактировал vlasssov71 - Среда, 12.11.2014, 17:43
 
Ответить
Сообщение[offtop]
родолжайте в том же духе. С таким подходом вам и за деньги не каждый согласится помочь.

Ну с вашим подходом, денег вы точно не заработаете... Это ж надо предлагать поднять удаленный сервер на MySQL, вместо того, чтобы расшарить документ на Google Table!!! Ну-ну.. Кулинар! Особенно радует клиентское приложение на Excel. Это ... Это да! Почитайте книжки по клиент-серверному программированию, и будет вам щастье!

И расскажите всем что это за термины такие из области информации "гланды" и "задний проход". Я думаю, всем будет очень интересно. Мне вот просто по приколу интересно, с мифическими заказчиками господин SkyPro также общается?
[/offtop]
По теме. Ошибка была вызвана тем, что неправильно был сформирован POST запрос.

Вот как надо.
[vba]
Код

Function ПолучитьМаркер(ВидСервиса, Пользователь)
      АдресКлиентЛогин = "https://www.google.com/accounts/ClientLogin"
        
      If ВидСервиса = "Таблица" Then
          Сервис = "wise"
      Else
      If ВидСервиса = "Документ" Then
          Сервис = "writely"
      End If
      End If
      Пароль = "parolprobe"
      Логин = "vlasssovprobe"
        
      AuthenticationPost = "Email=" + Логин + "&Passwd=" + Пароль + "&service=" + Сервис + "&source=ecxelvba"
        
      Set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP")
          xmlhttp.Open "POST", АдресКлиентЛогин, False
          xmlhttp.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
          xmlhttp.Send AuthenticationPost
      If xmlhttp.Status = 200 Then
          Маркер = xmlhttp.ResponseText
          ПолучитьМаркер = Right(Маркер, Len(Маркер) - Len("Auth=") - InStr(1, Маркер, "Auth=") + 1)
      Else
          ПолучитьМаркер = "Ошибка:" + CStr(xmlhttp.Status) + "-" + CStr(xmlhttp.ResponseText)
            
      End If
        
End Function
[/vba]

Секрет в этой части кода
[vba]
Код
&source=ecxelvba"
[/vba]

Просто надо предварительно на сайте Google, вот по этому адресу

https://www.google.com/settings/security

зарегистрировать приложение.

Я зарегистрировал "excelvba" и аутентификация прошла. Маркер получен.
Теперь по ячейкам разберусь, отпишусь.

Автор - vlasssov71
Дата добавления - 12.11.2014 в 17:40
vlasssov71 Дата: Четверг, 13.11.2014, 00:41 | Сообщение № 9
Группа: Заблокированные
Ранг: Новичок
Сообщений: 16
Репутация: -5 ±
Замечаний: 40% ±

Excel 2007
PS: а "поциент" не пробовал установить гугл драйв? Там и общий доступ и не общий доступ и свистелки и перделки есть.

Ой, нимагу! Пиши есчо! То есть еще и место отжирать на двух машинах? А ежели кто файл удалит? Мне вот интересно как вопрос сохранности данных решать будет наш pro? Ну установи, на двух машинах гугл драйв, ну открой один файл и поредактируй одновременно. Прикинь, сохранятся изменения сделанные последним человеком?
То модератор: это что за жлоб на форуме? "перделки" "гланды и задний проход"? Это что за стилистика магаданской подворотни, в натуре? Избавьте меня, наконец, от уголовников.
 
Ответить
Сообщение
PS: а "поциент" не пробовал установить гугл драйв? Там и общий доступ и не общий доступ и свистелки и перделки есть.

Ой, нимагу! Пиши есчо! То есть еще и место отжирать на двух машинах? А ежели кто файл удалит? Мне вот интересно как вопрос сохранности данных решать будет наш pro? Ну установи, на двух машинах гугл драйв, ну открой один файл и поредактируй одновременно. Прикинь, сохранятся изменения сделанные последним человеком?
То модератор: это что за жлоб на форуме? "перделки" "гланды и задний проход"? Это что за стилистика магаданской подворотни, в натуре? Избавьте меня, наконец, от уголовников.

Автор - vlasssov71
Дата добавления - 13.11.2014 в 00:41
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Запись данных в Google Table (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!