• ベストアンサー

VBAでフリーエディターのテキストを開く方法?

VBAマクロでは Shell関数をつかって、フリーなアプリ単体を立ち上げことは 可能なようですが、 フリーエディターで目的のテキストファイルを一挙に 開くことはできるのでしょうか? イメージ Shell "フリーエディター" "開く対象の適宜なファイル" なのですが、 できるかできないかをまずしりたいのでよろしくおねがいします。

質問者が選んだベストアンサー

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.5

補足の意味がよく分かりませんが・・、 私の使わせてもらっている、notepad++ では shell("C:\Program Files (x86)\Notepad++\notepad++.exe d:\DATA\docs\memo.txt") のようにして開けます。ほとんどのエディタが可能かと思いますよ。 また、txt 拡張子にそのエディタが関連付けられているなら shell("explorer.exe d:\DATA\docs\memo.txt") や createobject("Shell.application").shellexecute("d:\DATA\docs\memo.txt") で、そのアプリケーションから開かれます。 (windows7の場合、XPでも同様だったかな?)

harapokochan
質問者

補足

nicotinismさま ご回答ありがとうございました。 わたしのいま見ている参考図書は ナツメ社のExcel VBA 実践技 & 上級技大全 97/2000/2002対応です。 その238ページにShell関数の使用例として、 Option Explicit Sub NotePad() Dim taskID As Double taskID = Shell("Notepad.exe C:\readMe.txt",vbNormalFocus) End Sub というソースがのっていましたのでNotepadを使う範囲では第一引数をわたすことは 可能とおもわれます。 わかりやすくフリーエディターとかきましたが、実際は囲碁に特有の 棋譜エディターでして、テキストファイル拡張子は.sgfです。 残念ながら、上記コードを参考としてモジュールに記述してためした結果。 エディター起動まではできますが、引数までは反映されません。 実行ファイルもフルパスつき、そしてテキストファイルもフルパスつきでの結果です。 ちなみに実行ファイルとテキストファイルをまったくおなじフォルダーにおいております。 ドラッグ&ドロップでは即時にそのテキストファイルをひらいてくれます。 やはりマイクロソフトの開発したプログラムの仕様が特別なようにおもわれます。 なお、わたしのPCはOSがWindows XPで、エクセルは2003です。

その他の回答 (6)

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.7

その『棋譜エディタ』を教えてもらった方が、話が早いかと思います。 フリーウェアなので何処かからダウンロードできませんかね?

harapokochan
質問者

お礼

nicotinismさま その後、コメいただいておりませんが、想像するのに、「第一引数」を そのままうけわたしは不可が結論と理解させていただきたいと存知ます。 お手数、多謝でした。

harapokochan
質問者

補足

nicotinismさま そっそくのご連絡ありがとうございます。 おしゃるとおりですね。 わたしの使用しているのはユキノシタ2です。 ぐぐっていただければかならずでてきますのでよろしくおねがいいたします。 ユキノシタはエディターですので、拡張子.sgfのファイルを作成できますし。 よみこんで編集もできます。 通常のテキストエディターとちがうのは表示されるのが碁盤に石が配列されている状態が でてくるところです。 sgfファイルは テキストですので、Notepadなどでひらけますが、表示されるのは Sgfファイル特有のコードが表示されます。 いってみればそのコードを翻訳してその棋譜エディターは碁盤画像に石を配置するわけですね。 わたしもよくわかりませんが、今回の第一引数の問題は Notepadが可能で、ほかはだめということは たとえばレジストリーあたりに相違があるのかなぁというかんじがしてきました。 いかがでしょうか?

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.6

