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
















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