
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
>より具体的にやりたいことを書きますと、
html(webページ)から抜き取るのかxmlから抜き取るのか不明確。
xmlならライブラリがあるので簡単に情報取得出来ます。
http://mitc.xrea.jp/diary/072
http://www.google.co.jp/search?hl=ja&q=vba+%EF%B …
No.2
- 回答日時:
こんばんは。
VBAの中で組むと、Perl での出力を待たせて、ロスが生じてしまうような気がします。Perl を使うなら、たぶん、それは逆でしょうね。VBA --> Perl ではなく、Perl --> Excel VBA(オートメーション・オブジェクト)というスタイルにするか、最初から最後まで、Perl で行ってしまったほうが良いと思います。
Office TANAKA の
Open "D:\Test.txt" For Input As #n
の手法が悪いわけではないのですが、それは、スタティスティックなデータが主な対象になります。
>shellという関数で、perlのプログラムを実行し、
もちろん、そのタイミングを、API等で取るか、タイムラグを、API関数等で待たせられば、VBAでも組めますが、あえて、テキスト出力する意味があるのか、私には分かりません。直に、文字列型変数の中で処理したほうが、圧倒的に速いはずです。ただし、VBAの文字列型変数の大きさには限界があり、数メガ程度ですが、Webサイトの常識的なページ一つに留まります。(画像は別の取得の仕方ですから、ここでは関係ありません。あくまでも、テキスト・オンリーです。)
もし、VBAをPerl ライクで使用するなら、ぜひ、BASP21 の BRegExp をお試しになることをお勧めします。なお、会社で使用することも認められる公的なものです。ただし、会社で使用する場合は、商用バージョン(サイト・ライセンス)もあります。
WindowsのVBScript 側の正規表現とは、比べ物にならないほど、性能が良いです。
私自身は、他人の環境で、Dll をインストールさせるまでには至らないので、公開が予想されるものは、Windows 組み込みの正規表現と、VBAの文字列関数を組み合わせています。正規表現のVBScript.RegExp で、いくら参照設定していても、スクリプトの部分でパターンを入れるので、そのたびに、オーバーヘッドが生じてしまうような気がしますので、小回りが必要なときは、VBA関数を使ってしまいます。
例:
ここのサイトの質問番号(\1)とタイトル(\2)を取る
myPattern = "ent><A\shref=""qa(\d+)\.html"">([^<]+)</A>
http://www.hi-ho.ne.jp/babaq/bregexp.html
Set objIE = CreateObject("InternetExplorer.Application")
で、取得したオブジェクトから、テキスト型のログを取ります。
strLog = objIe.Document.body.innerHTML
で、strLog は、テキストファイルですから、後は、正規表現パターンで取得できます。なお、innerTEXT側では、区切り文字が見当たらないので、数字などの取得はうまくいきません。
参考サイト
参考URL:http://www.ken3.org/cgi-bin/group/vba_ie.asp
No.1
- 回答日時:
質問のようなことが当然出来て、やり方を教えてほしいという質問のし方だが、根本的に、基本的に>外部プログラム(例えば、Perl)を実行し、その実行結果をVBAプログラム中で利用する、ようなことは(実行結果がうまく行ったか程度のことは別にして)、出来ないと思います。
オフィスソフトなどのようにCOMオブジェクト(ライブラリ)化されて、参照設定して利用できるもの以外は、本来出来ないのだが、MS社などが多大な工夫・仕組み・労力をかけてできる仕組みがオフィスソフトなどで作られている例を、まず見ているものだから、どんな場合にでも出来ると思い、こういう質問になるのだと思います。
こういう質問の内容が出来る場合というのはどういう仕組みが必要かを、質問者が時間をかけて勉強する必要があると思います。そんなに簡単な事ではないと思います。
この回答への補足
調べてみたところ、
shellという関数で、perlのプログラムを実行し、
実行結果をテキストファイルで出力し、
http://officetanaka.net/excel/vba/file/file08.htm
に書いてある方法でその実行結果のテキストファイルをVBAで入力
すればやりたいことができることがわかりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Macターミナルで実行中のプログ...
-
sendkeysにてALT+CTRL+INSERTを...
-
MACで動く実行ファイルをWindow...
-
vba GetAsyncKeyState関数について
-
Windows10でDOSゲーム
-
パソコンの演算速度について
-
サンク方式について
-
UWSCがうまく動かない
-
コマンドラインの長さに制限は...
-
cc -o sample sample.c cc -o s...
-
プログラムを走らせる
-
C言語で書いたプログラムをWEB...
-
C言語プログラミングの再帰がい...
-
並列計算をしたときのシステム...
-
F-BASIC V6.3プログラミングに...
-
実行時エラー429
-
apacheのコマンドプロンプトか...
-
C# シリアル通信でデータ受信...
-
TCP/IP通信時のサーバーからの受信
-
メモリが不足しています(VBA)
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Macターミナルで実行中のプログ...
-
パソコンの演算速度について
-
C言語で途中までしか、プログラ...
-
sendkeysにてALT+CTRL+INSERTを...
-
vba GetAsyncKeyState関数について
-
RPG パラメーターについて
-
sleep()関数について
-
Windows10でDOSゲーム
-
実行中の実行ファイルの上書き
-
VBAで外部プログラムを非表示で...
-
終了してもプログラムが実行し...
-
並列計算をしたときのシステム...
-
VB上で実行中の無限ループの止め方
-
VB6プログラムの実行中でのこと
-
アクセス[ファイルを開かずに、...
-
他の実行ファイルを実行するプ...
-
実行時エラー429
-
UWSCがうまく動かない
-
MACアドレスの調べ方
-
”行数のカウント”はどうすれば...
おすすめ情報