2010-07-07 6 views
1

J'ai besoin d'aide sur la façon d'inclure une case à cocher dans Excel et de faire apparaître une Msgbox disant "Bonjour" quand il est coché. Ce n'est pas vraiment ce que je dois faire, mais je peux trouver ma propre voie à partir de là.Insérer la case à cocher et le code VBA dans Excel en utilisant Powershell

Cela doit être fait en utilisant Powershell. Juste pour commencer.

$missing = [System.Type]::missing 
$excel = New-Object -Com Excel.Application 

$wb = $excel.Workbooks.Add($missing) 
$ws = $wb.Worksheets.Item(1) 

######################################## 
# INSERT CHECKBOX HERE 
# INSERT VBA CODE HERE 
######################################## 

Merci.

Répondre

0

Ajout de la case à cocher est assez simple:

$oleObjects = $ws.OLEObjects($missing) 
$checkbox = $oleObjects.Add("Forms.CheckBox.1",$missing,0,0,$missing,$missing,$missing,22.5,21,122.25,18.75) 

Ajout du code VBA à la volée, mais, me rend fou. En C# Interop ce serait quelque chose comme ceci:

Microsoft.Vbe.Interop.VBProject Project = Workbook.VBProject; 
Microsoft.Vbe.Interop.VBComponent Module = Project.VBComponents.Add(Microsoft.Vbe.Interop.vbext_ComponentType.vbext_ct_StdModule); 
Microsoft.Vbe.Interop.CodeModule Code = Module.CodeModule; 
Module.Name = Name; 
Code.AddFromString(VBACode); 

Dans PowerShell le VBProject.VBComponets retourne null. Ma connaissance de PowerShell est assez limitée. Je me demande si cela pourrait être un problème de sécurité. Les versions récentes d'Excel sont très strictes quant à l'ajout de code VBA par programmation.

Questions connexes