# Ruby win32ole properties

**URL:** <https://www.ruby-forum.com/t/ruby-win32ole-properties/141490>\
**Category:** Ruby\
**Created:** [June 26, 2008, 11:14am UTC](https://www.ruby-forum.com/t/ruby-win32ole-properties/141490 "2008-06-26T11:14:14Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![awarberg](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/b5ac83/32.png) [@awarberg](https://www.ruby-forum.com/u/awarberg)\
**Post date:** [June 26, 2008, 11:14am UTC](https://www.ruby-forum.com/t/ruby-win32ole-properties/141490/1 "2008-06-26T11:14:14Z")

</div>

Hi

I’m running simulations in Vissim using ruby and win32ole to connect to  
a COM server.

I wish to set a parameter in the COM server using the following  
description from the manual:

AttValue ([in] BSTR Attribute, [in] VARIANT Value)  
Sets an evaluation attribute. Please get the language independent  
attribute  
tag from the table at the end of this section.  
Parameters  
[in] BSTR Attribute : Attribute name (see below)  
[in] VARIANT Value : Attribute value. (type according to attribute)  
Example  
eval.AttValue(â€žVEHICLERECORDâ€œ) = True

In Excel I have created the following sub to perform the task:

Sub test()  
Dim vissim  
Set vissim = CreateObject(“VISSIM.Vissim”)

```
vissim.LoadNet "mynet.inp"

Dim eval
Set eval = vissim.Evaluation
MsgBox "Before: " & eval.AttValue("NODE")
eval.AttValue("NODE") = 1
MsgBox "After: " & eval.AttValue("NODE")

vissim.Exit

```

End Sub

Which works fine.

In Ruby I am out of luck, however:

def test  
vissim = WIN32OLE.new(‘VISSIM.Vissim’)

vissim.LoadNet ‘mynet.inp’

eval = vissim.Evaluation  
puts “Before: #{eval.AttValue(‘NODE’)}”  
#eval.AttValue(“NODE”) = 1 # this doesn’t work, obviously

eval.AttValue[“NODE”] = 1 # error here number of parameters

puts “After: #{eval.AttValue(‘NODE’)}”  
end

Running test I get:

C:/greenwaves/code/test.rb:33:in `method\_missing’: AttValue  
(WIN32OLERuntimeError)  
OLE error code:0 in   
  
HRESULT error code:0x8002000e  
Invalid number of parameters.

I tried exchanging ‘eval.AttValue[“NODE”] = 1’ with  
eval.AttValue(“NODE”,1) which also complains about the number of  
parameters.

Apparently I can only access the getter-method. Is there something else  
I can try?

Kind regards  
Andreas

---

<div class="post-metadata">

**Author:** ![awarberg](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/b5ac83/32.png) [@awarberg](https://www.ruby-forum.com/u/awarberg)\
**Post date:** [June 26, 2008, 11:48am UTC](https://www.ruby-forum.com/t/ruby-win32ole-properties/141490/2 "2008-06-26T11:48:46Z")

</div>

Andreas W. wrote:

> eval = vissim.Evaluation  
> Can’t test your code, maybe the variable named ‘eval’ is confusing  
> things.

Regards,

Siep

---

<div class="post-metadata">

**Author:** ![awarberg](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/b5ac83/32.png) [@awarberg](https://www.ruby-forum.com/u/awarberg)\
**Post date:** [June 26, 2008, 12:12pm UTC](https://www.ruby-forum.com/t/ruby-win32ole-properties/141490/3 "2008-06-26T12:12:31Z")

</div>

Siep K. wrote:

> Can’t test your code, maybe the variable named ‘eval’ is confusing  
> things.

Nah that isn’t it. I can’t set global vissim parameters either:

irb(main):009:0\> vissim = WIN32OLE.new(‘VISSIM.Vissim’)  
=\> #WIN32OLE:0x2c2a5cc  
irb(main):010:0\> vissim.LoadNet ‘mynet.inp’  
=\> nil  
irb(main):011:0\> vissim.AttValue(‘UNITDISTANCE1’)  
=\> 0  
irb(main):012:0\> vissim.AttValue[‘UNITDISTANCE1’] = 0  
WIN32OLERuntimeError: AttValue  
OLE error code:0 in   
  
HRESULT error code:0x8002000e  
Invalid number of parameters.  
from (irb):12:in `method_missing' from (irb):12 irb(main):013:0> vissim.AttValue('UNITDISTANCE1',0) WIN32OLERuntimeError: AttValue OLE error code:0 in <Unknown> <No Description> HRESULT error code:0x8002000e Invalid number of parameters. from (irb):13:in`method\_missing’  
from (irb):13  
irb(main):014:0\>

No ‘eval’ involved.
