locked
Cópia de conteúdo e formato de planilha no Excel

    Pergunta

  • Bom dia pessoal!

     

    Tenho uma aplicativo no Access. Preciso pegar várias planilhas do excel que estão em vários documentos e colocar em um arquivo só, em diversas planilhas. Pra fazer isso no VBA, inicialmente pensei em abrir arquivo por arquivo, copiar tudo e colar na nova planilha. O problema é que a formatação original não está sendo conservada, o que é fundamental para o meu problema. Existe alguma forma de eu copiar um objeto Worksheet de um WorkBook e colar em um outro Workbook? E com isso manter todas propriedades (conteúdo e formatação)?

     

    Obrigado!

    quinta-feira, 22 de fevereiro de 2007 12:53

Respostas

  • Oi Bulle,

     

    é posível sim.

    Exemplo de como copiar a Sheet1 do Book1 no Book2:

    Sub CopiaPlanilha()
    Dim oApp As Excel.Application
    Dim oWkb1 As Excel.Workbook
    Dim oWkb2 As Excel.Workbook
    Dim oSheet1 As Excel.Worksheet

    On Error GoTo ErrHandler

    Set oApp = New Excel.Application
    oApp.Visible = True
    Set oWkb1 = oApp.Workbooks.Open("c:\Download\Book1.xls")
    Set oWkb2 = oApp.Workbooks.Open("c:\Download\Book2.xls")

    Set oSheet1 = oWkb1.Worksheets(1)
    oSheet1.Copy , oWkb2.Worksheets(oWkb2.Worksheets.Count)

    oWkb1.Close

    ExitHere:
    Set oSheet2 = Nothing
    Set oWkb1 = Nothing
    Set oWkb2 = Nothing
    Set oApp = Nothing
    Exit Sub

    ErrHandler:
    MsgBox Err.Description & vbCrLf & Err.Number & vbCrLf & Err.Source, vbCritical, "CopiaPlanilha"
    End Sub

    quarta-feira, 28 de fevereiro de 2007 03:02

Todas as Respostas

  • Oi Bulle,

     

    é posível sim.

    Exemplo de como copiar a Sheet1 do Book1 no Book2:

    Sub CopiaPlanilha()
    Dim oApp As Excel.Application
    Dim oWkb1 As Excel.Workbook
    Dim oWkb2 As Excel.Workbook
    Dim oSheet1 As Excel.Worksheet

    On Error GoTo ErrHandler

    Set oApp = New Excel.Application
    oApp.Visible = True
    Set oWkb1 = oApp.Workbooks.Open("c:\Download\Book1.xls")
    Set oWkb2 = oApp.Workbooks.Open("c:\Download\Book2.xls")

    Set oSheet1 = oWkb1.Worksheets(1)
    oSheet1.Copy , oWkb2.Worksheets(oWkb2.Worksheets.Count)

    oWkb1.Close

    ExitHere:
    Set oSheet2 = Nothing
    Set oWkb1 = Nothing
    Set oWkb2 = Nothing
    Set oApp = Nothing
    Exit Sub

    ErrHandler:
    MsgBox Err.Description & vbCrLf & Err.Number & vbCrLf & Err.Source, vbCritical, "CopiaPlanilha"
    End Sub

    quarta-feira, 28 de fevereiro de 2007 03:02
  • Era isso mesmo que eu precisava...

    só não entendi a sintaxe do comando:

    oSheet1.Copy , oWkb2.Worksheets(oWkb2.Worksheets.Count)

    quando se coloca a vírgula é feito algum tipo de pipe para a planilha especificada?

     

    Obrigado!

    quarta-feira, 28 de fevereiro de 2007 17:52
  • Mais simples que isso: o método Copy tem dois parâmetros opcionais, Before e After. Usei a vírgula para a planilha entrar "After" (depois da última planilha).
    quarta-feira, 28 de fevereiro de 2007 23:05



  • Luiz Cláudio , me tira uma dúvida?
    Estou usando esse seu código e está funcionando perfeitamente , mas queria apagar as 3 primeiras sheets defaults. como poderia fazer isso?
    quarta-feira, 16 de janeiro de 2008 20:30