Abrir arquivo Excel pelo VBA do Word.

Microsoft Excel

11/12/2020

Estou tentando abrir um arquivo excel pelo VBA do Word, mas está dando "Erro De Compilação", O tipo definido pelo usuário não foi definido.



Código utilizado:

_________________________________________________________

Sub Abrir_Exel_ou_Não()

Dim RESPOSTA As Integer
Dim ANS As Integer
RESPOSTA = vbYesNo + vbQuestion + vbDefaultButton2
ANS = MsgBox("Deseja Acesso os Dados?", RESPOSTA, "Prosseguir")
If ANS = vbYes Then
Dim excel As Workbook.Activate
Set excel = Workbooks.Open("C:\Sistema_Certificados_Venda\Dados.xlsm")

End With
Else


End If

ActiveDocument.Save
Application.Quit



End Sub

_________________________________________________________



O código acima projeta uma caixa de diálogo com duas alternativas: Caso a resposta seja sim, deveria abrir o arquivo Excel mencionado "Dados.xlsm", salvar o documento word que está aberto e fechá-lo. E caso a resposta seja não, apenas salvará e fechará o Word que aberto.



OBS: esse código funciona sem a parte de abrir o arquivo, ou seja, ele salva e fechar o word que está aberto, porém, preciso de ter a opção de abrir o arquivo Excel também.
Vinícius

Vinícius

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

11/12/2020

você precisa instanciar o Excel antes de usar seus objetos.
veja se o trecho abaixo funciona:
Dim RESPOSTA As Integer
Dim ANS As Integer
Dim oExcelApp As Excel.Application
Dim oExcelWB As Excel.Workbook

RESPOSTA = vbYesNo + vbQuestion + vbDefaultButton2
ANS = MsgBox("Deseja Acesso os Dados?", RESPOSTA, "Prosseguir")

If ANS = vbYes Then
  Set oExcelApp = New Excel.Application ' cria uma instância do Excel
  If oExcelApp Is Nothing Then ' não foi possível instanciar o Excel
      MsgBox "Excel não está disponível!", vbExclamation
  Else
    oExcelApp.Visible = True ' deixa o Excel visível
    Set oExcelWB = oExcelApp.Workbooks.Open("C:\\Sistema_Certificados_Venda\\Dados.xlsm")
  End If
End With
Else


End If

ActiveDocument.Save
Application.Quit
GOSTEI 0
Vinícius

Vinícius

11/12/2020

você precisa instanciar o Excel antes de usar seus objetos.
veja se o trecho abaixo funciona:
[code=vb]Dim RESPOSTA As Integer
Dim ANS As Integer
Dim oExcelApp As Excel.Application
Dim oExcelWB As Excel.Workbook

Mas o código não funcionou. Apresentou o mesmo erro na linha "Dim oExcelApp As excel.Application"
GOSTEI 0
Vinícius

Vinícius

11/12/2020

Mas o código não funcionou. Apresentou o mesmo erro na linha "Dim oExcelApp As excel.Application"
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

11/12/2020

Antes de mais nada, a partir do menu do Editor VBA você precisa entrar no menu Ferramentas > Referências... (Tools>References) e selecionar biblioteca do Excel . No meu caso, a opção era "Microsoft Excel 16.0 Library".
Depois de marcar a opção e confirmar a tela, as classes, métodos e propriedades do Excel estarão disponíveis do editor de código.

Daí você pode codificar usando o Excel.

Após configurar a biblioteca, testei esse código e funcionou.
Sub Abrir_Exel_ou_Não()

Dim RESPOSTA As Integer
Dim ANS As Integer
Dim oExcelApp As Excel.Application
Dim oExcelWB As Excel.Workbook

    RESPOSTA = vbYesNo + vbQuestion + vbDefaultButton2
    ANS = MsgBox("Deseja Acesso os Dados?", RESPOSTA, "Prosseguir")
 
    If ANS = vbYes Then
      Set oExcelApp = New Excel.Application ' cria uma instância do Excel
      If oExcelApp Is Nothing Then ' não foi possível instanciar o Excel
        MsgBox "Excel não está disponível!", vbExclamation
      Else
        oExcelApp.Visible = True ' deixa o Excel visível
        Set oExcelWB = oExcelApp.Workbooks.Open("C:\\\\Sistema_Certificados_Venda\\\\Dados.xlsm") ' abre a planilha
      End If
    Else
 
    End If
 
    ActiveDocument.Save
    Application.Quit

End Sub


GOSTEI 0
Vinícius

Vinícius

11/12/2020

Muito Obrigado!!! Funcionou agora
GOSTEI 0
Vinícius

Vinícius

11/12/2020

Sempre que abro aparece em tela minimizada. Teria uma forma de aparecer com a tela normal?
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

11/12/2020

Tente

oExcelApp.WindowState = xlMaximized
GOSTEI 0
Vinícius

Vinícius

11/12/2020

Obrigado!!!
Adaptei aqui e deu certo. Ficou assim
oExcel.WindowState = xlMaximized
GOSTEI 0
POSTAR