Abrir arquivo Excel pelo VBA do Word.
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.
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
Curtidas 0
Respostas

Emerson Nascimento
11/12/2020
você precisa instanciar o Excel antes de usar seus objetos.
veja se o trecho abaixo funciona:
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
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"
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
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
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.
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
11/12/2020
Muito Obrigado!!! Funcionou agora
GOSTEI 0

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
11/12/2020
Tente
oExcelApp.WindowState = xlMaximized
oExcelApp.WindowState = xlMaximized
GOSTEI 0

Vinícius
11/12/2020
Obrigado!!!
Adaptei aqui e deu certo. Ficou assim
oExcel.WindowState = xlMaximized
Adaptei aqui e deu certo. Ficou assim
oExcel.WindowState = xlMaximized
GOSTEI 0