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関連

    指定したフォルダ内の画像ファイルを一括挿入するPowerPointマクロ

    大量の画像ファイルを1枚/1スライドで挿入する必要があり、…

  2. Office関連

    RESAS-APIをVBAから呼び出す方法

    下記記事の通り「地域経済分析システム RESAS」のAPIが公開された…

  3. Office関連

    Office 2013 Consumer Preview(カスタマー プレビュー)をインストールして…

    2012/10/26 追記:RTM版公開に伴い記事を追加しました。…

  4. Office関連

    jQuery UIのDatepickerをVBAから使用するサンプル

    2014/1/31 追記:Internet Explorerのオー…

  5. アイコン一覧

    Office 2013 アイコン一覧(R)

    ・Office 2013 アイコン一覧 NUM…

  6. アイコン一覧

    Office 365アイコン(imageMso)一覧(C)

    Office 365のデスクトップ版Officeアプリケーション(Wo…

コメント

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

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

Time limit is exhausted. Please reload CAPTCHA.

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

Translate

最近の記事

アーカイブ

PAGE TOP