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