こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

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

投稿日時 - 2012-08-07 09:53:08

QNo.7631234

困ってます

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

補足の意味がよく分かりませんが・・、
私の使わせてもらっている、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でも同様だったかな?)

投稿日時 - 2012-08-08 00:07:47

補足

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です。

投稿日時 - 2012-08-08 11:49:44

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(7)

ANo.7

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

投稿日時 - 2012-08-09 06:24:17

補足

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

投稿日時 - 2012-08-09 12:37:29

お礼

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

投稿日時 - 2012-08-22 10:39:40

ANo.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つ並べて書く)
のようにする必要があります。

 

投稿日時 - 2012-08-08 19:29:33

補足

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

投稿日時 - 2012-08-09 01:54:17

ANo.4

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

投稿日時 - 2012-08-07 22:56:50

ANo.3

一挙にというか順次ならば
同一フォルダにあるなら
Dir 関数でループしつつ
Shell("そのフリーのエディタのフルパス Dir関数から得られたテキストファイルのフルパス")
のような感じで行えば良いでしょうし、
http://homepage2.nifty.com/kasayan/vba/dir.htm

任意のファイルだけなら、MsoFileDialogなどで選択したものを
順次渡してゆけば良いと思いますけど?
http://blog.livedoor.jp/akf0/archives/51587451.html

投稿日時 - 2012-08-07 22:07:23

補足

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

投稿日時 - 2012-08-07 22:57:20

ANo.2

> ウィンドウズ用のマクロ記録自動記録ソフト、「UWSC」
> などをつかって、
そんなのがあるんだ?・・・必要ないと思うけど。

拡張子が登録されているならエクスプローラのフォルダオプションで
DOSコマンドに対応するコマンドが登録されているよ。
これがドロップしたときの動きにも関係してると思うけど、詳しくは
分かりません。↓引数に展開してくれるだけじゃないかと思うけど。
http://www.softel.co.jp/blogs/tech/archives/2140

DOSコマンドの引数をアプリがどう解釈するかは、アプリ側で
決められるので、アプリを限定せずに回答はありません。

ローカルルールというか、デファクトスタンダードとして
第1引数はファイルパスの場合が多いですけど。
だから、#1さんは、やってみて開いたら第1引数に
ファイルパスでいいんじゃないの?と言っているだけだと思います。

正確に知るには、アプリ開発者に聞くしか方法は無いです。

投稿日時 - 2012-08-07 15:36:49

補足

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

投稿日時 - 2012-08-07 22:11:28

ANo.1

試してみたほうが早い。
できるものもあれば、できないものもあると思う。
フリーディターとか言われても星の数ほどあるだろうし。

アプリのショートカット アイコンやアプリの exe ファイルにテキストファイルをドロップしてみる。
そのアプリが起動して、目的のテキストファイルが開かれるかを確認する。
この場合、そのアプリが引数でテキストファイルのパスを受け取って Open する処理に対応してると考えられる。

投稿日時 - 2012-08-07 12:47:32

補足

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

投稿日時 - 2012-08-07 15:10:24

あなたにオススメの質問