Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
Por Hudson
Posts
#26568
Olá a todos, boa tarde.

Preciso de uma ajuda da comunidade. Eu tinha uma loja hospedada na plataforma Loja2, hoje precisei baixar a listagem de vendas com e-mail e telefone. O que acontece é que a plataforma não da suporte para isso então resolvi criar uma macro para alimentar o excel. Manualmente não da pois estamos falando de mais de 800 pedidos então deve ser automatizada.

O que preciso: alimentar o excel com o numero de telefone e e-mail.
Onde colho as informações?: Tenho uma listagem assim:

Imagem

Coluna A com o endereço do pedido gerado, coluna b e c para alimentar o excel

O que consegui até agora:
Código: Selecionar todos
Sub Macro6()
'
' Macro6 Macro
'

'
    ActiveCell.Select
    With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://venusbela.loja2.com.br/cart/3214555", Destination:=Range("$K$19") _
        )
        .CommandType = 0
        .Name = "3214555_2"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlEntirePage
        .WebFormatting = xlWebFormattingNone
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With
    ActiveWindow.SmallScroll Down:=66
    ActiveCell.Offset(73, 4).Range("A1").Select
    Selection.Copy
    ActiveWindow.SmallScroll Down:=-72
    ActiveCell.Offset(-73, -4).Range("A1").Select
    ActiveSheet.Paste
    ActiveWindow.SmallScroll Down:=60
    ActiveCell.Offset(74, 4).Range("A1").Select
    Application.CutCopyMode = False
    Selection.Copy
    ActiveWindow.SmallScroll Down:=-102
    ActiveCell.Offset(-74, -3).Range("A1").Select
    ActiveSheet.Paste
    ActiveCell.Offset(0, 2).Columns("A:A").EntireColumn.Select
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlToLeft
    ActiveWindow.SmallScroll Down:=42
    Selection.Delete Shift:=xlToLeft
    Selection.Delete Shift:=xlToLeft
    ActiveCell.Offset(4, -2).Range("A1").Select
End Sub

O código gera erro neste trecho: ".CommandType = 0"

Obviamente este erro parece ser o JS, tem alguma outra forma de se fazer isso funcionar?

ps: mesmo jogando o link do pedido é necessário manter-se logado
#26582
Consegui fazer funcionar, mas agora preciso automatizar.

No código abaixo consigo baixar e gerar os dois primeiros cadastros (coluna A), mas não consigo fazer isso automático até terminar a quantidade de cadastros da coluna A.

Alguém tem alguma ideia? Segue:


Código: Selecionar todos
   Sub Macro3()
'
' Macro3 Macro
'

