
Delphiから ExcelのSheet1のCells[1,1]からSheet2のCells[1,1]、
Sheet1のCells[1,2]からSheet3のCells[1,1]へとSheet間にリンクを
はる方法を教えてください。
Excelは下記のように起動しております。
Excel := CreateOleObject('EXCEL.Application');
Excel.Visible := True;
Excel.Workbooks.Add;
Excel.WorkBooks[1].Sheets.Add;
Excel.WorkBooks[1].ActiveSheet.Name:='Sheet1';
//---Sheet1へデータ送信
Excel.WorkBooks[1].Sheets.Add;
Excel.WorkBooks[1].ActiveSheet.Name:='Sheet2';
//---Sheet2へデータ送信
Excel.WorkBooks[1].Sheets.Add;
Excel.WorkBooks[1].ActiveSheet.Name:='Sheet3';
//---Sheet3へデータ送信
ここでりんくしたい。
No.2ベストアンサー
- 回答日時:
ANo.1お礼への回答です。
HYPERLINKでしたら下記でいけそうです。Windows XP + Delphi2007で確認しています。
uses
:
ComObj
:
var
Excel: Variant;
Book : Variant;
Sheet1, Sheet2, Sheet3: Variant;
begin
Excel:=CreateOleObject('EXCEL.Application');
Excel.Visible:=True;
Book:=Excel.Workbooks.Add;
Sheet1:=Book.Sheets.Add;
Sheet1.Name:='NewSheet1';
//---Sheet1へデータ送信
Sheet2:=Book.Sheets.Add;
Sheet2.Name:='NewSheet2';
//---Sheet2へデータ送信
Sheet3:=Book.Sheets.Add;
Sheet3.Name:='NewSheet3';
//---Sheet3へデータ送信
// HYPERLINK
Sheet1.Cells[1,3].Formula:='=HYPERLINK("#NewSheet2!A1","Sheet2へ")';
:
SHIMAPEE さん有難う御座います。
>HYPERLINKでしたら下記でいけそうです
>Sheet1.Cells[1,3].Formula:='=HYPERLINK("#NewSheet2!A1","Sheet2へ")';
ばっちりです。解決いたしました。
ただ、「Formula」ですが、下記の1でも2でも結果は同じでした。
1 Sheet1.Cells[1,2]:='=HYPERLINK("#NewSheet2!A1","Sheet2へ")';
2 Sheet1.Cells[1,3].Formula:='=HYPERLINK("#NewSheet3!A1","Sheet3へ")';
「Formula」の有る無しでは何が違うのでしょうか?ご教授ください。
No.1
- 回答日時:
リンクというのは参照の事と解釈し、試行錯誤の結果、下記でできました。
Excelでマクロの記録をしながら操作し、VBAでどう展開されるか調べて転記しています。ベストな方法かどうかはわかりません。Windows XP + Delphi2007で確認しています。
uses
:
ComObj
:
var
Excel: Variant;
Book : Variant;
Sheet1, Sheet2, Sheet3: Variant;
begin
Excel:=CreateOleObject('EXCEL.Application');
Excel.Visible:=True;
Book:=Excel.Workbooks.Add;
Sheet1:=Book.Sheets.Add;
Sheet1.Name:='NewSheet1';
//---Sheet1へデータ送信
Sheet2:=Book.Sheets.Add;
Sheet2.Name:='NewSheet2';
//---Sheet2へデータ送信
Sheet3:=Book.Sheets.Add;
Sheet3.Name:='NewSheet3';
//---Sheet3へデータ送信
Sheet1.Cells[1,1].FormulaR1C1:='=NewSheet2!R1C1';
Sheet1.Cells[1,2].FormulaR1C1:='=NewSheet3!R1C1';
Sheet2.Cells[1,1].Value:='123';
Sheet3.Cells[1,1].Value:='456';
:
SHIMAPEE さん有難う御座います
>リンクというのは参照の事と解釈し・・・
質問の仕方が適切ではなかったようですみません。
「Sheet間にリンク」はSheet1のCells[1,1]をクリックするとSheet2が表示されて参照できると言う意味でした。
その後やっと
Excelのマクロを参考に試行錯誤しながら下記のようにすることで実現出来ましたが、
Excel.WorkBooks[1].Sheets['Sheet1'].Hyperlinks.Add(Excel.WorkBooks[1].Sheets['Sheet1'].Cells[1,1],'');
Excel.WorkBooks[1].Sheets['Sheet1'].Hyperlinks[1].Address := '';
Excel.WorkBooks[1].Sheets['Sheet1'].Hyperlinks[1].SubAddress := 'Sheet2!A1';
これを一行で済ませる方法を模索中です。
今回のSHIMAPEE さんのセル間リンクの参照も今後大変役立つ物と考え「私ライブラリ」に保存して大切にしたと思います。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
教えて下さい
-
メモ帳(テキストデータ)をExc...
-
配列でデータが入っている要素...
-
【エクセル】測定時間がバラバ...
-
多量のSUMIF式を軽くしたい
-
javaでDBからデータを取ってき...
-
<VB>String→Object
-
ページ数を求めたい
-
ウィンドウ枠の固定を行の2箇所...
-
EXCEL VBA FREQUENCY関数での...
-
Excelのマクロでワードのテキス...
-
S9タイプからXタイプにデータ...
-
VBAでのリストビューにおけるド...
-
ユーザーフォームのテキストボ...
-
VB6でCSVの取込をする
-
ACCESS VBA インデックスが有効...
-
C# ソケット通信でデータ受信時...
-
あんまり考えたくないけど
-
シリアル通信におけるバイトデ...
-
C言語を用いて、GNUPLOTでリア...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
教えて下さい
-
【エクセル】測定時間がバラバ...
-
メモ帳(テキストデータ)をExc...
-
配列でデータが入っている要素...
-
<VB>String→Object
-
二分探索の平均探索回数
-
多量のSUMIF式を軽くしたい
-
EXCELVBAでSQLserverからデータ...
-
この行は既に別のテーブルに属...
-
ユーザーフォームのテキストボ...
-
VBA 空白セルを削除ではない方...
-
特定のデータの抽出方法を教え...
-
パースとはなんですか?
-
C# ソケット通信でデータ受信時...
-
エクセルで2つの時系列のデー...
-
[C言語] コメント文字列を無視...
-
Accessで該当データにフラグを...
-
カンマからスラッシュに
-
C# でDataTableの更新を高速化...
-
アクセス2000で画像データ...
おすすめ情報