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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA For Each 〜 複数条件について 3 2022/10/20 20:05
- その他(プログラミング・Web制作) python文字化けエラーが発生しているようです 3 2022/04/13 19:41
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- Excel(エクセル) excel macro を、personal.xlsb に作った。excel sheet 開くと、 2 2023/02/21 12:06
- Visual Basic(VBA) vbaのvlookup関数エラー原因を教えていただけないでしょうか。 3 2022/04/25 16:16
- Visual Basic(VBA) Excelのマクロ ブック間である範囲をコピー Workbooks(“a.xlsx“).Sheets 3 2022/05/12 17:02
- スーパー・コンビニ 「コンビニで エクセルをプリントアウト」することができますか? 8 2022/06/16 15:54
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
- 統計学 データ分析に関する問題です。 ある町である感染症の保菌者は0.5%である。保菌者を少なくとも1人含む 3 2022/07/28 19:56
- Visual Basic(VBA) worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応 3 2022/12/27 22:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
教えて下さい
-
VBA 空白セルを削除ではない方...
-
合計3TBのデータのハッシュ値を...
-
【エクセル】測定時間がバラバ...
-
多量のSUMIF式を軽くしたい
-
シーケンサにパソコンからアク...
-
メモ帳(テキストデータ)をExc...
-
VBAを使ってOutlookメール本文...
-
VBA & easycomm で長時間測定の...
-
エクセルで2つの時系列のデー...
-
Excelのマクロでワードのテキス...
-
<VB>String→Object
-
ユーザーフォームのテキストボ...
-
ACCESSからEXCELに出力する際、...
-
モーションキャプチャのプログ...
-
配列でデータが入っている要素...
-
パースとはなんですか?
-
この行は既に別のテーブルに属...
-
VB6でCSVの取込をする
-
ウィンドウ枠の固定を行の2箇所...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
教えて下さい
-
配列でデータが入っている要素...
-
【エクセル】測定時間がバラバ...
-
メモ帳(テキストデータ)をExc...
-
VBA 空白セルを削除ではない方...
-
多量のSUMIF式を軽くしたい
-
Excelのマクロでワードのテキス...
-
エクセルで2つの時系列のデー...
-
この行は既に別のテーブルに属...
-
VBAを使ってOutlookメール本文...
-
シーケンサにパソコンからアク...
-
EXCELVBAでSQLserverからデータ...
-
ブレーカー落ちで壊れたりしな...
-
[C言語] コメント文字列を無視...
-
オープンチヤットでデータ削除...
-
モジュラス103の算出方法について
-
javaでDBからデータを取ってき...
-
カンマからスラッシュに
-
VBA 毎日取得するデータを順番...
-
Android携帯をUSBメモリ代わりに
おすすめ情報