- ベストアンサー
Delphiからエクセルへのリンク設定方法
- DelphiからExcelの特定のセル間にリンクを設定する方法を教えてください。
- DelphiでExcelを操作して、Sheet1のCells[1,1]からSheet2のCells[1,1]、Sheet1のCells[1,2]からSheet3のCells[1,1]へリンクを設定する方法を解説します。
- Delphiを使用してExcelのシート間にリンクを作成する方法について教えてください。具体的には、DelphiでExcelを操作し、Sheet1の特定のセルからSheet2やSheet3の特定のセルへリンクを設定する方法について知りたいです。
- みんなの回答 (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へ")'; :
その他の回答 (1)
- SHIMAPEE
- ベストアンサー率75% (154/203)
リンクというのは参照の事と解釈し、試行錯誤の結果、下記でできました。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 さんのセル間リンクの参照も今後大変役立つ物と考え「私ライブラリ」に保存して大切にしたと思います。 ありがとうございました。
お礼
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」の有る無しでは何が違うのでしょうか?ご教授ください。