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

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

新規登録して質問してみよう
ただいま回答率
85.50%

Q&A

解決済

3回答

4676閲覧

VC++/CLIで定型ファイル(Excel)の連結セルへのデータ書込みについて

kakine

総合スコア20

0グッド

1クリップ

投稿2016/01/14 15:41

編集2016/01/15 04:26

初めて投稿させて頂きます。

以下について知識がない為、
何卒ご教授頂けないでしょうか。

【環境】
・Win7Pro(SP1)
・VS2013(VC++/CLI(Interop利用))
・Office2016(EXCEL)

【やりたいこと】
VC++/CLI(Interop利用)で定型ファイル(Excel2016)の
日本語が関連付けされた連結セルへ
データ書込みを行いたい。

その際、VC++/CLI(Interop利用)では
row/column値は意識しない作りとしたい。

【困っていること】
上記の実現方法がわかりません。
VC++/CLIで実現可能でしょうか?

【凡例】
条件1・Excelファイルの連結セル範囲(A1~A3)
条件2・連結セル名("西暦")…和名割付したセル
以下はVBAでの凡例ですが
VC++/CLI(Interop利用)で実現可能でしょうか?

Range("西暦").Select
ActiveCell.FormulaR1C1 = "2016"

以上、宜しくお願い致します。

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

こんばんは、マイクロソフトのサイトに以下の情報がありました。

VC++からEXCELを利用するには、以下の方法があるようです。
0. MFC にて、Microsoft Office タイプ ライブラリから "ラッパー クラス" を生成して使う。
0. #import をつかう。Microsoftはお勧めしないとこのこと。
0. C/C++ オートメーションをつかう。(難易度高い)

詳細は、以下に記載がありました。
Visual C++ を使用した Office オートメーション

投稿2016/01/15 11:33

nobysanz

総合スコア42

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kakine

2016/01/16 03:01

ご回答有難うございます。 MFCを利用する場合の参考とさせて頂きます。
guest

0

ベストアンサー

Excell2016を持っていないので断言はできませんが、従来のExcelとそう変わらないはずなのでVC++/CLIでもExcelを操作することはできるはずです。

「C++/CLI Excel」で事例を検索すると結構な数がヒットします。今回使用される環境と比べると若干古い情報が多いですが、最新バージョンでは使えなくなっている、ということになると、かなり大きなニュースになっているはずですので、古い情報でも使えると思います(もちろん一部使えなくなった機能があったりすることはあり得ますが、連結セルへの書き込みであれば仕様は変わっていないと思います)。

VC++/CLIからExcelのアプリケーション起動ができるようになると、あとはVBAとほぼ同じ関数が使えます(言語が違うので記述方法やパラメータ指定が若干違います)ので、Excelで操作マクロを作って、それをVBAで確認しながらVC++/CLIに翻訳していく、という流れで目的の機能を実装できます。

投稿2016/01/15 00:38

編集2016/01/15 00:39
KoichiSugiyama

総合スコア3041

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kakine

2016/01/15 01:31

ご回答有難うございます。 アドバイス頂いた以下を確認してみます。 ・「C++/CLI Excel」で事例を確認 ・Excel操作マクロで確認 なおExcelアプリケーション起動は確認できました。 1.MS Object Libraryの参照追加 2.Excelアプリケーションのインスタンス生成 3.Excelのアプリケーション起動(OPEN)
kakine

2016/01/15 04:27

申し訳ございません。 Excel操作マクロで確認したことで重要な説明が不足していることに気がつきました。 質問内容を編集致しております。
KoichiSugiyama

2016/01/15 06:12

修正された質問を見ましたが、「日本語で"西暦"と範囲名指定したセルに値を書き込みたい、ただし、行/列を意識しないつくりにしたい」ということでよろしいでしょうか。だとすると、次のような手順になると思います。 1)workbookからNamesコレクションを取得 2)Namesコレクション内にある"西暦"のNameオブジェクトを取得 3)NameオブジェクトのRefersToを調べて参照しているセル番地を取得 4)Rangeオブジェクトにその番地を指定してデータを書き出す Rangeに名前を指定して参照しているセルの値を取得したり、値を書き込んだりするのはVBAではできるのですが、インターフェース経由では直接できません。 上記のようにVABを参考にしながらも多少まわりくどい方法で実現するしかない場合もあります。
kakine

2016/01/15 13:01

再度のご回答、誠に有難うございます。 頂いたアドバイスを確認したいと思います。
kakine

2016/01/18 11:27

頂いたアドバイスを参考にして動作確認ができました。 有難うございます。 4に関しては、RANGEオブジェクトでは値設定ができませんでしたが、 RANGEオブジェクトより取得したRow/Column値から worksheet->CELLS設定で実現ができました。 情報のご提供有難うございました。
guest

0

こんにちは。

WindowsのCOMを使えばできる筈です。
古いですが、C#やVBの例がここに記載されてました。
VC++/CLIは.NETなので同様の操作で可能な筈です。C#の例なら文法的にも近いので参考にしやすいと思います。

昔はもっと情報が豊富にあった気がするのですが、今、検索してもあまりでてきませんでした。
需要が意外に少ないのかも。

投稿2016/01/15 00:33

Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kakine

2016/01/15 01:13

ご回答有難うございます。 確認します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問