OleVariant型の値をフォーム上に表示させる方法は?


大鷹  2007-10-19 04:23:32  No: 28081

DELPHI2007を使っています。
今、OleVariant型の変数に配列(文字列)が入っており、
これをフォーム上に表示させたいと思っています。

まず1つ目に、「OleContainer」を用いて表示してみようと思うのですが、
どのように代入すれば良いのか分からず、行き詰まっています。

そして2つ目に、フォーム上にExcelシートを表示させる方法もあるようなので、
それも習得したいと思い、以下のようにExcelシートの表示までは行えたのですが、
そこにどのように代入すれば良いのか分からず、これも行き詰まっています。

  //ExcelのファイルをOLEコンテナのオブジェクトとする
  OleContainer1.CreateObjectFromFile(ExtractFilePath(Application.Exename) + 'book1.xls',False);
  //OLEオブジェクトを表示可能状態にして表示
  OleContainer1.Visible:=True;
  OleContainer1.DoVerb(ovShow);
  OleContainer1.SetFocus;

2つもお願いして恐縮ですが、ご教示お願いいたします。


死語の世界  2007-10-21 20:18:35  No: 28082

真琴:「ハルコさん、"OleVariant型の変数に配列(文字列)が入って…"って、どぅゆうコト?」
春子:「たぶん…、Variant配列のコト言ってるんじゃないかな?」
真琴:「それ、Excelに表示するのは難しい? 質問の人は、"行き詰まって…"と書いてるけど」
春子:「Variant配列のデータなら、Excelシートに書込むのはカンタンだよ」
真琴:「そうなの?」
春子:「うん、二つ目の質問の答えは、こんなカンジ…」

procedure TForm1.Button1Click(Sender: TObject);
  function CTS(aRow, aCol: Integer): string;
  begin
   result := Chr(Ord('A') + aCol - 1) + IntToStr(aRow);
  end;
var
  i, j, LR, LC, HR, HC, ofsX, ofsY: Integer;
  vAry, Sheet: OLEVariant;
  ExcelFile: TFileName;
begin
 ExcelFile := ExtractFilePath(Application.ExeName) +'ほげ.xls';
 with OleContainer1 do begin
  if OleObjectInterface <> nil then begin
// StatusBar1.SimpleText := '読込み済み';
  end else begin
   if FileExists(ExcelFile) then
     CreateObjectFromFile(ExcelFile, False)
   else
     CreateObject('Excel.Sheet', False);
// Visible := True;
   DoVerb(ovShow);
   SetFocus;
  end;
  // 5行7列のVariant配列を作成して、サンプル文字列データを入れておく
  vAry := VarArrayCreate([1, 5, 1, 7], varVariant);
  LR := VarArrayLowBound(vAry,1);
  LC := VarArrayLowBound(vAry,2);
  HR := VarArrayHighBound(vAry,1);
  HC := VarArrayHighBound(vAry,2);
  ofsX := 3;  ofsY := 6;           // 'C6'
  for i := LR to HR do
   for j := LC to HC do
  vAry[i, j] := CTS(i-LR+ofsY, j-LC+ofsX);

  // Excelシートに書込み('C6'セル位置から)
  Sheet := OleObject.Application.ActiveSheet;
  Sheet.Range[CTS(ofsY, ofsX), CTS(HR-LR+ofsY, HC-LC+ofsX)].Value := vAry;
 end;
end;

真琴:「Excelのセルに一つずつ入れるンじゃなくて、まとめて代入出来ちゃうンだ…」
春子:「そっ、カンタンでしょ?」
真琴:「ハルコさん、あと、"2つもお願いして恐縮…"って書いてるけど、最初の質問はチョット意味不明だよね」
春子:「うん、アタシね、"恐縮"って言葉 聴くと…、"恐縮デス"が口癖の芸能レポーター思い出しちゃう」
真琴:「ふーん、そういう人いたの…」
春子:「えっ、マコト、知らない? 過去形じゃなくて今もいるけど」
真琴:「そうなの? それにアタシ、"恐縮"って言葉も初めて」
春子:「そっかぁ…今の高校生にはもう死語かぁ、じゃぁ、アタシもトシ食ったってコト?」
真琴:「…かな?^^;」
春子:「"かな?"って…、マコト、ちょっとホッペかして」
真琴:「え?あっ、ハルコさん何するの、そんなにホッペタ引っ張っちゃ イタイよ」
春子:「うぅ〜ん、さすが思春期、ホッペの弾力はハンパじゃないね…、アタシのホッペは…、あっ、同じだぁ〜^^」
真琴:「そんなトコ比べなくても…」
春子:「イヒヒ…^^、どうよマコト、アタシだってまだ"ぴちぴちぎゃる"、負けてないね」
真琴:「ハルコさん、"ぴちぴちぎゃる"って…、それも死語の世界…」
春子:「…(・.・;」


&#28781;日  2007-12-07 19:33:58  No: 28083

多&#35874;!


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加