# Win32ole excel excelconst disable macros

**URL:** <https://www.ruby-forum.com/t/win32ole-excel-excelconst-disable-macros/189966>\
**Category:** Ruby\
**Created:** [June 10, 2010, 5:45pm UTC](https://www.ruby-forum.com/t/win32ole-excel-excelconst-disable-macros/189966 "2010-06-10T17:45:44Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![zak](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/z/8e7dd6/32.png) [@zak](https://www.ruby-forum.com/u/zak)\
**Post date:** [June 10, 2010, 5:45pm UTC](https://www.ruby-forum.com/t/win32ole-excel-excelconst-disable-macros/189966/1 "2010-06-10T17:45:44Z")

</div>

Hi!

I use

book = self.excel.Workbooks.Open(file,ExcelConst::XlUpdateLinksNever)

to never update links in excel files when opend with ruby.

is there an excelconst to disable macros?  
i can’t find anything.

Thanks,  
uwe

---

<div class="post-metadata">

**Author:** ![zak](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/z/8e7dd6/32.png) [@zak](https://www.ruby-forum.com/u/zak)\
**Post date:** [June 11, 2010, 2:50pm UTC](https://www.ruby-forum.com/t/win32ole-excel-excelconst-disable-macros/189966/2 "2010-06-11T14:50:34Z")

</div>

On 10 Juni, 17:44, zak [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Thanks,  
> uwe

Provided that self.excel represents the Excel.Application object, you  
can use the following code to prevent macros from running  
automatically:

self.excel.EnableEvents = false  
book = self.excel.Workbooks.Open(file,ExcelConst::XlUpdateLinksNever)  
self.excel.EnableEvents = true

/lasso

---

<div class="post-metadata">

**Author:** ![zak](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/z/8e7dd6/32.png) [@zak](https://www.ruby-forum.com/u/zak)\
**Post date:** [June 11, 2010, 4:12pm UTC](https://www.ruby-forum.com/t/win32ole-excel-excelconst-disable-macros/189966/3 "2010-06-11T16:12:37Z")

</div>

On 11 Jun., 14:45, Lars O. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> > is there an excelconst to disable macros?  
> > book = self.excel.Workbooks.Open(file,ExcelConst::XlUpdateLinksNever)  
> > self.excel.EnableEvents = true
> 
> /lasso

Thanks Lasso,

yes, self.excel represents the Excel.Application object:

class ExcelConst  
# to be filled with all Excelconstants  
# once excel is running  
end

#---------------------------------------------------------------

# make an Excel class to simplify opening & closing of classes

# place this in a separate file, and just require it

#---------------------------------------------------------------  
class Excel  
attr\_accessor :excel  
def initialize  
require ‘win32ole’  
@excel = WIN32OLE::new(‘Excel.Application’)  
if !(defined? ExcelConst::XlYes)  
WIN32OLE.const\_load(@excel, ExcelConst)  
end  
@excel.DisplayAlerts = false  
@excel.Visible = false  
yield self  
@excel.Quit  
end

```
def open_book file

```

self.excel.EnableEvents = false  
book =  
self.excel.Workbooks.Open(file,ExcelConst::XlUpdateLinksNever)  
#self.excel.EnableEvents = true  
yield book  
self.excel.ActiveWorkbook.Close(0)  
end  
end

The reason why I posted the original message was, that excel opend  
visible during runtime although I set  
@excel.Visible = false  
I thought the reason for that behavior could be conncted to macros.  
But it wasn’t. I inserted your code and still excel opens the workbook  
during:

Excel.new do |xl| # instanciate excel

```
filesL.each_with_index do |file,i| # let's loop on each file

```

i=3-i # array index starts at 0

xl.open\_book(file) do |workbook|  
sheets = workbook.Worksheets(“Statistik”)  
rows = sheets.UsedRange.Rows.Count  
cells = sheets.Range(“C1:E#{rows}”)  
cells.each do |cell| …

Any ideas?  
Have a nice weekend,

uwe

---

<div class="post-metadata">

**Author:** ![zak](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/z/8e7dd6/32.png) [@zak](https://www.ruby-forum.com/u/zak)\
**Post date:** [June 17, 2010, 4:22pm UTC](https://www.ruby-forum.com/t/win32ole-excel-excelconst-disable-macros/189966/4 "2010-06-17T16:22:31Z")

</div>

On 11 Juni, 16:06, zak [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> > > I use
> 
> Thanks Lasso,
> 
> # place this in a separate file, and just require it
> 
> ```
> @excel.Visible = false
> self.excel.ActiveWorkbook.Close(0)
> 
> ```
> 
> Excel.new do |xl| # instanciateexcel  
> Any ideas?  
> Have a nice weekend,
> 
> uwe- Dölj citerad text -
> 
> - Visa citerad text -

I’m afraid I cannot reproduce the problem (using ruby 1.9.1p378  
(2010-01-10 revision 26273) [i386-mswin32] and Excel XP SP3). Using  
your code, I can read and write to workbooks without ever seeing the  
Excel window. It does not matter if the workbooks contains macros or  
not or if Excel is already opened. Your code works perfectly here…

/lasso
