Delphi Programming / Object Pascal
[掲載 2005年01月01日] [更新 2016年07月22日] Delphi サンプルプログラム集 |
380_URL のデータをエクセルで取得して表示 |
動作確認等 |
Windows 7 U64(SP1) + Delphi XE Pro + Excel 2010 |
|
380_URLToExcel.zip [649 KB] 2016年07月22日版 (EXE 同梱) |
- 2011年01月17日
- TextFileCommaDelimiter := False; の行を削除
- URL 入力編集用 Edit を追加
- 2016年07月22日
- 起動したエクセルを前面に表示するためのコードを追加
|
エクセルの QueryTables プロパティを使用して,指定 URL の表形式データをエクセルに取得します.
添付の EXE をそのまま実行すると,下記の [HSP の裏技] にある [ウィンドウメッセージリスト] のリストを取得して,エクセルのシートに表示します. |
|
図1
設計時画面
- [Servers] タブのコンポーネントを配置
TExcelApplication
TExcelWorkBook
TExcelWorkSheet
|
|
図2
起動
- URL 入力欄に URL (ウェブページのアドレス) を入力
- [エクセル起動] ボタンをクリック,または [Enter] キーを押下
|
|
図3
実行例
- 本アプリは自動終了
- エクセルだけが起動したままとなる
|
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Excel2000, OleServer, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
ExcelApplication1: TExcelApplication;
ExcelWorksheet1: TExcelWorksheet;
ExcelWorkbook1: TExcelWorkbook;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
//=============================================================================
// Edit1に読み込むURLをセット
//=============================================================================
procedure TForm1.FormShow(Sender: TObject);
begin
Edit1.ImeMode := imDisable;
Edit1.Text := 'http://chokuto.ifdef.jp/urawaza/message/index_main.html';
end;
//=============================================================================
// エクセルを起動して指定URLのデータを取込む
//=============================================================================
procedure TForm1.Button1Click(Sender: TObject);
var
LURLName : String;
LpC : OleVariant;
LpD : ExcelRange;
LpQTabel : Excel2000._QueryTable;
LhWindow : HWND;
begin
//エクセル起動
ExcelApplication1.Connect;
//エクセル表示
ExcelApplication1.Visible[0] := True;
//ブックとシートオブジェクト接続
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(EmptyParam, 0));
ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets['Sheet1'] as _Worksheet);
//読込むCSVデータのURL}
LURLName := Trim(Edit1.Text);
LpC := 'URL;' + LURLName;
try
//出力先セル(左上)の指定
try
LpD := ExcelWorkSheet1.Cells.Range['A1', 'A1'];
LpQTabel := ExcelWorksheet1.QueryTables.Add(LpC, LpD, EmptyParam);
LpQTabel.RefreshStyle := xlOverwriteCells; //上書き
LpQTabel.AdjustColumnWidth := True; //列幅自動調整
LpQTabel.Refresh(EmptyParam); //実行
except
MessageBox(Handle, '取得に失敗しました.', '情報', MB_OK);
end;
finally
//エクセルを起動したら各オブジェクトを切断して終了
//このアプリも終了してしまう
ExcelWorksheet1.Disconnect;
ExcelWorkbook1.Disconnect;
ExcelApplication1.Disconnect;
//起動直後のエクセルを最前面に表示
LhWindow := FindWindow('XLMAIN', nil);
if LhWindow > 0 then begin
Self.BringToFront;
SetWindowPos(LhWindow, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE);
end;
Close;
end;
end;
end.
|