2

Chr(charcode)win32oleを使用してRubyからVBScriptなどのVBScript関数を呼び出すことは実用的ですか?

背景: Excelワークシートに適切にフォーマットされたヘッダーを追加する方法を検討している間、私は標準の操作手順に従いました。Excelマクロを記録し、コードをコピーして貼り付けます。

VBScript:

ActiveWindow.View = xlPageLayoutView
With ActiveSheet.PageSetup
    ' Irrelevant options snipped
    .CenterHeader = "&F" & Chr(10) & "&A"
    ' More irrelevant options snipped
End With

次のRubyコード

# workbook is an existing workbook object
worksheet = workbook.Worksheets.Add
worksheet.PageSetup.CenterHeader = "&F \n &A"

動作しますが、Chr(charcode) ドキュメントを調べて、まったく同じものであることを確認する必要がありました。やってみた

worksheet.PageSetup.CenterHeader = "&F" + workbook.Chr(10) + "&A"

しかし得た

WIN32OLERuntimeError: unknown property or method: `Chr'
    HRESULT error code:0x80020006
      Unknown name.
        from (irb):6:in `method_missing'
        from (irb):6
        from c:/Ruby19/bin/irb:12:in `<main>'

後者のアプローチを行うための実用的な方法はありますか?

4

2 に答える 2

1

Ruby でより簡単に実行できる何かのために vbscript スクリプトを呼び出すことはありませんが、それは可能です。

リクエスト方法:

require 'win32ole'

sc = WIN32OLE.new("ScriptControl")
sc.language="VBScript"
center_header = sc.eval('"&F" & Chr(10) & "&A"') #"&F\n&A"

Ruby自体でそれを行う方法

"&F" + 10.chr + "&A" #"&F\n&A"

また

"&F\n&A" #"&F\n&A"

編集: そのままでは動作しない 64 ビット Windows の場合、https: //tablacus.github.io/scriptcontrol.html にある 64 ビット dll をインストールする必要があります(サイトは日本語なので、ブラウザでページを翻訳します)

于 2014-07-06T14:39:12.107 に答える
1

どうですか

worksheet.PageSetup.CenterHeader = "&F" + 10.chr + "&A"
于 2011-06-16T03:19:03.683 に答える