3/9/2016 Cliente REST en VBA | areaTIC.
net
areaTIC.net
Ejemplos y casos prácticos sobre programación y soluciones tecnológicas.
BÚSQUEDA EN AREATIC.NET
Buscar
MARTES, 4 DE JUNIO DE 2013
Cliente REST en VBA
A raíz de unas utilidades que hemos de desarrollar en nuestros verticales surgió la necesidad de crear clientes REST desde aplicaciones
que usan lenguajes VBA (asp, Visual Basic 6.0, Macros de Excel, vbs)… Trabajando en estos entornos no encontraremos una dll oficial
que nos sirva para conectar a un servicio REST lo cual tiene bastante sentido porque VBA dejó de ampliarse ya hace 10 años con el paso
a .NET y REST es un tema emergente que se ha puesto de moda estos últimos años.
Aún así teniendo en cuenta que REST no es más que una petición HTTP, usando la librería msxml.dll que aún podemos descargar en la
página de Microsoft se podría crear un cliente REST sin problemas en este tipo de aplicaciones.
Con esta dll ya podremos realizar llamadas HTTP controlando el verbo y las cabeceras de la petición, pero no incorpora utilidades para
convertir cadenas JSON a objetos ni viceversa. Tirando de google un poco veo que hay gente que opta por usar las dll que .NET sí que
mantiene donde es bastante sencillo realizar este tipo de acciones con parseJSON y métodos del estilo, para ello generan una dll desde
.NET que vinculan desde las aplicaciones VBA usando interops o convirtiendo la dll .NET en objeto COM. En nuestro caso dada la
naturaleza del parque de aplicaciones que mantengo actualmente y teniendo en cuanto como se despliegan las aplicaciones a los usuarios
era una solución un poco engorrosa. Hemos optado por descargar esta solución Visual Basic 6.0 y aprovechar las utilidades JSON en
nuestras aplicaciones.
Una vez tenemos estos 2 requisitos veamos como implementar un GET de ejemplo y a partir de ahí cada uno podría montarse su clase
proxy genérica para trabajar contra distintos servicios que sigan el patrón REST desde aplicaciones VBA. El GET haremos que ataque al
servicio REST (artículo) que creamos hace unas semanas en areaTIC y debería devolvernos la misma información que si usamos el
cliente genérico .NET que creamos también hace unas semanas en areaTIC.
Option Explicit
Private m_url as string
Private m_Service as string
Public Function GetFromWebAPI(ByVal strValue As String) As ADODB.Recordset
Dim oHttReq As MSXML2.XMLHTTP
On Error GoTo errorFunction
http://www.areatic.net/2013/06/clienterestenvba.html 1/5
3/9/2016 Cliente REST en VBA | areaTIC.net
'Definimos URL y Servicio, en este caso es específico la URL se corresponde con el proyecto Web MVC API que tengo en mi IIS local.
Tweets por @canizarescarlos m_url = "http://localhost/WebApi/Api"
m_Service = strValue
Carlos Cañizares retwitteó
' Enviar el comando al servicio Web
Plain Concepts ' usar XMLHTTPRequest para enviar la información al servicio Web
@plainconcepts Set oHttReq = New XMLHTTP
Next 24 Sept we'll be in #SQLSatMadrid with our ' Enviar el comando de forma síncrona
cracks @_unaizc_ @PabloDoval @luisruizpavon oHttReq.open "GET", m_url & "/" & m_Service, False
ow.ly/7TRz303KPON
' las cabeceras a enviar en la petición HTTP
' oHttReq.setRequestHeader "Content‐Type", "text/xml; charset=utf‐8"
' enviar el comando
Dim body As String
oHttReq.send
body = oHttReq.responseText
Dim oRstDatos As ADODB.Recordset
Set oRstDatos = ParseJSON(body)
Set oHttReq = Nothing
Exit Function
errorFunction:
Err.Raise Err.Number
End Function
31 ago
Option Explicit
Carlos Cañizares retwitteó Private Sub Command1_Click()
Dim rest_client As New RESTClient
Plain Concepts
Dim rs As ADODB.Recordset
@plainconcepts Set rs = rest_client.GetFromWebAPI("articulo")
La nueva Intranet #Office365 @mariocortesf
rs.MoveFirst
Insertar Ver en Twitter MsgBox rs.GetString
End Sub
ARCHIVO DE AREATIC.NET
► 2016 (10)
► 2015 (13)
► 2014 (15)
▼ 2013 (52)
► diciembre (1)
► noviembre (1)
► octubre (5)
► septiembre (4)
Comentar que hemos usado como base para el método parseJSON el código fuente descargado del enlace que os presentaba al principio
► agosto (4) del artículo pero hemos añadido un método para convertir el diccionario de valores en un Recordset dinámico ya que dada la naturaleza
de nuestras aplicaciones VBA nos resultaba muy útil. No hay problema en subir el código de ejemplo si alguien está interesado
► julio (4)
hacérnoslo saber que os paso el proyecto de test que he usado para realizar el cliente REST VBA. Como siempre espero que el artículo os
▼ junio (4)
http://www.areatic.net/2013/06/clienterestenvba.html 2/5
3/9/2016 Cliente REST en VBA | areaTIC.net
SQL Server: Últimos accesos a una tabla resulte interesante, cualquier duda o valoración hacerla llegar a través de comentarios, emails o como buenamente os apetezca.
Recuerda que puedes seguir areaTIC en las redes sociales, anímate a participar!
Windows Phone 8 Acceso a datos, REST
Wordpress: Añadir un Sitemap
Publicado por Carlos Cañizares a las 20:55:00 +5 Recomendar esto en Google
Cliente REST en VBA
► mayo (4)
► abril (5)
► marzo (4)
► febrero (7)
► enero (9) Valora este artículo (1 Valoraciones)
Etiquetas: areaTIC, HTTP, JSON, REST, VBA
► 2012 (46)
3 comentarios:
ETIQUETAS DE AREATIC.NET Byron Penagos dijo...
Active Directory (3) Ajax (3) Alexa Traffic Rank (1) Android Demasiado interesante el documento . por favor estoy interesado en que me manden el proyecto test. muchas gracias por el
(3) AngularJS (6) Api DL (1) Api Management (1) Apple (1) grandioso aporte.
areaTIC (133) ASP (3) ASP.NET (21) ASP.NET 11 de noviembre de 2015, 18:14
4.0 (6) ASP.NET 5.0 (1) asp.net core (3) AsyncPattern (1)
autenticación (2) Babel (1) backup (1) BI (3) Blogger (16) Kristian Cevallos dijo...
BOM (1) bower (1) C# (28) CallBackContract (2) Canvas De igual manera me uno al compañero es un tema muy interesante y desearía me ayuden. Ya que con Json no he logrado
(1) ChannelFactory (3) Chrome (3) Chutzpah (1) Citrix (1) consumir el WS
columna (1) condiciones (3) Cordova (5) CSS (5) Database
17 de noviembre de 2015, 17:52
Mail (2) DDE (1) DI (1) directivas (3) DMV (2) docker (1)
dominio (1) Ecmascript (1) Eventos (1) facebook (2) facetas
(3) Feed (2) Fiddler (1) Firefox (1) google+ (3) grunt.js (1) Carlos Cañizares dijo...
Hangouts (1) Hint (2) Hololens (1) HTML (9) HTML5 (14) Buenas! comentaros que he perdido este ejemplo entre traspasos de portátiles. Si no recuerdo mal lo que añadí a vbjson fue
HTTP (12) identity (3) IIS (9) IIS 7.0 (3) indices (5) un parseador para pasar el resultado string a un recordset.
Intercalación (3) IOC (1) IOS (2) IPhone (1) ITIL (2)
2 de diciembre de 2015, 15:06
JasmineJS (1) Javascript (24) JQuery (2) JSON (10)
Karma (1) less.js (1) linkedin (3) Lync (1) Mac (2)
metaetiqueta (2) Metro (2) Microsoft (1) Mozilla (1) MS Publicar un comentario en la entrada
Dynamics NAV (1) MultiThreading (3) MVC (7) net .core (2)
NPM (1) ODBC (1) open source (3) Operador SQL Server (1)
ownCloud (1) Pagerank (3) PhoneGap (5) plugin (3)
Qlikview (2) Remote Tools (1) REST (10) SaaS (5) Scrum (1)
SEM (1) SEO (7) Service Broker (2) ServiceHost (1)
Sharepoint (1) SignalR (2) sitemap (1) Skype (1) soap (10)
SQL Profiler (2) SQL Server (27) SQL Server log (1)
SQLite (2) Store App (1) Swagger (1) Swashbuckle (1) Swift
(2) ThreadSafe (2) turnapi (1) twitter (4) twitterfeed (1)
TypeScript (2) Unit Testing (1) Unity (1) VBA (2) Visual
Studio (8) Visual Studio 2012 (1) Visual Studio 2015 (2)
Visual Studio Code (2) VMware (1) VSCode (1) WCF (10)
WCF Dúplex (2) WebAPI (9) WebPack (1) WebSockets (2)
wikipedia (1) Windows (1) Windows 8 (4) Windows 8.1 (2)
Windows Forms (2) Windows Phone (4) Windows Server
(1) Wordpress (2) WSDualHttpBinding (2) Xcode (2) XML
(6) xsd (2) YouTube (1)
http://www.areatic.net/2013/06/clienterestenvba.html 3/5
3/9/2016 Cliente REST en VBA | areaTIC.net
TOP 5 DEL ÚLTIMO MES EN AREATIC.NET
ITIL: Herramientas open source Introduce tu comentario...
Si estamos pensando en la
implantación de procesos siguiendo
las recomendaciones de ITIL en
nuestra organización una de las
primeras pregun...
Comentar como: Seleccionar perfil...
SQL Server: Insertar valor en columna Identity
Es posible que alguna ocasión os hayáis
encontrado con una tabla en la que tenéis una Publicar
Vista previa
columna identity [AddressID] (normalmente
primary ke...
Error #2147467259 : [Microsoft][Administrador
de controladores ODBC] No se encuentra el
nombre del origen de datos y no se especificó
ningún controlador predeterminado
Nos disponemos a publicar un sitio web usando IIS
7.0 / 7.5 en un Windows 2008 Server R2 64 bits y
en algún punto de la aplicación se usan ...
SQL Server: Últimos accesos a una
tabla
Es muy posible que en algún
momento hayas pensado en que
estaría bien saber cuándo ha sido el
último acceso a una determinada
tabla de tu ... Entrada más reciente Página principal Entrada antigua
SQL Server: ¿Qué es la
fragmentación de índices?
En el artículo SQL Server: FILL
FACTOR os comentaba que si para un
determinado índice seleccionamos un
fill factor demasiado elevado y hay...
Con la tecnología de Blogger.
http://www.areatic.net/2013/06/clienterestenvba.html 4/5
3/9/2016 Cliente REST en VBA | areaTIC.net
Nombre
Correo electrónico
Mensaje
Enviar
MOST RECENT
COPYLEFT DE AREATIC.NET Para cualquier duda o si quieres colaborar con el blog de areaTIC.net
puedes contactar con nosotros, en la sección CONTACTO. Si quieres
saber más sobre nosotros puedes obtener más información en la
areaTIC.net by www.areaTIC.net is licensed under a
sección ACERCA DE areaTIC.net o también puedes acceder a nuestro
Creative Commons ReconocimientoNoComercial
ARCHIVO para consultar todos nuestros artículos.
CompartirIgual 3.0 Unported License.
http://www.areatic.net/2013/06/clienterestenvba.html 5/5