2009-05-08 7 views
1

Je peux trouver 10^1000 exemples de scripts Excel en utilisant Ruby, mais je ne peux pas pour la vie de moi comprendre comment avoir Ruby réagir aux événements dans Excel. J'essaie de récupérer le contenu d'une ligne dans une feuille de calcul quand elle est sélectionnée, mais une telle récupération basée sur les événements que je ne trouve pas de méthodes ou d'exemples pour.Comment réagir aux événements Excel dans Ruby?

Répondre

1

Utilisez la méthode WIN32OLE_EVENT.new pour créer une méthode objet événement OLE, puis appeler son on_event. Appelez la méthode WIN32OLE_EVENT.message_loop pour lancer la boucle de surveillance des événements.

Voici un exemple qui imprime la valeur de plage sélectionnée, puis arrête la surveillance des événements avant que le classeur est enregistré:

require 'win32ole' 

def exit_event_loop 
    $LOOP = false 
end 

xl = WIN32OLE.connect('Excel.Application') 
wb = xl.ActiveWorkbook 

ev = WIN32OLE_EVENT.new(wb, 'WorkbookEvents') 
ev.on_event('SheetSelectionChange') do 
    range = xl.Selection 
    puts(range.Value) 
    STDOUT.flush 
end 

ev.on_event('BeforeSave') do 
    exit_event_loop 
end 

$LOOP = true 
while $LOOP 
    WIN32OLE_EVENT.message_loop 
    sleep 0.1 
end 

espoir qui aide.

Questions connexes