MS Access 2003 - Feuille de calcul Excel intégrée sur le formulaire Access
-
23-09-2019 - |
Question
Disons que j'ai une feuille de calcul Excel intégrée dans un formulaire Microsoft Access.J'appelle le cadre objet
ExcelFrame
et j'ajoute une zone de texte sur le formulaire appelé
txtA1
et j'ajoute un bouton sur le formulaire appelé
cmdInsert
Je veux taper "Hello World" dans la zone de texte, cliquer sur le bouton et le faire apparaître dans la cellule A1 de cette feuille de calcul.Quel VBA dois-je utiliser pour réaliser cela ?
Merci
La solution
Vous pouvez automatiser Excel, écrire votre valeur dans la feuille de calcul, puis mettre à jour le cadre d'objet.
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
Modifier:L'exemple était basé sur un fichier de classeur externe qui est lié comme source du cadre objet du formulaire.
Pour lier une feuille de calcul, choisissez le "Créer à partir d'un fichier" bouton radio, cochez la case "Lien", puis parcourez la case pour sélectionner le classeur.C'est comme ça que je l'ai fait avec Access 2007.Si je me souviens bien, c'était similaire avec Access 2003.
Autres conseils
Il est jamais trop tard, non?
prévoir que vous avez déjà créé l'objet Excel (comme dans 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"
Notez que ce code requiert une référence à MS Excel en VBA.