MS Access 2003 - Planilha do Excel incorporada no formulário de acesso
-
23-09-2019 - |
Pergunta
Digamos que eu tenha uma planilha do Excel incorporada em um formulário de acesso da Microsoft. Eu chamo o quadro do objeto
ExcelFrame
e eu adiciono uma caixa de texto no formulário chamado
txtA1
e eu adiciono um botão no formulário chamado
cmdInsert
Quero digitar "Hello World" na caixa de texto, clique no botão e apareça na célula A1 nessa planilha. Que VBA eu uso para conseguir isso?
Obrigado
Solução
Você pode automatizar o Excel, escrever seu valor na planilha e atualizar o quadro do objeto.
Private Sub cmdInsert_Click()
Dim strPath As String
Dim oExcel As Object
Dim oSheet As Object
Set oExcel = CreateObject("Excel.Application")
oExcel.Visible = True
strPath = Me.ExcelFrame.SourceDoc
'Debug.Print strPath '
oExcel.Workbooks.Open strPath
Set oSheet = oExcel.ActiveSheet
'Debug.Print oSheet.Name '
oSheet.Range("A1").Value = Me.txtA1
oExcel.ActiveWorkbook.Save
oExcel.Quit
Set oSheet = Nothing
Set oExcel = Nothing
'acOLEUpdate action requires Enabled = True '
'and Locked = False '
Me.ExcelFrame.Enabled = True
Me.ExcelFrame.Locked = False
Me.ExcelFrame.Action = acOLEUpdate
Me.txtA1.SetFocus
Me.ExcelFrame.Enabled = False
Me.ExcelFrame.Locked = True
End Sub
Editar: O exemplo foi baseado em um arquivo de pasta de trabalho externo que é ligado como fonte para o quadro do objeto do formulário.
Para vincular uma planilha, escolha o "Criar a partir do arquivo"Botão de rádio, verifique o"Link"Caixa de seleção e navegue para selecionar a pasta de trabalho. Foi assim que fiz com o Access 2007. Pelo que me lembro, foi semelhante ao Access 2003.
Outras dicas
Nunca é tarde demais, certo?
Desde que você já tenha criado o objeto Excel (como no OP):
Dim wb As Excel.Workbook, ws As Excel.Worksheet
Set wb = Me.ExcelFrame.Object
Set ws = wb.Worksheets(1)
ws.range("a1")= "Hello world"
Observe que este código requer uma referência ao MS Excel no VBA.