Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


9567 / 13644 ツリー ←次へ | 前へ→

【26486】フォルダー内エクセルファイルシート全文検索について。 さくらんぼ 05/7/6(水) 22:26 質問[未読]
【26488】Re:フォルダー内エクセルファイルシート全... かみちゃん 05/7/6(水) 23:07 発言[未読]
【26489】Re:フォルダー内エクセルファイルシート全... さくらんぼ 05/7/6(水) 23:25 発言[未読]
【26502】Re:フォルダー内エクセルファイルシート... 小僧 05/7/7(木) 11:26 発言[未読]
【26527】Re:フォルダー内エクセルファイルシート... さくらんぼ 05/7/7(木) 21:00 発言[未読]
【26535】Re:フォルダー内エクセルファイルシート... 小僧 05/7/8(金) 11:28 回答[未読]
【26575】どうすれば・・・ さくらんぼ 05/7/10(日) 22:16 質問[未読]
【26585】Re:どうすれば・・・ 小僧 05/7/11(月) 10:02 発言[未読]
【26653】ありがとうございます!! さくらんぼ 05/7/12(火) 23:15 お礼[未読]

【26486】フォルダー内エクセルファイルシート全文...
質問  さくらんぼ E-MAIL  - 05/7/6(水) 22:26 -

引用なし
パスワード
   はじめまして<(_ _)>
過去ログなど見させて頂き、とても親切な方がたくさんいらっしゃったので、
初心者で恐縮ですが、質問させていただきました。

ここ一週間やってみてるのですが、あまりにも難しすぎてできません。
複数シート検索ができる、「エクセル検索野朗」というアドインを使ってみたのですが、 セルの色が反映されない為、困っています。
色も反映できる検索・抽出はどうすればいいでしょうか?

シート例
  C   D   E   F   G   H   I   J   K   L     
 品番  品名  個数  単価  納期 納入日 材料 作業1 日付 作業者  
111 もも  100  50   7/1        たね 6/30  高橋 
222 さくら 10   100  6/15 6/14     水  6/2  鈴木 
  ・   ・  ・   ・   ・  ・      ・   ・  ・   
 ・   ・  ・   ・   ・  ・      ・   ・  ・   
 ・   ・  ・   ・   ・  ・      ・   ・  ・   

会社ごとフォルダーをわけ、営業所ごとにエクセルファイルを作って分けている為、
エクセルファイルが結構あります。

作業、日付、作業者の3行ごとで、作業8まであります。
作業1〜8の行(たね、水のセル)は、リスト入力になっていて、日付も終わる日の予定としていれられているので、終わっていない所は、作業のセルを塗りつぶしています。(たねや水のセル)
作業が終わると、セルの色をはずし、終わった日付を入れています。
作業者に終わっていない物を一覧表にして渡したいのですが、
「エクセル検索野朗」を使うと色が反映されない為、どれが終わっているのかわからないので困っています。
作業は、7項目でリスト入力にしてあります。作業の行は、J、N、P、S、V、Y、AB、AEです。
「エクセル検索野朗」のように、ボタン一つで、検索文字を入れ、会社のフォルダー内のエクセルファイルのシートを全文検索し、色を反映させることは可能でしょうか?

初心者で申し訳ないですが、丁寧に教えて頂けると非常に助かります。
よろしくお願い致します。

【26488】Re:フォルダー内エクセルファイルシート...
発言  かみちゃん E-MAIL  - 05/7/6(水) 23:07 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>ここ一週間やってみてるのですが、あまりにも難しすぎてできません。
>複数シート検索ができる、「エクセル検索野朗」というアドインを使ってみたのですが、 セルの色が反映されない為、困っています。
>色も反映できる検索・抽出はどうすればいいでしょうか?

「エクセル検索野郎」というアドインを使っていないのですが、下記ページを見ると、「諸事情により公開を中止している」とのことのようです。
エクセル検索野郎
http://hp.vector.co.jp/authors/VA012149/
http://download.seesaa.jp/contents/win/app/a_other/12186/

