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

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top