質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.47%

  • C#

    7471questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • Excel

    1597questions

    Excelは、マイクロソフト社が開発しているデータ集計や分析を行う表計算ソフトの一つです。文書作成や表計算、資料作成などの多彩な機能を備えており、統合パッケージであるMicrosoft Officeに含まれています。

  • Visual Studio 2013

    309questions

    Microsoft Visual Studio 2013は、Microsoftによる統合開発環境(IDE)であり、多種多様なプログラミング言語に対応しています。 Visual Studio 2012の次のバージョンです

visualstudioでExcelAddInプロジェクトを作って、リボンを作成し、リボンにボタンを追加しただけなのにビルドがとおらなくて困っています。

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 1,359

tomi0416

score 42

イメージ説明イメージ説明
参考に作業したURLです。
リボン作成
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • Tak1wa

    2015/05/26 16:57

    ビルドに通らない時のエラーメッセージを教えてください。

    キャンセル

  • Tak1wa

    2015/05/26 16:59

    ああ、すみません。キャプチャにのってましたね。

    キャンセル

  • tomi0416

    2015/05/26 23:47

    いつもありがとうございます(❛ᴗ❛人)✧

    キャンセル

回答 2

checkベストアンサー

+2

えーと・・・
もう、エラーメッセージを見てそのまんま、GetRibbonの定義がないからですね。
それ以外の何物でもありません。

GetRibbonは自分で用意するのではなく、Frameworkから特定のクラスを継承して使うはずですよ?

お見受けしたところ、ThisRibbonCollectionクラスに対して基底クラスが定義されてませんね?
これでは、自分でGetRibbonメソッドを定義してないので、エラーになってしかるべきです。

参考URLのページの手順に従って作業すれば、問題ないはずですが
おそらく、何かのタイミングで、うっかり、
ThisRibbonCollectionクラスの基底クラスの記述を消してしまったのが原因と考えられます。

一度、プロジェクトを削除して、もう一度、落ち着いて参考URLの手順通りやってみてください。

参考までに、当方の環境で参考URLの手順で、ボタン追加まで行った時点での
ソース等のスクリーンショットを添付しておきます。
イメージ説明イメージ説明イメージ説明イメージ説明イメージ説明イメージ説明

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/05/26 19:46

    いま、ぱぱっと、MSDNをあさってみました。
    やはり、GetRibbonメソッドは、RibbonReadOnlyCollectionクラスのメソッドですね。

    これを継承することで、ThisRibbonCollectionクラスもGetRibbonメソッドを持つことになります。
    そして、
     return this.GetRibbon<Ribbon1>();
    この部分の、thisは、自分自身(のクラス)すなわちThisRibbonCollectionクラスを表し
    このクラスの中で定義されているGetRibbonメソッドを呼び出すのですが、
    ThisRibbonCollectionクラス自身には定義されていませんので、
    基底クラスに定義されているメソッドが呼び出されるわけで
    その基底クラスであるRibbonReadOnlyCollectionクラスにこそ、GetRibbonメソッドが
    定義されています。
    参考URL:RibbonReadOnlyCollection インターフェイス
     https://msdn.microsoft.com/ja-jp/library/microsoft.office.tools.ribbon.ribbonreadonlycollection.aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1

    キャンセル

  • 2015/05/26 20:31

    そもそも、Ribbon1.Designer.csはVisualStudioでデザイナを使って編集したり、プロパティを変更した結果が
    VisualStudioで自動的に記述されて行くもので、
    そもそも、Ribbon1.Designer.csが開いてある時点でおかしいです。
    よっぽど、特殊なことをやろうとしない限り、このファイルはいじる必要のないものですよ?

    キャンセル

  • 2015/05/26 23:53

    ありがとうございます!
    仰せの通り、Ribbon1.Designer.csは特に何も変更してなくて、自動で作成されています。にも関わらず、ピルドが通らなくて!社内で上司に聞きたかったのですが、不在で、上司は多忙で、ちょい先輩に聞いたのですが、解決しなくて、本サイトで質問した次第です。

    キャンセル

0

んーーと、
Ribbon1.Designer.csをいじった覚えはないのですか?
本当に?間違いなく?

そして、一度、今あるプロジェクトを完全に削除して新規にプロジェクトを作成して
参考URLの手順通りやってみて、それでも、
partial class ThisRibbonCollection : Microsoft.Office.Tools.Ribbon.RibbonReadOnlyCollection
この太字の部分の記述が自動で記述されないのですか?

であれば、ちょっとこわいですね・・・

えーと、考えられるのは

1.VisualStudioが壊れている。
VisualStudioが壊れているかもしれません・・・ 再インストールしたほうがいいかも・・・