それで、検証も何もできていないのですが、
以下のURLのご質問と似ているような気がします。
http://park7.wakwak.com/~efc21/cgi-bin/wwwlng.cgi?print+200506/05060388.txt

全然質問趣旨が違うかもしれませんが、「エクセル検索野郎」という響きをどこがで見たことがあるなぁと思い、コメントさせていただきました。

【26489】Re:フォルダー内エクセルファイルシート...
発言  さくらんぼ E-MAIL  - 05/7/6(水) 23:25 -

引用なし
パスワード
   かみちゃんさんありがとうございます。

>全然質問趣旨が違うかもしれませんが、「エクセル検索野郎」という響きをどこがで見たことがあるなぁと思い、コメントさせていただきました。

先日、ネットで探しているとき、そちらのサイトも見させていただいて、似ていたのでびっくりしました。
実は、表はそこからコピーしてしまいました。
でもあまりにも難しすぎて初心者の私にはわかりませんでした・・。
そちらでも質問しようかと思ったのですが、結構厳しいお答えが結構あったので、
迷ったあげく、こちらに質問させていただいたのです。

やはり、難しいのでしょうか・・・?

【26502】Re:フォルダー内エクセルファイルシート...
発言  小僧  - 05/7/7(木) 11:26 -

引用なし
パスワード
   ▼さくらんぼ さん、かみちゃんさん:
こんにちは。

>やはり、難しいのでしょうか・・・?

仕様がはっきりしているコードを作成するのは回答される方にとって
そう難しくないと思われますが、作成して頂いたコードを理解して、
今後もメンテナンスしていくのは結構難しいと思います。


ご提示された内容でいくつか解らないところがあるのですが、

>作業の行は、J、N、P、S、V、Y、AB、AEです

「N」でなく「M」ではないのでしょうか?

>終わっていない所は、作業のセルを塗りつぶしています
>作業者に終わっていない物を一覧表にして渡したい

という事は、

指定フォルダ内の全エクセルブック、エクセルシートに対して
作業者で検索を掛けて
終わっていない作業(色のついたセル)を抽出して
作業名と日付を元のシートに貼り付ける

事が出来ればよいのでしょうか?

出力例)

検索「山田 太郎」の結果
作業名  日付
AAAAAA  6/13
BBBBBB  6/14
DDDDDD  6/15
AAAAAA  6/16

【26527】Re:フォルダー内エクセルファイルシート...
発言  さくらんぼ E-MAIL  - 05/7/7(木) 21:00 -

引用なし
パスワード
   小僧さん
ご親切に本当にありがとうございます。

>仕様がはっきりしているコードを作成するのは回答される方にとって
>そう難しくないと思われますが、作成して頂いたコードを理解して、
>今後もメンテナンスしていくのは結構難しいと思います。

やはり、かなり勉強しなくてはいけないのですね・・

>「N」でなく「M」ではないのでしょうか?
すみません。Mです。


>指定フォルダ内の全エクセルブック、エクセルシートに対して
>作業者で検索を掛けて
>終わっていない作業(色のついたセル)を抽出して
>作業名と日付を元のシートに貼り付ける

できれば、品番、品名、個数、納期や前後の作業も一覧にしたいので、その行すべてを抽出したいです。

よろしくお願い致します。

【26535】Re:フォルダー内エクセルファイルシート...
回答  小僧  - 05/7/8(金) 11:28 -

引用なし
パスワード
   ▼さくらんぼ さん:
こんにちは。

Sub フォルダ内検索()
Dim FSO As Object
Dim FolPath As String
Dim Fol As Object
Dim Fil As Object
Dim KWord As Variant

  FolPath = "C:\データ\"
  KWord = Application.InputBox("検索名を入力して下さい。")
    If KWord = "" Or KWord = False Then Exit Sub
