[英]Ruby - WIN32OLE function creation
我正在通過ruby進行一些單詞自動化,並且相對缺乏經驗。 我正在嘗試對我的代碼進行功能處理,並且遇到此錯誤
NameError: undefined local variable or method `doc' for main:Object
from (irb):148:in `create_table'
from (irb):152
from C:/Ruby192/bin/irb:12:in `<main>'
我從這個示例代碼中得到了什么
#Get the correct packages
require 'win32ole'
#setting up the Word
word = WIN32OLE.new('Word.Application')
#Shows the word Application
word.Visible = true
#Setting doc to the active document
doc = word.Documents.Add
doc = word.ActiveDocument
def create_table
doc.Tables.Add(word.Selection.Range, 4, 2) #Creates a table with 3 rows and 2 columns
doc.Tables(1).Borders.Enable = true
end
create_table
您的問題在於,在create_table
方法內部,您引用的是主作用域中的變量,但沒有傳遞給該方法。 這適用於您想要的:
require 'win32ole'
#setting up the Word
word = WIN32OLE.new('Word.Application')
#Shows the word Application
word.Visible = true
#Setting doc to the active document
doc = word.Documents.Add
doc = word.ActiveDocument
def create_table(d, w)
d.Tables.Add(w.Selection.Range, 4, 2)
d.Tables(1).Borders.Enable = true
end
create_table(doc, word)
請注意,現在它會將doc
和word
的引用傳遞到函數中。 另外,順便說一句,您正在創建一個包含4行2列的表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.