VBAの下記と同じような命令を教えてください。
with ActiveSheet.QueryTables.Add(Connection:=URL, Destination:=Range(ADR))
ヤフーのwebから株価を取得したいので・・・。
URLから内容を取得するならIndyを調べてみてください。
FAQ等で下記の取得方法がありますが、
text := InternetReadTextFile()
これだと、タグ情報も入っていて・・・。
先の
web.with ActiveSheet.QueryTables.Add(Connection:=URL, Destination:=Range(ADR))
だと簡単に表形式のデータになるのですが。
VBAでも、これでは取得できないと思いますよ。
Excel for VBAならば出来るので、DelphiでもExcelを使ってやらせればよろしいかと。
私の環境では,以下のコードでWeb上のデータを取得できました.
それにしても,ご自分の環境を書かれない方が多いですね.
また,このような質問の際は,具体的なURLを示されればテストがやり
やすいのではないかと思います.
質問される方が手をかけるか,レスする方に手をかけさせるかの選択の
問題ですけどね.
そのままコピペして実行してみてください.
[Servers]のコンポを使用していることがわかっていて,Delphiのバージョ
ンが書いてあれば,もっと早くレスしたんですけど...
この掲示板でもたまにあるように,違うんです,と言われるのがいやなので...
//====================================================================
// エクセルを起動して指定URLのデータを取込む
// 新規プロジェクトに以下のコンポーネントを配置
// [Servers] TExcelApolication
// [Servers] TExcelWorkbook
// [Servers] TExcelWorkSheet
// [Standard] TButton
// 動作確認 WindowsXP + Delphi5 + Excel2000
//====================================================================
procedure TForm1.Button1Click(Sender: TObject);
var
URLName: String;
pC: OleVariant;
pD: Range;
begin
//エクセル起動
ExcelApplication1.Connect;
//エクセル表示
ExcelApplication1.Visible[0] := True;
//ブックとシートオブジェクト接続
ExcelWorkbook1.ConnectTo(
ExcelApplication1.Workbooks.Add(Null, 0));
ExcelWorksheet1.ConnectTo(
ExcelWorkbook1.Worksheets['Sheet1'] as _Worksheet);
//読込むCSVデータのURL}
URLName :='http://www.pref.kanagawa.jp/guide/40/4006.html';
pC :='URL;'+URLName;
//出力先セル(左上)の指定}
pD :=ExcelWorkSheet1.Cells.Range_['A1','A1'];
with ExcelWorkSheet1.QueryTables.Add(pC,pD,EmptyParam) do begin
RefreshStyle :=xlOverwriteCells;//上書き
AdjustColumnWidth :=True; //列幅自動調整
TextFileCommaDelimiter :=False; //カンマ区切り
Refresh(EmptyParam); //実行
end;
end;
//====================================================================
// エクセルオブジェクト使用終了
// エクセルが先に閉じているのが条件
//====================================================================
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
ExcelApplication1.Quit;
end;
end.
ご指導ありがとうございます。なにぶん初心者で・・。
そっか、環境で随分違ってしまうことも・・。
WinXP、Delphi7、Office2003です。
確かにExcelのVBAです。
HomePageは、ヤフーファイナンスの時系列データで、
http://table.yahoo.co.jp/t?c=2004&a=6&b=21&f=2004&d=9&e=22&g=d&s=9437&y=0&z=1001
です。
データ数がせいぜい300程度であれば、処理速度やその他気にせず、
excelを使った方が良いのですかね。
TClientSocketなどを使って、HTLMを一文字ずつ処理する方法も見ましたが、
より簡単ですね。
今時間がないので、後日試してみます。
数々の助言大変感謝しておりまうす。
追記
先の例 よく見ると
Serverコンポーネント?
すみません、どこで入手できるのかわからなくて・・。
それと、既存のEXCELデータもなく、残す必要もないのにEXCELを使うのは、
なんとなく違和感が・。
また、悩む日々w。
>それと、既存のEXCELデータもなく、残す必要もないのにEXCELを使うのは、
これは変ですよ.ネット上で
with ActiveSheet.QueryTables.Add(Connection:=URL, Destination:=Range(ADR))
のような関係を検索すると,Excel関係のものとなっていますから.
では,株投資家さんは,一体,なにをどうしたいのでしょう.
「残す必要がない」なら,ブラウザでみるだけで用がすむとおもいますが...
私の調べ方が足りないのかも知れません.
with ActiveSheet.QueryTables.Add(Connection:=URL, Destination:=Range(ADR))
はVBAではどういう動作をするのですか.EXCELではないということですよね.
>すみません、どこで入手できるのかわからなくて・・。
Delphiのバージョンが不明なので正確なお答えではありませんが,
最初からついているバージョンもありますので,わからないようで
したら,株投資家さんのはないバージョンのDelphiでしょう.
>Delphiのバージョンが不明なので正確なお答えではありませんが
Delphi7 のPro版以上なら最初からあります.
http://homepage2.nifty.com/Mr_XRAY/Delphi/plExcel/B_Delphi7.htm
バージジョンは7のproです。
で、何をしたいかというと
現在Excelでヤフーファイナンスのwebデータをシートへ埋め込み
つぎに、EXCELのVBAでP&Fチャートを作成させています。
このチャートは直近データ100位でいいので蓄積させなくてよいので、
起動の度にデータ取り込みを行い、終了で破棄してと考えております。
これを、DELPHI上で行おうと考えたのですが、
私のレベルでは難しいなとつくづく感じました。
ようは、データを取得して、加工してグラフ(Chart)を書きたい。Chart表示後は取得したデータは必要ない。それを、Delphiのみでおこないたいって事でしょうか?
残念ながら希望されている命令(関数)等は無いと思います。Indy、THTTP等を使用してこまごまコードを書く事しか方法は無いと思います。
ちなみに、私も同じようなプログラムを作りたく勉強して取得できるようになり、
そのおかげで思わぬ株関係のデータも取得できるようになり喜んでいます(笑)。
返信ありがとうございます。
今回 とりあえずExcelの操作をしてみようと思います。
先のserversコンポですが、
OCX\servers\excelXP.pasというファイルを見つけました。
そこで、コンポーネントのインストールを行ったところ、
パッケージ dcluse.dpk というものが作成されましたが、
この後どうすればよいのか?
最終的には、パレットの設定?等でコントロールがでてくるのかと思うのですが。
また、THTTPとはどれなのでしょう?WebDispacherではないですよねw。
serversコンポーネントの組み込みができました。
Mr.XRAYさん指定のHPを見ました。(やっと方法が理解できた)
Mr.XRAYさんのサンプルを実行しました。
エラー:range 未定義の識別子
とでてしまいますが・・・。
何か他にも組み込みが必要なのでしょうか。
pD:Rangeの定義を行わず、直接QeryTable.add()の中にいれると無事に実行できました。
さてと、どの方法でいくか再度考えて見ます。
P&FのChatt表示ですか。これもTChartをつかって私も表示できるように作ってあります。最初大変かもしれませんががんばってください。
THTTPは、FastNetタグ内のNMHTTPです(Ver7には無い?)。
とりあえず、下記のMLリストで
タグ付テキストが取得できるようになりました。(スピードも速い)
今後の課題は、このテキストからテーブルデータを取り出すことです。
「[Delphi-ML:66515] Re: ホームページ上の文字データを取得する方法
Susumu KAWAMURA <susumuk@fa.mbn.or.jp>
Thu, 11 Apr 2002 15:01:16 +0900」
その後は、http://forum.nifty.com/fdelphi/samples/index.htmが
参考になるかも?
タグ付テキストが取得できるようになりましたので、
とりあえず、解決したものとします。
アドバイスありがとうございました。
ツイート | ![]() |