locked
SharePointリストの列を、EXCELのセル(リスト)に取得したい。 RRS feed

  • 質問

  • お世話になります。SharePoint2007を使用しております。クライアントはXP(SP2)でOFFICE2007を使用しているのですが、

    本環境でEXCELを使用して申請書等を作成したいと思います。

    SharePointのリストをマスタとして利用し、マスタに登録された列の一部を条件指定して値を取得し、

    EXCELのセルのリスト設定を行いたいと思います。

    このようなことが可能でしょうか?

    可能であれば、技術的な参考サイト等をお教えください。

    2011年7月4日 3:38

回答

  • こんにちわ

    私の方がVBAをあまりよくわかっていないのでC#でのサンプルにさせて頂いたのですが、

    REST自体は、VBAからでもできると思います。

    yahooの知恵袋ですが、少しVBAでのRESTのサンプルが乗っていました

    http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1436703909

     

    もう1つ手としては、Webクエリを利用することもできるかもしれないです。

    こちらは前提があるので、少し面倒ですが、SharePoint上にテーブルタグで必要なマスタを

    表示するHTMLページをまず作っておく必要があります。

    それから、Excel2010のメニューから、データ>外部データの取り込み>Webクエリ と辿って、

    取得したいSharePointのサイトを指定してみてください。

    そうすると範囲を選択するように指示があるので、前提で作ったテーブルを指定するとEXCELに

    そのテーブルを取り込むことができます。

    取り込む処理はこのあたりが参考になりそうです

    http://www.d3.dion.ne.jp/~jkondou/excelvba/T2.htm

    • 回答としてマーク MOSS_User 2011年7月10日 12:07
    2011年7月6日 1:04

すべての返信

  • こんにちは

    最近、SharePointとC#始めたばかりなので、あまり参考にならないかもしれませんが・・・

    ご質問の内容からカスタムリストの値を取得できればいいのかなと勝手に推測してます。

    (実装しない方法をお聞きされているのでしたら、すいません。)

     

    SharePointのRESTでカスタムリストの内容を取得しているサンプルです

     

           string uri = "http://サイトへのパス/_vti_bin/listdata.svc/顧客情報";
                WebRequest req = WebRequest.Create(uri);

                req.Proxy = WebRequest.DefaultWebProxy;      //必要ならプロキシの認証情報を付与してください
                req.Credentials = new System.Net.NetworkCredential("アカウント", "パスワード", "パス");

                WebResponse res = req.GetResponse();
                XmlDocument doc = new XmlDocument();
                doc.Load(res.GetResponseStream());

                Hashtable list = new Hashtable();

                foreach (XmlNode node in doc.GetElementsByTagName("m:properties"))
                {
                    string no = "";
                    string username = "";
                    if (node.HasChildNodes == true)
                    {
                        for (int i = 0; i < node.ChildNodes.Count; i++)
                        {
                            XmlNode dataNode = node.ChildNodes[i];
                            if (dataNode.Name == "d:お客様番号")   //ほしい列名を指定してます
                            {
                                no = dataNode.InnerText;
                            }
                            if (dataNode.Name == "d:担当者")
                            {
                                username = dataNode.InnerText;
                            }
                        }
                    }
                    list.Add(no, username);
                }

    2011年7月5日 1:19
  • 丁寧なご回答、誠にありがとうございます。

    恐れ入りますが、本質問について環境説明がたりていませんでした。

    VisualStudio等の開発ツールはなく、EXCELだけを使用してたとえば申請書EXCELの起動時にカスタムリスト値をセル値(リスト)として設定したいのです。

    とするとVBAでのコーディングになると思いますので、その環境での参考情報等いただけたら助かります。

    情報が不足して申し訳ありませんでした。(丁寧なご回答ありがとうございます)

    2011年7月5日 23:24
  • こんにちわ

    私の方がVBAをあまりよくわかっていないのでC#でのサンプルにさせて頂いたのですが、

    REST自体は、VBAからでもできると思います。

    yahooの知恵袋ですが、少しVBAでのRESTのサンプルが乗っていました

    http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1436703909

     

    もう1つ手としては、Webクエリを利用することもできるかもしれないです。

    こちらは前提があるので、少し面倒ですが、SharePoint上にテーブルタグで必要なマスタを

    表示するHTMLページをまず作っておく必要があります。

    それから、Excel2010のメニューから、データ>外部データの取り込み>Webクエリ と辿って、

    取得したいSharePointのサイトを指定してみてください。

    そうすると範囲を選択するように指示があるので、前提で作ったテーブルを指定するとEXCELに

    そのテーブルを取り込むことができます。

    取り込む処理はこのあたりが参考になりそうです

    http://www.d3.dion.ne.jp/~jkondou/excelvba/T2.htm

    • 回答としてマーク MOSS_User 2011年7月10日 12:07
    2011年7月6日 1:04