Ir para conteúdo
Fórum Script Brasil
  • 0

Colar dados em uma planilha sem Macro ?


Ramiro Isídio

Pergunta

Boa tarde pessoal 

Preciso de uma ajuda, eu tenho uma planilha em formato xlsm que possui um macro para dar um Refresh e varias mesclagens com o Power Query para me trazer a demanda. 

Eu atualizo ela automaticamente todo dia com o Power automate, porém quero inputar essas informações no Sheets com o Python, o Python não está reconhecendo o arquivo em Xlsm, quando eu copio e jogo manualmente no xlsx ele executa o código sem problemas.

 

Existe alguma forma de jogar essas informações com o VBA no arquivo xlsx ? 

 

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Copia os dados a primeira aba para uma nova pasta de trabalho e salva no formato xlsx

Segue exemplo: 

 

Sub SalvarXLSMtoXLSX()
    Dim FileExtStr  As String
    Dim FileFormatNum As Long
    Dim Sourcewb    As Workbook
    Dim Destwb      As Workbook
    Dim TempFilePath As String
    Dim TempFileName As String

    With Application
        .ScreenUpdating = False
        .EnableEvents = False
    End With
    Set Sourcewb = ActiveWorkbook
    Sourcewb.Sheets(1).Activate    ' Aba 1(altere se neccess.)
    ActiveSheet.Copy
    Set Destwb = ActiveWorkbook
    With Destwb
        If Val(Application.Version) < 12 Then
            FileExtStr = ".xls": FileFormatNum = -4143
        Else
            Select Case Sourcewb.FileFormat
                Case 51: FileExtStr = ".xlsx": FileFormatNum = 51
                Case 52:
                    If .HasVBProject Then
                        FileExtStr = ".xlsm": FileFormatNum = 52
                    Else
                        FileExtStr = ".xlsx": FileFormatNum = 51
                    End If
                Case 56: FileExtStr = ".xls": FileFormatNum = 56
                Case Else: FileExtStr = ".xlsb": FileFormatNum = 50
            End Select
        End If
    End With
    TempFilePath = Application.DefaultFilePath & "\"    ' pasta Meus Documentos (altere se necess.)
    TempFileName = VBA.Split(ThisWorkbook.Name, ".")(0)
    With Destwb
        .SaveAs TempFilePath & TempFileName & FileExtStr, FileFormat:=FileFormatNum
        .Close SaveChanges:=False
    End With
    With Excel.Application
        .ScreenUpdating = True
        .EnableEvents = True
    End With
End Sub

creditos https://www.rondebruin.nl/win/s5/win001.htm

Link para o comentário
Compartilhar em outros sites

  • 0
14 horas atrás, Basole disse:

Copia os dados a primeira aba para uma nova pasta de trabalho e salva no formato xlsx

Segue exemplo: 

 

Sub SalvarXLSMtoXLSX()
    Dim FileExtStr  As String
    Dim FileFormatNum As Long
    Dim Sourcewb    As Workbook
    Dim Destwb      As Workbook
    Dim TempFilePath As String
    Dim TempFileName As String

    With Application
        .ScreenUpdating = False
        .EnableEvents = False
    End With
    Set Sourcewb = ActiveWorkbook
    Sourcewb.Sheets(1).Activate    ' Aba 1(altere se neccess.)
    ActiveSheet.Copy
    Set Destwb = ActiveWorkbook
    With Destwb
        If Val(Application.Version) < 12 Then
            FileExtStr = ".xls": FileFormatNum = -4143
        Else
            Select Case Sourcewb.FileFormat
                Case 51: FileExtStr = ".xlsx": FileFormatNum = 51
                Case 52:
                    If .HasVBProject Then
                        FileExtStr = ".xlsm": FileFormatNum = 52
                    Else
                        FileExtStr = ".xlsx": FileFormatNum = 51
                    End If
                Case 56: FileExtStr = ".xls": FileFormatNum = 56
                Case Else: FileExtStr = ".xlsb": FileFormatNum = 50
            End Select
        End If
    End With
    TempFilePath = Application.DefaultFilePath & "\"    ' pasta Meus Documentos (altere se necess.)
    TempFileName = VBA.Split(ThisWorkbook.Name, ".")(0)
    With Destwb
        .SaveAs TempFilePath & TempFileName & FileExtStr, FileFormat:=FileFormatNum
        .Close SaveChanges:=False
    End With
    With Excel.Application
        .ScreenUpdating = True
        .EnableEvents = True
    End With
End Sub

