Office関連

プログラムのソースコードを別の言語に変換するVBAマクロ

SharpDevelopが公開している、ソースコードを変換するAPI「SharpDevelop Code Converter API」を見つけたので、早速試してみました(Web上のコンバーターはコチラ)。

プロトコルがSOAPなのでSoapClient30オブジェクトを利用します。

※ 要SOAP Toolkit

・SOAP Toolkit 3.0
http://www.microsoft.com/en-us/download/details.aspx?id=13456

Option Explicit

Public Sub Sample()
  Dim TypeOfConversion As String
  Dim SourceCode As String
  Dim ConvertedCode As String
  Dim ErrorMessage As String
  
  'TypeOfConversion:変換元と変換先言語
  'C# to VB.NET:cs2vbnet
  'VB.NET to C#:vbnet2cs
  'C# to Boo:cs2boo
  'VB.NET to Boo:vbnet2boo
  TypeOfConversion = "cs2vbnet"
  
  '変換元コード(C#)
  SourceCode = "using System;" & vbCrLf
  SourceCode = SourceCode & "namespace HelloWorld" & vbCrLf
  SourceCode = SourceCode & "{" & vbCrLf
  SourceCode = SourceCode & "    class Hello" & vbCrLf
  SourceCode = SourceCode & "    {" & vbCrLf
  SourceCode = SourceCode & "        static void Main()" & vbCrLf
  SourceCode = SourceCode & "        {" & vbCrLf
  SourceCode = SourceCode & "            System.Console.WriteLine(""Hello World!"");" & vbCrLf
  SourceCode = SourceCode & "        }" & vbCrLf
  SourceCode = SourceCode & "    }" & vbCrLf
  SourceCode = SourceCode & "}"
  
  With CreateObject("MSSOAP.SoapClient30")
    .MSSoapInit2 "http://codeconverter.sharpdevelop.net/ConvertService.asmx?WSDL", _
                 "", _
                 "ConvertService", _
                 "ConvertServiceSoap", _
                 "http://developer.sharpdevelop.net/CodeConverter.NET/"
    If .PerformConversion(TypeOfConversion, SourceCode, ConvertedCode, ErrorMessage) Then
      .ConvertSnippet TypeOfConversion, SourceCode, ConvertedCode, ErrorMessage
      Debug.Print ConvertedCode
    End If
  End With
End Sub

上記コードではConvertSnippetオペレーションを呼び出してコードの変換を行っていて、元となるC#のコードが下記で、

using System;
namespace HelloWorld
{
    class Hello
    {
        static void Main()
        {
            System.Console.WriteLine("Hello World!");
        }
    }
}

出力されたVBのコードが下記になります。

Namespace HelloWorld
    Class Hello
        Private Shared Sub Main()
            System.Console.WriteLine("Hello World!")
        End Sub
    End Class
End Namespace

精度の検証まではしていませんが、簡単なコードだったらちゃんと変換してくれそうです。
このAPIをVBAから使う是非は兎も角として、中々面白いAPIですね!
実際に利用する際には、テキストボックスやテキストファイルに書かれたコードを変換する、という形にすれば使い勝手がよくなりそうです。

ちなみに、上記コードを書くにあたってサンプルや資料が少ないので若干苦労しました。
(“TypeOfConversion“に指定するコードの種類の書き方も最初は分からず…)
C#で書かれた下記サンプルプログラムのソースコードを見つけてようやく使い方が分かったのですが、もうちょっとサンプルコードを載せておいてほしかった!というのが正直な感想です。

・Windows Forms Web Service Client
http://codeconverter.sharpdevelop.net/DotNetClientApplication.aspx

GoogleとYahoo!で同時に翻訳するWordマクロ前のページ

Office XP Developer Toolsでリボン対応のCOMアドインを作成する。次のページ

関連記事

  1. アイコン一覧

    Office 2013 アイコン一覧(V)

    ・Office 2013 アイコン一覧 NUM…

  2. Excel

    Office クリップボードをマクロで操作する(UI Automation)

    以前MSAAを利用してOffice クリップボードを操作するマクロを書…

  3. Office関連

    Excel 2016でマップグラフを作成する。

    12月6日、Office Insider向けに、Office 2016…

  4. Office関連

    セル内の改行をカウントするExcelマクロ

    「Excel セルの内容 改行を数える VBA」といったキーワード検索…

  5. Office関連

    Office 2019 Commercial Preview版のインストール方法

    「Microsoft、「Office 2019 Commercial …

  6. Office関連

    Slackのカスタム絵文字を一括作成するVBAマクロ

    在宅勤務で使うビジネスチャットサービスとして注目されている「Slack…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP