-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathenviar_dados_api_vba_excel.vba
78 lines (55 loc) · 2.85 KB
/
enviar_dados_api_vba_excel.vba
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
'Exemplo de Consulta de API no Excel com VBA;
'Utilize a biblioteca VBA Json para realizar a leitura do objeto Json;
'Habilite o RunTime nas Bibliotecas do Excel;
'Salve o arquivo XLSM para que as macros funcionem;
Sub EnvioDadosPostViaVBA()
'Declaracao das variaveis
Dim cadeia As String
Dim Result() As String
Dim contador As Integer
Dim total, linha As Integer
Dim ws As Worksheet
'Selecionamos nossa planilha resultados
Set ws = Worksheets("matriculas")
'atribuimos a url consulta
Url = "SUA URL" 'nao esqueca de preencher com http ou https;
'Definimos os contadores
total = 0
linha = 2
'laco de repeticao funciona ate encontrar uma linha vazia;
Do While ws.Cells(linha, 1).Value <> ""
'atribui informacoes da planilha nas variaveis
idAluno = ws.Cells(linha, 1).Value
idEmpresa = ws.Cells(linha, 2).Value
idPerfil = ws.Cells(linha, 3).Value
idTreinamento = ws.Cells(linha, 4).Value
dataMatricula = ws.Cells(linha, 5).Value
dataValidade = ws.Cells(linha, 6).Value
Result = Split(idTreinamento, ",")
For i = LBound(Result()) To UBound(Result())
'Preenche e Envia requisicao POST com os dados em formato Json: atencao para a concatenacao da string com os elementos; #ponto critico de funcionamento
JsonBody = "{""dominio"": ""seuDominio"",""senha"": ""suaSenha"",""classe"": ""matricula"",""metodo"": ""cadastrar"",""id_aluno"": """ & idAluno & """,""id_empresa"": """ & idEmpresa & """,""id_perfil"": """ & idPerfil & """,""id_treinamento"": """ & Result(i) & """,""data"": """ & dataMatricula & """,""hora"": """",""liberar"": ""1"",""origem"": ""0"",""validade"": """ & dataValidade & """,""solicitacao_rematricula"": ""0""}"
'Criamos nosso objeto de requisicao
Set objpostHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
objpostHTTP.Open "POST", Url, False
objpostHTTP.setRequestHeader "cache-control", "no-cache"
objpostHTTP.setRequestHeader "Accept", "application/json"
objpostHTTP.setRequestHeader "Content-Type", "application/json"
'Enviamos nosso JsonBody para a API;
objpostHTTP.Send (JsonBody)
strResult = objpostHTTP.responseText
json = strResult
'convertemos a resposta da API com nossa biblioteca VBA Json;
Set objetoJson = JsonConverter.ParseJson(json)
'Pega o retorno do POST
retorno = objetoJson("status")
'Preenche o retorno na planilha
ws.Cells(linha, 7 + i) = retorno
'Aguarda o tempo da API: 5 requisicao a cada 20 segundos
Application.Wait (Now + TimeValue("0:00:05"))
Next i
linha = linha + 1
total = total + 1
Loop
MsgBox "#Automacao eh Bonito!" & vbNewLine & "#ProgramadorPreguicoso" & vbNewLine & vbNewLine & "Foram Matriculados " & total & " Alunos =)" & vbNewLine & vbNewLine & "Tarefa feita com excelencia!"
End Sub