creditos https://www.rondebruin.nl/win/s5/win001.htm

Serviu em partes, muito obrigado.

 

Existe alguma forma de eu colocar no diretorio abaixo e sempre substituilo quando rodasse esse script ? 

\\fsextrema02\ProgramacaoControleE-commerce\Inteligência de Estoque\Relatório Fluxo de Processo 7017-7006\7017\Relatorio V2

Editado por Ramiro Isídio
Link para o comentário
Compartilhar em outros sites

  • 0

@Ramiro Isídiopelo que entendi., o nome da nova pasta de trabalho (planilha formato xlsx), tem que ser: "Relatorio V2.xlsx" 

Segue o codigo com as alterações:

Sub SalvarXLSMtoXLSX()
    Dim FileExtStr  As String
    Dim FileFormatNum As Long
    Dim Sourcewb    As Workbook
    Dim Destwb      As Workbook
    Dim TempFilePath As String
    Dim TempFileName As String

    With Application
        .ScreenUpdating = False
        .EnableEvents = False
    End With
    Set Sourcewb = ActiveWorkbook
    Sourcewb.Sheets(1).Activate    ' Aba 1(altere se neccess.)
    ActiveSheet.Copy
    Set Destwb = ActiveWorkbook
    With Destwb
        If Val(Application.Version) < 12 Then
            FileExtStr = ".xls": FileFormatNum = -4143
        Else
            Select Case Sourcewb.FileFormat
                Case 51: FileExtStr = ".xlsx": FileFormatNum = 51
                Case 52:
                    If .HasVBProject Then
                        FileExtStr = ".xlsm": FileFormatNum = 52
                    Else
                        FileExtStr = ".xlsx": FileFormatNum = 51
                    End If
                Case 56: FileExtStr = ".xls": FileFormatNum = 56
                Case Else: FileExtStr = ".xlsb": FileFormatNum = 50
            End Select
        End If
    End With
    TempFilePath = "\\fsextrema02\ProgramacaoControleE-commerce\Inteligência de Estoque\Relatório Fluxo de Processo 7017-7006\7017\"
    TempFileName = "Relatorio V2"
    
    With Destwb
        .SaveAs TempFilePath & TempFileName & FileExtStr, FileFormat:=FileFormatNum
        .Close SaveChanges:=False
    End With
    With Excel.Application
        .ScreenUpdating = True
        .EnableEvents = True
    End With
End Sub

 

Link para o comentário
Compartilhar em outros sites

  • 0
Em 04/05/2022 em 12:42, Basole disse:

@Ramiro Isídiopelo que entendi., o nome da nova pasta de trabalho (planilha formato xlsx), tem que ser: "Relatorio V2.xlsx" 

Segue o codigo com as alterações:

Sub SalvarXLSMtoXLSX()
    Dim FileExtStr  As String
    Dim FileFormatNum As Long
    Dim Sourcewb    As Workbook
    Dim Destwb      As Workbook
    Dim TempFilePath As String
    Dim TempFileName As String

    With Application
        .ScreenUpdating = False
        .EnableEvents = False
    End With
    Set Sourcewb = ActiveWorkbook
    Sourcewb.Sheets(1).Activate    ' Aba 1(altere se neccess.)
    ActiveSheet.Copy
    Set Destwb = ActiveWorkbook
    With Destwb
        If Val(Application.Version) < 12 Then
            FileExtStr = ".xls": FileFormatNum = -4143
        Else
            Select Case Sourcewb.FileFormat
                Case 51: FileExtStr = ".xlsx": FileFormatNum = 51
                Case 52:
                    If .HasVBProject Then
                        FileExtStr = ".xlsm": FileFormatNum = 52
                    Else
                        FileExtStr = ".xlsx": FileFormatNum = 51
                    End If
                Case 56: FileExtStr = ".xls": FileFormatNum = 56
                Case Else: FileExtStr = ".xlsb": FileFormatNum = 50
            End Select
        End If
    End With
    TempFilePath = "\\fsextrema02\ProgramacaoControleE-commerce\Inteligência de Estoque\Relatório Fluxo de Processo 7017-7006\7017\"
    TempFileName = "Relatorio V2"
    
    With Destwb
        .SaveAs TempFilePath & TempFileName & FileExtStr, FileFormat:=FileFormatNum
        .Close SaveChanges:=False
    End With
    With Excel.Application
        .ScreenUpdating = True
        .EnableEvents = True
    End With
End Sub

 

Funcionou perfeitamente, muito obrigadooo 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...