A 回答 (3件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
質問のようなことが当然出来て、やり方を教えてほしいという質問のし方だが、根本的に、基本的に>外部プログラム(例えば、Perl)を実行し、その実行結果をVBAプログラム中で利用する、ようなことは(実行結果がうまく行ったか程度のことは別にして)、出来ないと思います。
オフィスソフトなどのようにCOMオブジェクト(ライブラリ)化されて、参照設定して利用できるもの以外は、本来出来ないのだが、MS社などが多大な工夫・仕組み・労力をかけてできる仕組みがオフィスソフトなどで作られている例を、まず見ているものだから、どんな場合にでも出来ると思い、こういう質問になるのだと思います。
こういう質問の内容が出来る場合というのはどういう仕組みが必要かを、質問者が時間をかけて勉強する必要があると思います。そんなに簡単な事ではないと思います。
この回答への補足
調べてみたところ、
shellという関数で、perlのプログラムを実行し、
実行結果をテキストファイルで出力し、
http://officetanaka.net/excel/vba/file/file08.htm
に書いてある方法でその実行結果のテキストファイルをVBAで入力
すればやりたいことができることがわかりました。
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.3
- 回答日時:
>より具体的にやりたいことを書きますと、
html(webページ)から抜き取るのかxmlから抜き取るのか不明確。
xmlならライブラリがあるので簡単に情報取得出来ます。
http://mitc.xrea.jp/diary/072
http://www.google.co.jp/search?hl=ja&q=vba+%EF%B …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Pythonでexcelのvbaを作成、実行する方法について Pythonで表の自動集計プログラムを 3 2022/07/09 09:58
- Excel(エクセル) エクセル・スプレッドシートで、一定数を超えたらゼロから再累計する方法 8 2022/05/28 03:52
- Visual Basic(VBA) ExcelのVBAでX=0〜1の定積分を実行する計算プログラムを作成したいです。どなたか教えてくださ 1 2022/12/01 16:06
- Excel(エクセル) 「Excelのオプション」の「ユーザーインターフェイスのオプション」の設定値をVBAで取得したい 1 2022/07/31 23:49
- その他(Microsoft Office) Excel、PowerPoint、Word中級レベル 3 2023/06/20 18:09
- Visual Basic(VBA) Vba 互換モードでのAppActiveについて教えてください 2 2022/06/27 18:47
- Visual Basic(VBA) Excel VBAで教えてください 4 2022/05/11 22:20
- Visual Basic(VBA) ユーザーフォームに日付を表示させる方法を教えてください。そして、実行したあとでも日付が変わるようなプ 4 2023/02/23 12:18
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
- Visual Basic(VBA) Excel ファイルを指定し、指定されたファイル内にシートを統合するVBA 8 2023/07/10 10:09
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Macターミナルで実行中のプログ...
-
なんかC言語でプログラム書いて...
-
MACで動く実行ファイルをWindow...
-
VB上で実行中の無限ループの止め方
-
他のPC上にあるexeを、そのP...
-
ExcelのVBAでX=0〜1の定積分を...
-
プログラミング ソースコード
-
DPマッチングのプログラミング
-
プリントスクリーンをプログラ...
-
並列計算をしたときのシステム...
-
秒数を数える(C言語)
-
C++でCtrl+Cを無効化したい
-
C#.net FTPでホームディレクト...
-
アクセス[ファイルを開かずに、...
-
C言語 fork()について
-
Visual Studio デバッグ実行で...
-
ヘッダファイル? malloc.hと...
-
clock関数は正確じゃないの?
-
実行時エラー429
-
システム資源とは?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Macターミナルで実行中のプログ...
-
なんかC言語でプログラム書いて...
-
プログラミング ソースコード
-
MACで動く実行ファイルをWindow...
-
実行時エラー429
-
Windows10でDOSゲーム
-
VB上で実行中の無限ループの止め方
-
他のPC上にあるexeを、そのP...
-
sendkeysにてALT+CTRL+INSERTを...
-
VBAで外部プログラムを非表示で...
-
システム資源とは?
-
プロセス間通信について
-
アクセス[ファイルを開かずに、...
-
C言語でプログラムを再起動
-
C言語で途中までしか、プログラ...
-
system関数を使用してsuコマン...
-
終了してもプログラムが実行し...
-
PIC のデータEEPROMに書き込み...
-
実行中の実行ファイルの上書き
-
他の実行ファイルを実行するプ...
おすすめ情報