[Access/Excel] Macro runnen in andere applicatie

Pagina: 1
Acties:

  • storeman
  • Registratie: April 2004
  • Laatst online: 22:29
Ik ben bezig een systeempje te maken op data op verschillende manieren in verschillende programma's te krijgen. Zie het als volgt:

code:
1
PLC <------------------> Excel <---------------- Access


Tussen de PLC (programmable logic controller, wat overigens niet belangrijk is voor deze casus) en Excel werkt alles. Door middel van macro's in excel kan ik data naar de PLC schrijven en eruit lezen.

Via de macro's krijgt de data een mooie, leesbare structuur.

Deze macro's wil ik eigenlijk ook gebruiken voor Access, ik heb ze redelijk universeel geprogrammeerd, zodat ik met een paar array's alles naar sheets kan schrijven.

Kan ik dan vanuit Access een macro aanroepen in Excel??

ik heb geprobeerd:
code:
1
2
3
4
5
Public Sub TestExternMacro()
    Call m_wbTemplate.Test
    DoCmd.runmacro m_wbTemplate.Test
    DoCmd.m_wbTemplate.Test
end sub


Waarmee m_wbTemplate een private variable is, welke staat voor het werkboek, 'template', dat geopend wordt in excel. Deze bevat dus alle nodige macro's al.

Zoeken op GoT levert geen relevante resultaten op.

"Chaos kan niet uit de hand lopen"


Verwijderd

de scope van het interne docmd.runmacro statement is uiteraard beperkt tot access zelf, het heeft geen toegang tot macro's van andere toepassingen. je moet een verwijzing naar excel maken, en dan heb je toegang tot de run opdracht ervan die toelaat code in een werkmap uit te voeren. onderstaand voorbeeld voert de sub "test" uit die zich bevindt in een werkmap genaamd "test"
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
Public Sub TestExternMacro()
  Dim ExcelApp  As Object
  Dim ExcelBook As Object
  
  Set ExcelApp = CreateObject("Excel.Application")
  ExcelApp.Visible = True
  Set ExcelBook = ExcelApp.Workbooks.Open("c:\temp\test.xls")
  ExcelApp.Run "test"
  ExcelBook.Close False
  Set ExcelBook = Nothing
  ExcelApp.Quit
  Set ExcelApp = Nothing
End Sub

  • storeman
  • Registratie: April 2004
  • Laatst online: 22:29
Whoei!!! :), dat werkt leuk inderdaad, ben er ook achter dat je argumenten als volgt meegeeft:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
Public Sub TestExternMacro() 
  Dim ExcelApp  As Object 
  Dim ExcelBook As Object 
   
  Set ExcelApp = CreateObject("Excel.Application") 
  ExcelApp.Visible = True 
  Set ExcelBook = ExcelApp.Workbooks.Open("c:\temp\test.xls") 
  ExcelApp.Run "test",myArg1,myArg2
  ExcelBook.Close False 
  Set ExcelBook = Nothing 
  ExcelApp.Quit 
  Set ExcelApp = Nothing 
End Sub


Gaat helemaal goed komen, thnx!

"Chaos kan niet uit de hand lopen"