2.VisualStudioのBugFixを怠っている
質問の記載のタグを拝見するに、VisualStudio2013をお使いなのですね?
比較的新しいVisualStudioなのでバグが潰されてないのかもしれません・・・
ちゃんと、VisualStudioのサービスパックの最新版を当てていますか?
サービスパックは発見されたいくつものバグの修正モジュールをまとめたものですが
最新のサービスパックがリリースされた後に、新たにバグが見つかっている場合もあるので
最新のサービスパックを当てた後、さらに、その後にリリースされている、サービスパックに
まだ、纏められていないバグ修正モジュールも忘れずに当ててくださいね?

3.利用している .Net Frameworkが壊れている
どのバージョンの .Net Frameworkをお使いでしょうか?それ、壊れていませんか?

4.利用している .Net FrameworkのBugFixを怠っている
.Net Framework自身にもバグありますよ?ちゃんと修正モジュール当ててますか?

5.そもそも、プロジェクトで利用すると宣言(指定している).Net Frameworkのバージョンがおかしい
プロジェクトで利用する .Net Frameworkのバージョンがおかしな事になってませんか?
ふるーいバージョンの .Net Frameworkを使うことになってませんか?

当方は、取引先の顧客が過去資産を利用する関係で、VisualStudio2008を使っています
添付したスクリーンショットでお気づきだとは思いますが・・・

そして、VisualStudio2008である以上、使える .Net Frameworkのバージョンは 3.5が限界の最新版です
RibbonReadOnlyCollectionは少なくとも、.Net Framework3.5ではサポートされているのを確認していますが
Excelのリボンインターフェースにかかわるものなので、比較的新しいバージョンであるわけで
当然、.Net Frameworkがあまりにも古いと、このクラスがサポートされていないはずですよ?

VisualStudioのバージョン情報にVisualStudioのバージョンと一緒にBugFixが行われていれば
どの時点のサービスパックが当たっているか確認できますし、.Net Frameworkのバージョンと当たっているサービスパックも把握できます。
イメージ説明
そのプロジェクトで利用することになっている .Net Frameworkのバージョンが ふるーーい物を指定していませんか?
イメージ説明イメージ説明確認してみてください。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/05/27 01:55

    尚、分っていらっしゃるだろうことを前提でRibbonReadOnlyCollectionをクラスと紹介していますが
    申し上げるまでもなく、これは厳密にはインターフェースです。
    そして、ThisRibbonCollectionはパーシャルクラスの定義です。
    これにインターフェースの定義を厳密には組み込んでいるのです。
    したがって、this.GetRibbon<Ribbon1>()で呼び出せるわけで、
    厳密には基底クラスから継承させて、基底クラスのメソッドを呼び出す場合は
    base.GetRibbon<Ribbon1>()が厳密には正しい書き方になります。
    VB.Netでいえば、MyBaseですね
    ただ、今回はインターフェースとして、そのものずばりの定義を継承ではなく、このレベルで取り込んでいるので、だから、thisなのです。一応、誤解なきように申し添えておきます。

    キャンセル

  • 2015/05/27 01:59

    私も質問者さんが参考にされたサイトに従ってVisualStudio2013 Pro Update4にて検証してみましたが、自動で定義されたThisRibonCollectionに継承の記載はありませんでした。(※Partialされた別ThisRibbonCollectionがGlobalだったかどこかにあり、そちらでは継承元の記載あり。なので正常)
    ですので指摘された箇所は問題ではないかもしれません。
    おそらく2008と2013でプロジェクトテンプレートが若干異なるのでしょう。

    ただ、私のほうではビルドエラーは発生しませんでした。
    どちらにせよnekoraさんが仰っているように、まずは一度プロジェクトを作成し直してみたほうが良いでしょう。

    VisualStudioが壊れている。またはテンプレートが不正な状態。というのはあり得なくは無い話だと思います。
    いま手元にIDEが無いので、何かわかれば明日にでも記載します。

    キャンセル

関連した質問

同じタグがついた質問を見る

  • C#

    7471questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • Excel

    1597questions

    Excelは、マイクロソフト社が開発しているデータ集計や分析を行う表計算ソフトの一つです。文書作成や表計算、資料作成などの多彩な機能を備えており、統合パッケージであるMicrosoft Officeに含まれています。

  • Visual Studio 2013

    309questions

    Microsoft Visual Studio 2013は、Microsoftによる統合開発環境(IDE)であり、多種多様なプログラミング言語に対応しています。 Visual Studio 2012の次のバージョンです

  • トップ
  • C#に関する質問
  • visualstudioでExcelAddInプロジェクトを作って、リボンを作成し、リボンにボタンを追加しただけなのにビルドがとおらなくて困っています。