'--------------------------------------------------------------
  Application.DisplayAlerts = False
  Application.ScreenUpdating = False
'--------------------------------------------------------------
  ActiveSheet.Range(Rows(2), Rows(2).End(xlDown)).ClearContents

  Set FSO = CreateObject("Scripting.FileSystemObject")
  Set Fol = FSO.GetFolder(FolPath)
    For Each Fil In Fol.Files
      If FSO.GetExtensionName(Fil.Name) = "xls" Then
        Call データ検索(KWord, FolPath & Fil.Name)
      End If
    Next
  Set Fil = Nothing
  Set Fol = Nothing
  Set FSO = Nothing
'--------------------------------------------------------------
  Application.DisplayAlerts = True
  Application.ScreenUpdating = True
'--------------------------------------------------------------
End Sub

Function データ検索(strName As Variant, FName As String)
Dim motoSheet As Worksheet
Dim Sht As Worksheet
Dim y As Long
Dim x As Long
  Set motoSheet = ActiveSheet
    Workbooks.Open (FName)
      For Each Sht In ActiveWorkbook.Sheets
        For y = 2 To Range("C65535").End(xlUp).Row
          For x = 12 To 33 Step 3
            If Sht.Cells(y, x).Value = strName Then
              Sht.Rows(y).Copy
              motoSheet.Paste motoSheet.Rows _
                (motoSheet.Range("C65535").End(xlUp).Row + 1)
              Exit For
            End If
          Next
        Next
      Next
    ActiveWorkbook.Close (False)
  Set motoSheet = Nothing
End Function

FileSystemObject を使用した以外は難しい命令は使っていないつもりです。

検索文字(作業者のみしか対応させていません)を入れると
変数「FolPath」に指定されたフォルダ内の全エクセルファイルを検索し、
見つかった場合はその行をコピーして元のシートに貼り付けるコードです。

【26575】どうすれば・・・
質問  さくらんぼ E-MAIL  - 05/7/10(日) 22:16 -

引用なし
パスワード
   小僧さん

ありがとうございます。
早速やってみました!!

フォルダ名を変えてやってみたのですが、
どこにコピーされているのかがわかりません。
これも指定しなければいけないのでしょうか?

本当に初心者で申し訳ないですが、よろしくお願い致します。
いつもご丁寧にありがとうございます。

【26585】Re:どうすれば・・・
発言  小僧  - 05/7/11(月) 10:02 -

引用なし
パスワード
   ▼さくらんぼ さん:
おはようございます。

こちらの環境でテストしたところは問題なく動くのですが…。

うまくいかない原因を考えると

A) 掲示板の文面から当方で想像している仕様と
  さくらんぼ さんの現実に使っている仕様がずれている。

B) OS、Excelのバージョンの問題。(当方WinXP、Ex2002です)

C) コードの写し間違え。

バージョンに依存する命令などは使っていない(つもり)なので
B)ではないと思います。

特にエラーが出て止まるというわけでなければ C) も違いそうですので

原因は A) なのでしょうかね。


>>作業、日付、作業者の3行ごとで、作業8まであります。
>>作業の行は、J、N、P、S、V、Y、AB、AEです。

という事で、フォルダ内シートに関する作業者の検索は
「L,O,R,U,X,AA,AC,AG」列に対してのみ行っていますが、
この辺がずれているのでしょうか?

【26653】ありがとうございます!!
お礼  さくらんぼ E-MAIL  - 05/7/12(火) 23:15 -

引用なし
パスワード
   小僧さん

本当にありがとうございます。
検索する文字を作業者ではなく、作業にしていました。
本当にすいません。
でも、とても便利になって、すごく楽になりました♪
本当に、本当にありがとうございました。
これからもっと勉強して、小僧さんのようになれるようがんばります!!
また息詰まったら、ご質問させて頂くことがあると思いますので、
その時はよろしくお願い致します。
この度は、ありがとうございました。

9567 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free