[[20180218175510]] 『Everything.exeに張り付けて検索』(タロウZ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『Everything.exeに張り付けて検索』(タロウZ)

 今は、Selectionの値だけをコピー状態にして
 Everythingをアクティブにして張り付けています。

 Sub N_Everything()
    Dim rc As Long
    Selection.Copy
    rc = Shell("C:\Program Files\Everything\Everything.exe", vbNormalFocus)
   If rc = 0 Then MsgBox "起動に失敗しました"
  End Sub

 そこで改良したいのですが、Selectionの値と".pdf"をつなげた文字列を
 Everything.exeに自動的に張り付けて検索したいのですがどうすれば
 いいでしょうか?よろしくお願いします。

< 使用 Excel:Excel2016、使用 OS:Windows10 >


 気になったので。質問者がeverythingexeを拡めようとしてなければいいのですが。
 コードを試すために回答者がeverythingexeをインストールするように仕向けている
 ようにも思えるし。

https://indoorotaku.blogspot.jp/2014/10/everythingexe.html
(通りすがり) 2018/02/18(日) 20:14


 そんなおもいはもうとうなく、ただ作業を楽にしたい思いだけです。
 上記ソフト以外でもいいのですが・・・
 windouwsの検索はちょっと使いずらいので。良い方法をお願いします。
(タロウZ) 2018/02/18(日) 21:02

かつて、同名のスパイウェアが存在したので、何でそんな怪しいEXE名?、と、私も気になりました。 Web検索ならGoogleが最優秀であり、EXEなんて今時使われませんから。

とりあえず、EXEのフルパスにスペースが含まれているので、"""C:\Program Files\Everything\Everything.exe"" " & Selection.Text & ".pdf" のようにダブルクォーテーションで括らないと駄目かと思います。
(???) 2018/02/19(月) 09:16


 ちょっと、内容がズレてきました。
 Web検索ではなく、cドライブの検索をしたいのです。

 Selectionの値と".pdf"をつなげた文字列を検索ソフトに張り付けて実行したいのですが・・・
  張り付るのは、Selectionの値と".pdf"をつなげた文字列です。
  エクセルでcopyしてもSelectionの値だけしかほかのソフトに貼り付けでできません。

 検索ソフトは開けます。 
 vbaから検索ソフトをアクティブにできますか?アクティブになればいいのですが!

(タロウZ) 2018/02/19(月) 20:54


自分は、Everything.exeなるツールをしらないし、インストールして試す気もないので参考程度で

Shellで呼び出してますけど、そのツールがコマンドラインから制御可能で、記述構文も間違いないのは確認済みなんでしょうか?

「貼り付ける」という言葉を使用されてるのでちょっと気になりました。
(もこな2) 2018/02/19(月) 21:17


 難しい言葉ばかりで・・・言っている意味が分からなくなりました。
 ちょっとむりみたいですね・・・
(タロウZ) 2018/02/19(月) 21:30

 >エクセルでcopyしてもSelectionの値だけしかほかのソフトに貼り付けでできません。
なので Selectionの値 は張り付くとして

 Selectionが複数だと配列になりますが、一旦、何処へ張り付けて
そこをコピーされてはいかがでしょうか?
↓これぐらいで何とかなりませんでしょうか?
Option Explicit
Sub てすと()
Dim x As Variant
Dim i As Long
Dim j As Long
x = Selection.Value
If IsArray(x) Then
    For i = LBound(x, 1) To UBound(x, 1)
        For j = LBound(x, 2) To UBound(x, 2)
            x(i, j) = x(i, j) & ".pdf"
        Next
    Next
    Range("G1").Resize(UBound(x, 1), UBound(x, 2)).Value = x
Else
    x = x & ".pdf"
    Range("G1").Value = x
End If
Range("G1").Copy Range("G2")
End Sub

(SoulMan) 2018/02/19(月) 22:23


ローカルPC内のファイルを探したいならば、普通はWINDOWS自体の機能を使うのが一番。それは、インデックス作成して高速化する処理を、OS自体が持っているからです。 が、検索が使いにくい、と感じるのも、まぁ判ります。

Everything.exe というアプリは、このインデックスを独自生成する事で、高速化しているようですね。そうなると、新しいファイルが増えたときに、インデックスの再構成をしないと、それがヒットしないかと思います。 性能が良くても、情報が不足する事があるようでは、いまいちに思います。 そして、私が書いたようにコーディングしてもキーワード指定できなかったのだとしたら、アプリが引数指定に対応していないか、または何かオプション付きで指定しないといけないのでは?(アプリが引数を見るかどうかは、作者次第ですから)

別案ですが、折角Excelを使っているのだし、マクロで目的のファイルの一覧表を作ってしまえば良くないですか? 表ができた後は、オートフィルタで絞っても良し、クリックしたら開くようにしても良し。 貴方の好きなようにできますよ。

 Sub test()
    Const cPATH = "C:\"
    Dim cFiles As Variant

    cFiles = Split(CreateObject("WScript.Shell").Exec("CMD /C DIR /A:-D/B/S """ & cPATH & "*.pdf""").StdOut().ReadAll(), vbNewLine)
    Range("A1").Resize(UBound(cFiles), 1).Value = WorksheetFunction.Transpose(cFiles)
 End Sub
(???) 2018/02/20(火) 09:06

(SoulMan)さんへ、実行すると

     選択範囲          G列     F列
     a1  b1     →   a1.pdf  b1.pdf 
     a2  b2     →   a1.pdf  b2.pdf 

       G列の2行めもa1になってしまいます。どこを直せばいいでしょうか?

 別件ですが失礼ですが、(SoulMan)さんってここで数年前までよく
 見かけたあの(SoulMan) さんでしょうか・・・

 (???)さん、コードはさっぱりわかりませんが、
 いろんなことがエクセルでできるのですね。

 皆さん、忠告、指導ありがとうございます。
(タロウZ) 2018/02/20(火) 21:30

 こんばんは!
そのコードはコピーはアレンジして頂けるだろうということで
本当に適当にかいてますから
Range("G1").Copy Range("G2")
を↓
Range("G1").Resize(UBound(x, 1), UBound(x, 2)).Copy Range("K1")
ぐらいにして頂ければ何とかなりますでしょうか?
というか、コピーはいらないですね
出てきたところをコピーしてください。

 >見かけたあの(SoulMan) さんでしょうか・・・

 多分、そうだと思います。
最近また始めたんですよね よろしくお願いします。

 でも、Blankが長かったので上手く行かないです。
自分の出来る範囲内でお答え出来たらな と思っていますので
今後ともよろしくお願いします。(^_-)-☆

(SoulMan) 2018/02/20(火) 21:44


 早速ありがとうございます。
 できました!

 私のニックネームを変えましたが、以前何回かお世話になったのを覚えています。
 またあのマクロが見れるとは光栄です!
(タロウZ) 2018/02/20(火) 22:00

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.