• ベストアンサー

エクセルやCSVで内容が検索にかからない

CSVやエクセルファイルを1つのフォルダーで管理しているにもかかわらず普通のファイルの検索だとかかるときとかからない時があります(かからない時がほとんど)。うまく検索する方法はありますでしょうか?またそれとは別に例えばエクセルデータをダウンロードした時に常に1つのエクセルファイルにまとめるようにすることは可能でしょうか?ダウンロードしてからの結合でもいいです。いくつかのエクセルファイルを1つに結合してシート別になっているようにできると上記の検索の問題も解決します。どなたかご教授お願い致します。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんばんは。 スタート-設定-フォルダオプション フォルダオプションの「表示」には、  ・すべてのファイルを表示するに黒丸は入っていますか? ファイル検索で、拡張子で、*.csv とすれば、出てきますね。 >エクセルファイルを1つに結合してシート別になっているようにできる CSV ファイルをインポートして、シート別で、ブックで管理するということでしょうか? 以下のマクロを空のブックで試してみてください。 Alt + F11(Altキーを押しながら、F11を押す)て、Visual Basic Editorを出す。 メニューの挿入-標準モジュールをクリック 以下を貼り付けて、 ユーザー設定の部分を変更する。 (しなくても、動きます。) 再び、Alt + F11 で閉じる。 後は、フォームツールバーから、ボタンをクリックして、シートに貼り付けて、 マクロの登録で、CSVImport2Sheet に登録 または、ツール-ユーザー設定-ツールバー[タブ]で、新規作成 ツールバーに名前をつけ、 コマンド[タブ]をクリック 分類-マクロ- ニコチャンマークをそのツールバーにドラッグして貼り付ける。 選択したボタンの編集をクリック マクロの登録で、CSVImport2Sheet に登録 ニコチャンマークは、メニューからボタンのイメージの編集で換えられます。 このマクロは、CSVのインポートを左の空のシートから入れるものです。 なお、最初の1番目のシートは、管理用としてボタンをつけておくとよいかもしれません。ただし、2セル以上、何でもよいので文字や数値を入れておかないと、そのシートにもインポートされてしまいます。シートを空にすれば、上書きも可能です。(同じ名前が既にある場合は、シート番号のままの時があります)シート名は、ファイル名になります。 '<標準モジュール登録> Option Explicit Sub CSVImport2Sheet()   Dim orgHolder As String, rw As Long, i As Long, j As Long   Dim Fname As String, ShtCountTmp As Integer, FNo As Integer, TextLine As String   Dim LineBuf As Variant, U As Integer, AcSht As Worksheet, ShName As String   'ユーザー設定   '================================================   Const myHolder As String = "C:\" 'CSVが置いてあるフォルダーを登録   rw = 1 '書き出しの最初の行数   '1行目からの書き出しなら、そのまま   '================================================   'シート数の確認   For i = 1 To Worksheets.Count    If Worksheets(i).UsedRange.Count > 1 Then      ShtCountTmp = ShtCountTmp + 1      Else      Worksheets(i).Select      Set AcSht = Worksheets(i)      Exit For    End If   Next i   'もし、不足していたら、一つ追加する。   If ShtCountTmp = Worksheets.Count Then    Worksheets.Add After:=Worksheets(Worksheets.Count)    Set AcSht = ActiveSheet   End If   'ファイルの検索   orgHolder = ThisWorkbook.Path   ChDir myHolder   Fname = Application.GetOpenFilename("CSV ファイル(*.csv),*.csv")   If Fname = "False" Then    Exit Sub   End If   Application.ScreenUpdating = False   FNo = FreeFile()   Open Fname For Input As #FNo 'ファイルインポート   Do Until EOF(FNo)    Line Input #FNo, TextLine    '「""」 の除去    TextLine = Application.Substitute(TextLine, """", "")    LineBuf = Split(TextLine, ",")    U = UBound(LineBuf) '上限の添え字    If U >= 0 Then      AcSht.Cells(rw + j, 1).Resize(, U + 1).Value = LineBuf    End If    j = j + 1   Loop   'シート名をファイル名に書き換え   On Error Resume Next   AcSht.Name = Mid$(Fname, InStrRev(Fname, Application.PathSeparator) + 1) On Error GoTo 0   Application.ScreenUpdating = True   Close #FNo   Set AcSht = Nothing   ChDir orgHolder   MsgBox "終了しました", 64 End Sub

関連するQ&A