> やはりマイクロソフトの開発したプログラムの仕様が特別なようにおもわれます。 そんなことはありません。 ファイルを指定できるアプリの方が多いです。 ・先ずはその棋譜エディタのマニュアルとかヘルプで、「コマンドライン」とか「実行時オプション」とかいう項目で、使い方を確認してください。 通常は、第一引数にそのままファイル名を書きますが、なんらかのオプション (-iとか /Fとか)で指定するアプリもあります。 ・実行ファイルか読み込みたいファイルのフルパスに、スペースは含まれてませんか?(Program files とか) その場合、ダブルクォートで括る必要があります。 "C:\Program Files\foo\bar.exe" "C:\Document and Setting\MyName\My Document\inputfile.sgf" という具合に。VBAでは、これ全体を""でくくる必要があるので """C:\Program Files\foo\bar.exe"" ""C:\Document and Setting\MyName\My Document\inputfile.sgf""" (""中の"は "" と2つ並べて書く) のようにする必要があります。  

harapokochan
質問者

補足

kmeeさま、ご助言ありがとうございます。 棋譜エディターのヘルプやマニアルに関しては、操作方法までで、 ソフト本体にかんするテクニカルな説明はありません。 ソースを公開しているわけでもありません。 そこで、わたしのもっている本のShell関数の説明には,kmeeさまの おしゃるような構文の説明はありませんので、 そのような説明が載っている本をごしょうかいいただければありがたいです。 ぜひ勉強させていただきたいのでよろしくおねがいいたしますm(_ _)m

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.4

そのエディタのマニュアルを読むのが一番確実だと思います。 「コマンドラインオプション」とかいう感じの項目で、複数ファイル指定できるならその旨が書いてあります。 大抵は、複数指定すればそれらを開くのが普通だと思います

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.3

一挙にというか順次ならば 同一フォルダにあるなら Dir 関数でループしつつ Shell("そのフリーのエディタのフルパス Dir関数から得られたテキストファイルのフルパス") のような感じで行えば良いでしょうし、 http://homepage2.nifty.com/kasayan/vba/dir.htm 任意のファイルだけなら、MsoFileDialogなどで選択したものを 順次渡してゆけば良いと思いますけど? http://blog.livedoor.jp/akf0/archives/51587451.html

harapokochan
質問者

補足

nicotinismさま ご回答ありがとうございます。 Shell関数は実行ファイル起動だけですよね、現実的には そのフリーエディターを実行できればすこし手間はかかるのですが、 そこからさらに目的のテキストファイルを手作業でさがすという方法しかないかなといまは 考えております。(みなさまのご意見をふまえて、それがベストのようにかんじております。) MsoFileDialogはまったくわからないですが、ダイアログから 目的とするテキストファイルのディレクトリーをさがすということであれば やはりそのフリーエディターへ第一引数としてわたすということはむずかしいように おもわれますが、いかがでしょうか?

  • MARU4812
  • ベストアンサー率43% (196/452)
回答No.2

> ウィンドウズ用のマクロ記録自動記録ソフト、「UWSC」 > などをつかって、 そんなのがあるんだ?・・・必要ないと思うけど。 拡張子が登録されているならエクスプローラのフォルダオプションで DOSコマンドに対応するコマンドが登録されているよ。 これがドロップしたときの動きにも関係してると思うけど、詳しくは 分かりません。↓引数に展開してくれるだけじゃないかと思うけど。 http://www.softel.co.jp/blogs/tech/archives/2140 DOSコマンドの引数をアプリがどう解釈するかは、アプリ側で 決められるので、アプリを限定せずに回答はありません。 ローカルルールというか、デファクトスタンダードとして 第1引数はファイルパスの場合が多いですけど。 だから、#1さんは、やってみて開いたら第1引数に ファイルパスでいいんじゃないの?と言っているだけだと思います。 正確に知るには、アプリ開発者に聞くしか方法は無いです。

harapokochan
質問者

補足

ご回答ありがとうございました。 今回の質問の主旨は MARU4812さんもご存知だとおもいますが、EXCEL VBAマクロの目的が、 手作業を省く自動化なので、VBAマクロのなかでそうしたエディター(マイクロソフトが 開発したものは別として)へ第一引数をVBAマクロからそのソフトにひきわたすことが 可能かどうかなので、 VBscriptやら、Visual Basicなどを駆使しても、 ご両者さまのご意見から、かなり無理そうということが推測されます。 そのような理解でよろしいでしょうか? (理由:DOS窓をつかって、作成したBATファイルなどを起動させるのであれば、 VBAマクロをいったん中止して、たとえばデスクトップのそのソフトのアイコンを ワンクリックすればすむわけなので。)

  • x-1919
  • ベストアンサー率52% (91/173)
回答No.1

試してみたほうが早い。 できるものもあれば、できないものもあると思う。 フリーディターとか言われても星の数ほどあるだろうし。 アプリのショートカット アイコンやアプリの exe ファイルにテキストファイルをドロップしてみる。 そのアプリが起動して、目的のテキストファイルが開かれるかを確認する。 この場合、そのアプリが引数でテキストファイルのパスを受け取って Open する処理に対応してると考えられる。

harapokochan
質問者

補足

さっそくのアドバイスありがとうございまいした。 X-1919さんのおしゃられることを具体的に推測いたしますと。 たとえば、ウィンドウズ用のマクロ記録自動記録ソフト、「UWSC」 などをつかって、そのフリーアプリにテキストファイルをドロップしてみて そこに記録されたマクロコードを咀嚼検討してみれば、ひょっとしたら、エクセルVBA を母体としたマクロコードからの実行の糸口がさぐれるかもしれないといった ことでしょうか? いずれにしても、UWSCの文法とエクセルVBAの文法がおなじわけではなさそうなので、 かなりむずかしそうですね。

関連するQ&A

専門家に質問してみよう