アプリ版:「スタンプのみでお礼する」機能のリリースについて

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へデータ送信
ここでりんくしたい。

A 回答 (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へ")';
 :
    • good
    • 0
この回答へのお礼

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」の有る無しでは何が違うのでしょうか?ご教授ください。

お礼日時:2007/07/23 23:45

リンクというのは参照の事と解釈し、試行錯誤の結果、下記でできました。

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';
 :
    • good
    • 0
この回答へのお礼

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 さんのセル間リンクの参照も今後大変役立つ物と考え「私ライブラリ」に保存して大切にしたと思います。
ありがとうございました。

お礼日時:2007/07/23 11:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!