1

いくつかのデータを生成し、ある種のフロントエンドに送信する C# フィーダーがあります。Excel microsoft office を使用してこれらのデータを直接受け取る方法はありますか? PSデータを受信して​​Excelシートに書き込むコードを書きたくありません。C# バックエンドのフロントエンドとして、Excel 自体からデータを直接取得できるようにしたいと考えています。それは可能ですか?

4

1 に答える 1

1

私は簡単な博士をしました。Googleで Excel からの WebService 呼び出しを検索したところ、次の記事が見つかりました。

Option Explicit
' Excel VBA Function wrapper to call currency conversion Web Service on the web!
Public Function ccyConvert(rsCurrIn As String, rsCurrOut As String, 
                           ByVal vfAmtIn As Single) As Single
    Dim objSClient As MSSOAPLib30.SoapClient30      
   ' Remove the 30 if using an earlier version of SOAP
    Dim fResult As Single

    ' Point the SOAP API to the web service that we want to call...
    Set objSClient = New SoapClient30
    Call objSClient.mssoapinit(
              par_WSDLFile:="http://webcontinuum.net/webservices/ccydemo.wsdl") 

    ' Call the web service 
    fResult = objSClient.calcExcRate(rsCurrIn, rsCurrOut, vfAmtIn)
    Set objSClient = Nothing

    ccyConvert = fResult 
End Function

Excelは(異なる dataSources から) データにアクセスする可能性があるため、要求されたデータ配信する ac# WebService を作成することが適切なソリューションである可能性があります。

これは私のコードではないことに注意してください - これは言及された記事からの単なるコピーです - したがって、著者にクレジットが与えられます!

別の解決策を考えただけです。独自のC# com コンポーネントを作成することを検討してください。任意のExcel VBA コード内で、アセンブリ内の任意のメソッドを呼び出すことができるようになりました。もう一度氏。グーグルは、これを達成する方法を説明する記事を見つけました!

独自の com コンポーネントのc# コード

using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;

namespace DotNetLibrary
{
  [ClassInterface(ClassInterfaceType.AutoDual)]
  public class DotNetClass
  {
    public DotNetClass()
    {
    }
    public string DotNetMethod(string input)
    {
        return "Hello " + input;
    }
  }
}

Excel マクロ内のVBA コード

Private Sub TestDotNetCall()
    Dim testClass As New DotNetClass
    ' or do whatever you want with return value
    MsgBox testClass.DotNetMethod(“World”)
End Sub
于 2012-06-21T07:42:24.387 に答える