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
この記事へのコメントはありません。