'
    Range("G2").Select
    ActiveCell.FormulaR1C1 = "http://venusbela.loja2.com.br/cart/3246132"
    Range("H2").Select
    With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://venusbela.loja2.com.br/cart/3246132", Destination:=Range("$N$1"))
        .Name = "3246132"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlEntirePage
        .WebFormatting = xlWebFormattingNone
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With
    Cells.Find(What:="telefone:", After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate
    ActiveCell.Offset(0, 1).Select
    Selection.Copy
    Range("H2").Select
    ActiveSheet.Paste
    Cells.Find(What:="E-mail:", After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate
    ActiveCell.Offset(0, 1).Select
    Selection.Copy
    Range("I2").Select
    ActiveSheet.Paste
    Columns("N:Q").Select
    Application.CutCopyMode = False
    Selection.QueryTable.Delete
    Selection.ClearContents

    Range("G3").Select
    ActiveCell.FormulaR1C1 = "http://venusbela.loja2.com.br/cart/3246132"
    Range("H3").Select
    With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://venusbela.loja2.com.br/cart/3240332", Destination:=Range("$N$1"))
        .Name = "3240332"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlEntirePage
        .WebFormatting = xlWebFormattingNone
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With
    Cells.Find(What:="telefone:", After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate
    ActiveCell.Offset(0, 1).Select
    Selection.Copy
    Range("H3").Select
    ActiveSheet.Paste
    Cells.Find(What:="E-mail:", After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate
    ActiveCell.Offset(0, 1).Select
    Selection.Copy
    Range("I3").Select
    ActiveSheet.Paste
    Columns("N:Q").Select
    Application.CutCopyMode = False
    Selection.QueryTable.Delete
    Selection.ClearContents
    
    ActiveWindow.ScrollColumn = 7
    ActiveWindow.ScrollColumn = 6
    ActiveWindow.ScrollColumn = 5
    ActiveWindow.ScrollColumn = 4
    ActiveWindow.ScrollColumn = 3
    ActiveWindow.ScrollColumn = 2
    ActiveWindow.ScrollColumn = 1
    Range("I1").Select
End Sub
#26601
Hudson
Bom dia,

Brother, apenas confirme algo... Você menciona na explicação que deseja puxar os dados da Coluna "A", porém em teu código está se referenciando a Coluna "G" e Coluna "H"...
Fiz o laço para repetir as ações em todos os dados da Coluna "G", se essa não for tua necessidade, recomendo que poste um exemplo de tua planilha para ficar mais clara a tua necessidade.

Veja se te atende desta forma:
Código: Selecionar todos
Sub Macro3()
Dim uL as Integer
uL = Range("G65000").End(xlUp).row

'~> Inicio do laço!!!
For x=2 to uL
  Range("G"& uL).Select
  ActiveCell.FormulaR1C1 = "http://venusbela.loja2.com.br/cart/3246132"
  Range("H"& uL).Select
  With ActiveSheet.QueryTables.Add(Connection:= _
    "URL;http://venusbela.loja2.com.br/cart/3246132", Destination:=Range("$N$1"))
    .Name = "3246132"
    .FieldNames = True
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .BackgroundQuery = True
    .SavePassword = False
    .SaveData = True
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .WebSelectionType = xlEntirePage
    .WebFormatting = xlWebFormattingNone
    .WebPreFormattedTextToColumns = True
    .WebConsecutiveDelimitersAsOne = True
    .WebSingleBlockTextImport = False
    .WebDisableDateRecognition = False
    .WebDisableRedirections = False
    .Refresh BackgroundQuery:=False
End With
  Cells.Find(What:="telefone:", After:=ActiveCell, LookIn:=xlFormulas, _
      LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
      MatchCase:=False, SearchFormat:=False).Activate
  ActiveCell.Offset(0, 1).Select
  Selection.Copy
  Range("H" & uL).Select
  ActiveSheet.Paste
  Cells.Find(What:="E-mail:", After:=ActiveCell, LookIn:=xlFormulas, _
      LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
      MatchCase:=False, SearchFormat:=False).Activate
  ActiveCell.Offset(0, 1).Select
  Selection.Copy
  Range("I" & uL).Select
  ActiveSheet.Paste
  Columns("N:Q").Select
  Application.CutCopyMode = False
  Selection.QueryTable.Delete
  Selection.ClearContents
  Range("I1").Select

Next x

End Sub
Por Hudson
Posts
#26607
Olá Wesley, tudo joia?

Sim, estou trabalhando com a coluna G onde fica o link de cada cliente, este link me da acesso aos dados completos do pedido; entre eles o que preciso: E-mail e Telefone.

Imagem

Testei seu código e aparentemente ele coleta apenas os dados deste cliente: "http://venusbela.loja2.com.br/cart/3246132
" e joga na última linha da lista e fica repetindo apenas nesta última linha


A planilha deveria funcionar assim:
- Copio o primeiro link da coluna G2;
- Coleto os dados da Web utilizando este link do pedido;
- Jogo estes dados no Excel;
- Busco o telefone, copio o telefone e colo na coluna H2;
- Busco o e-mail, copio o e-mail e colo na coluna I2;

- Repito o processo agora para a G3 colando na H3 e I3

- Repito o processo para as próximas linhas até o final da planilha.
#26629
Olá Wesley, segue abaixo os dados que são copiados e colados no Excel, desdes dados coleto apenas e-mail e telefone (Cole como texto no excel para incluir a formatação que tenho aqui.) neste exemplo estou usando o link: "http://venusbela.loja2.com.br/cart/3240332" onde 3240332 é o número do pedido:

--------------------------------------------------------------


olá, venusbela!
pedidos
preferências
gerais
aparência
pagamento
frete
social
avançado
cadastro
recursos
cupons de desconto
atributos de produto
carrossel de produtos
minha conta
suporte ao lojista
ajuda
fórum
sair
Vênus Bela comércio de Cosméticos


Página Inicial
MUDAMOS DE LOJA
MUDAMOS DE LOJA
Contato
+ nova página

Não quer blocos de propaganda em sua loja? Clique aqui e tenha uma Conta Especial, a partir de R$16,56 ao mês!

+ nova categoria

MUDAMOS DE LOJA:

ACESSE NOVA LOJA: http://www.venusbela.com.br editar


Pedido 3240332

Produto Quantidade Preço
Sweet Sweat Gel R$ 1,00 R$ 130,00
Subtotal: R$ 130,00
Frete: R$ 45,00
Total: R$ 175,00


Status: Código de rastreamento (opcional):


Método de pagamento: PagSeguro
Método de envio: FRETE FIXO
Nome: Karol Araújo
Endereço: Rua Silva Jatahy, 631 apto. 601
Bairro:
Cidade: Fortaleza
Estado: CE
CEP: 60165070
Telefone: (85) 96455757
E-mail: karol1980@hotmail.com
Mensagem do cliente: Cliente não deixou comentário.


As vendas desta loja estão temporariamente desativadas.

Lojista: se quiser reativar suas vendas, desmarque a opção "desativação temporária" nas preferências gerais.


MUDAMOS DE LOJA.

ACESSE NOVA LOJA: http://www.venusbela.com.br editar


editar rodapé

Vênus Bela comércio de Cosméticos
contato

termos de serviço
política de privacidade
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord