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