[[20170320123710]] 『テキスト読み込み→フィルタ抽出』(のりたま) ページの最後に飛ぶ

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

 

『テキスト読み込み→フィルタ抽出』(のりたま)

親フォルダ(月ごとにフォルダ名が変わります)

数個ある子フォルダのそれぞれに、同名のファイルが入っています。テキストファイルのようなものです。

毎回、子フォルダごとにそのファイルをexcelでテキスト読み込み(固定長フィールド)し、フィルタをかけ、求めるデータを抽出しています。

各フォルダごとに同じ操作を行っており、なかなか手間がかかるもので、
マクロ等で一発!とは言わないまでも、効率よくできないでしょうか?

お知恵を拝借したいです。
よろしくお願いします。

< 使用 Excel:Excel2013、使用 OS:Windows7 >


どちらでしょうか

1)毎月1回、数個のファイルを処理する
2)月数回、毎回1個のファイルを処理する

(マナ) 2017/03/20(月) 13:08


マナさま

コメントありがとうございます。
わかりづらく申し訳ありません。

「1)毎月1回、数個のファイルを処理する」です。
(のりたま) 2017/03/21(火) 13:27


手作業では、どういう作業をしているのか
箇条書きで説明できますか。

例えば、

>『テキスト読み込み→フィルタ抽出』

この操作を複数ファイルについて実行した後が不明です。
抽出結果をどうしているのですか。

1)個別のファイルに保存
2)1つのブックにシートを分けて保存
3)1つのシートにまとめて保存

自動化したい全操作を教えてください。

わたしは、昼間は書込みできませんので、
解決まで時間がかかるかもしれません。
それでは困るというのであれば、いってください。
他の回答者が、コードを書いてくださると思います。

(マナ) 2017/03/21(火) 20:34


マナさま

言葉足らずで申し訳ありません。
現在行っている作業を書き出してみます。

・ファイルをexcelでテキストファイル読み込み
・オートフィルタ
・ある列を「規定の値以上」で抽出
・抽出結果のうち、必要な情報があるセルのみコピー
・別のexcelにペースト
(このexcelは共通です。1つのシートにまとめて保存、にあたると思います)

これを子フォルダごとに繰り返します。

お気遣いありがとうございます。
特に急ぐものではありません。

(のりたま) 2017/03/22(水) 17:33


「マクロの記録」をご存知ですか。
使ったことがなければ、ネットで検索して使用方法を調べると良いです。

まずは、
テキストファイル読み込み
の操作を記録してみてください。

そのあと、
オートフィルターで抽出
の操作についても記録してみてください。

どのように記録されたか教えてください。

(マナ) 2017/03/22(水) 19:51


マナさま

お世話になります。
とりあえず、オートフィルタで抽出するところまで記録してみました。

 ChDir "(共通のexcelが入っているフォルダ)"
    Workbooks.Open Filename:="(共通のexcel).xlsx"
    Sheets("(ペーストしたデータを使うシート)").Select
    Range("B2:J30").Select
    Selection.SpecialCells(xlCellTypeConstants, 23).Select
    Selection.ClearContents
    Sheets("(ペーストするシート)").Select
    Range("A3:L13").Select
    Selection.ClearContents
    Range("A3").Select
    With ActiveSheet.QueryTables.Add(Connection:= _
        "(テキストファイル)",
Destination:=Range("$A$3"))
        .Name = "DATA."
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 932
        .TextFileStartRow = 1
        .TextFileParseType = xlFixedWidth
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1)
        .TextFileFixedColumnWidths = Array(42, 1, 7, 30, 10, 21, 1)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
    ActiveSheet.Range("$A$2:$K$1036").AutoFilter Field:=7,
Criteria1:=">=2", _
        Operator:=xlAnd
End Sub

ちゃんとできているかわかりませんが、よろしくお願いします。

(のりたま) 2017/03/23(木) 22:46


共通のexcelというのがよくわわかりませんが
こんな流れのマクロで出来そうです。
それとも誤解がありそうですか?

1)親フォルダ選択
2)作業用シート作成
3)子フォルダを調べる
4)テキストファイルが存在するか確認
5)テキストファイルを、作業用シートに読み込み
6)他の子フォルダについても3)〜5)を繰り返す
7)オートフィルターで抽出(あるいは、フィルターオプション?)
8)抽出結果を「共通のexcel」に転記
9)作業用シート削除

(マナ) 2017/03/24(金) 18:22


>Sheets("(ペーストするシート)").Select

作業用シートは、もうあるのですね。
ならば、こうですか。

1)親フォルダ選択
2)子フォルダを調べる
3)テキストファイルが存在するか確認
4)テキストファイルを、作業用シートに読み込み
5)他の子フォルダについても2)〜4)を繰り返す
6)オートフィルターで抽出(あるいは、フィルターオプション?)
7)抽出結果を「共通のexcel」に転記
8)作業用シート初期化

(マナ) 2017/03/24(金) 18:39


コメント返信:

[ 一覧(最新更新順) ]


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