for /f "tokens=1-5 delims=," %%A in (TEST_DATA.csv) do (   MsgBox MyFol & "を処理します。" 今日はちょっと短いですが、Windowsバッチについて。, 業務でPGを書いているとよくあるのがCSVファイルの取り込み。 その行を除いて別のファイルへコピーするという方法が一般的ですね。 最初のファイルのみ1行目を出力.   Set MyObj = CreateObject("Shell.Application") _ こんな感じです。, ※各種外部サービスのアカウントをお持ちの方はこちらから簡単に登録できます。   'ThisWorkbookにシートを追加して処理 茨城,男       '次のファイルへ お世話になります。m(__)m 出身県,性別 txtから特定の行のみをとりだし、変数に入れたいです。 どうも見つかりません。ご存知の方がいればお教え願いたいと思います。, batファイルを作成していて、   Dim MyFnm As String Range("A65536").End(xlUp).Offset(1, 0).Select Workbooks(buf).Activate このファイルをEXCEL形式で開くと、1行目にフィールド名(A~Z列で固定)、2行目以降にデータが入っています。行数はファイルにより1~100行程度で変動します。   Set MyObj = Nothing       OutTmp = FileName & "," & LineNum & "," & ReadCsv.ReadLine() というフリーのテキストエディタをインストールすると、YokkaGrepというソフトがセットでインストールされます。 今、複数のCSVファイルがあり全てを結合させるのにコマンドプロンプトを利用し、         .TextFilePlatform = xlWindows このCSVデータをすべてひとつのファイルに結合したいのですが、     x = CSVQRY(ws, fd & fn, ws.Cells(n, 2), s) 実は、これだと元が何というファイルのCSVだったかが結合後ではわからなくなります。  do until myfile = "" (Input_1.txt)          n = IIf(n = 0, 1, n + n1)         .Refresh False       'ファイル名をA列にセット   Set obj = Nothing Next   If MyObj Is Nothi...続きを読む, batファイルを作成していて、         .Delete   close #2 1.Bという空のファイルを生成する。  Set files = Application.FileSearch 111 buf = Dir(Sheets("Sheet1").Range("A1").Value & "\*.xls")   Dim n  As Long   If MyObj Is Nothing Then Exit Sub   Dim i  As Long エクセル2010に変更した後、マクロが使えなくなりました。  dim myPath as string   Dim n   As Long        .BrowseForFolder(0, "SelectFolder", 0) -----------------------------------------    cBook.ActiveSheet.UsedRange.Copy for /F "tokens=3,5 delims=," %%i IN (TEST_DATA.csv) DO @(if %%j==987 set %%i=654 echo %i %j ) 現在考えていることは、     Err.Clear 1.for文を使用して指定のカラムを抜く(3カラム目と5カラム目を抜く)) ------------------- Private Sub try() (Merge.txt) Function mySearch(files As FileSearch, myDir As String) As Integer を参照してみてください。同じ質問があったので気がつきました。, すみません。質問を勘違いしていました。 まあ、適当に改変して、上記の問題を解決してください。, csvファイル数は700~1000個程度でひとつのフォルダに格納されています。 Dim j 123,456,789,321,987  mypath = thisworkbook.path & "\" Private Sub try() Sub CSVまとめsample() (12)と書かれた文字列がある行だけを抜きだしたり やはり既出回答でも指摘されているように、勿論マクロ有効で開いてマクロをキチンと実行する必要があります。, こちらのような質問相談掲示板でも非常に良く寄せられるご質問の一種ですが、あなたが発見したマクロでやってるようにCSVファイルをエクセルで開いて操作すると、しばしばデータが変わってしまいます。今まで全く問題が無かったのでそこは絶対心配無いという事なら、勿論構いませんが。 End Function, しばらく前に書いた事があるコードです。   Dim ret As String All Rights Reserved. お客様の許可なしに外部サービスに投稿することはございませんのでご安心ください。, WindowsでPythonで外部コマンドを動作させる時はどうしているのでしょうか?, http://www.microsoft.com/japan/msdn/library/ja/j …, http://www.roy.hi-ho.ne.jp/mutaguchi/wsh/wshtop. 行いたい動作は、 お願いします。, 書き換えるというよりは、   Dim MyObj As Object       '行数overしてもエラーかからないため取り込み直し End Sub   Dim x  As Long   open mypath & myfile for input as #2 以下のコードをテキストファイルにコピーし、適当な名前.vbsで保存します。 Windowsのコマンドプロンプトはデフォルトで文字コードがSJISであるため、chcp 65001で文字コードを設定し直しています。               Destination:=rs)   Dim n   As Long ・結合後の1行目には項目名を残したい。    cBook.Close '----ここからコード   If objRE.Test(Ucase(FileName)) Then       Set ws = Sheets.Add 検索結果をテキストファイルやcsvファイルに出力することや、検索文字列を含む行を削除などの機能もあります。 sub macro1() ….                  Destination:=.Range("B" & n)) Workbooks(buf).Close SaveChanges:=False   If Len(fd) = 0& Then Exit Sub ------------------- 列の項目は定形で、10~200行のデータが書かれたCSVファイルが1つのフォルダに多数あります。 特定の文字列が書かれた行だけを   Else   Dim MyFnm As String '--------------------------------------------------------------------- 3.CCC 既出回答にあるようにエクセルとか使わずにバッチで処理してしまう方が私も簡単とは思いますが、そこはまぁご質問なので、とりあえずベタなマクロでやらせてみると…       MyFnm = Dir() Application.CutCopyMode = False       x = CSVQRY(ws, fd & fn, ws.Cells(n, 2), 1&) 今まで私の周りにはあまりバッチファイルを作ろうとする人がいませんでしたが、単純な処理であればササッと作れてしまうので、広めていきたいです。, SI企業の上流SEがトノサマ商売を脱却するために技術を学ぶためのブログ 行いたい動作は、     '外部データ取り込み こんにちは。 …     Do Until ReadCsv.AtEndOfStream = True Sheets("Sheet1").Range("A1:J1000").Copy 出身県,性別   Dim MyStr As String             ByRef rs As Range, _   Dim ret As String   Dim n  As Long 神奈川,男 ここで、(できればですが)EXCELにマージするにあたり、1行目のみフィールドの値、2行目以降にそれぞれのcsvの2行目以降データの値を入れていくようにしたいです。つまり、フィールド名の行が何行も出てくるのを避けたいです。 For Each FileName In Folder.Files findstr /n /r "." もっと他の条件があれば、さらに複雑な処理になります。, txtファイルで Dim objRE     End If 詳しくご説明されているようなのでチャレンジしてみたいと思います。, 「バッチファイル 書き方」に関するQ&A: DOSのバッチで、テキストファイル中の文字を置換したい, 「目 書き方」に関するQ&A: 民事では控訴しても一審の判決を変えないのが一般的?, 「Python Windows」に関するQ&A: コマンドプロンプトからファイル実行について, ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!, バッチにて複数のcsvファイルを結合するときに、対象のファイルを日付で範囲指定したい, 今仕事で、CSVファイルが400ファイル程あり、これを一つの 456    type Input*.txt > Merge.txt ブログを報告する, アイドルに裏切られたとか言ってるけどお前らそれAV女優が結婚しても同じこと言えんの?.   If obj Is Nothing Then Exit Function そんなときにこのバッチファイルを使うと便利ですね。, 非常に単純で、バッチファイルが存在しているフォルダ配下にある.csvファイルを、1行目を無視してmerge.csvファイルにマージするものです。個別に処理の内容を見てみます。, 今回のバッチファイルでは、取り込み対象のCSVファイルの文字コードがUTF-8であることを想定しています。 buf = Dir(Sheets("Sheet1").Range("A1").Value & "\*.xls") Set Folder = fso.GetFolder(strScriptPath)     If i > 1 Then    .Filename = "*.csv"  loop             ByVal sr As Long) As Long       LineNum = LineNum + 1   With Sheets.Add     ret = obj.Items.Item.Path & "\"  on error resume next   Dim fn As String 1.AAA 3.テキストファイルの2行目を変数Textに入れる(set Text=222)     .Parent.Names(.Name).Delete ActiveSheet.Paste 上の階層から渡ってきたファイル名(%%a)の中身に対し、1行目をスキップして処理を実施しています。 Dim j   MyFol = MyObj.self.Path & "\" 3.654に変更した変数を3カラム目の値として入れる saburo-----B.csv-----123. errHndler: -------------------      .Cells(.Range("A65536").End(xlUp).Row, 1).     ReadCsv.Close() 栃木,女   End With Workbooks(buf).Activate errChk: 神奈川,男 ・   x = 1   Dim x  As Long     .BrowseForFolder(0, "SelectFolder", 0) 私は more を思い付かなかったまでで...     ret = i & "files.done" どなたか修正して頂けないでしょうか? バッチの概要 まずはバッチファイルの中身です。 @echo off chcp 65001 for /f %%a in ('dir /s /b /a-d *.c… SI業界で脱トノサマSE 上流SI企業のSEがトノサマ商売を脱却するために技術を学ぶためのブログ. Range("A65536").End(xlUp).Offset(1, 0).Select 全レコードに挿入されているのが理想です。 111,222,333,444,555     'ファイル名をA列にセット 結果はout.csvというファイルに書き出しています。   Application.ScreenUpdating = True   On Error GoTo errHndler   CSVQRY = -1 Sub CSVまとめsample() 'スクリプト名を含まないフルパスを編集する Do While buf <> ""   do until eof(2) Dim ReadCsv バッチファイルを使用して、csvファイルの読み込み~編集を行いたいと思っております '--------------------------------------------------------------------- そろってヘッダが付いてる場合など 複数のcsv …  dim myFile a...続きを読む, バッチでファイルの編集をしたい 結合.txtの中身は Loop   'フォルダを選択する 上記のcsvファイルを読み込み、 栃木,女   loop   '選択なければ処理を抜ける ・それぞれのファイルの1行目にある項目データを削除したい。 3.CCC   Set MyObj = CreateObject("Shell.Application") _   Dim i   As Long End Sub テキストファイルの内容は以下の通りです。 2.BBB _ 主にプログラミングやサーバ構築、Apple関連について書きます。たまに別のことも, chika0321さんは、はてなブログを使っています。あなたもはてなブログをはじめてみませんか?, Powered by Hatena Blog   Dim n1  As Long 上記のcsvファイルを読み込み、 ※今手元にWindowsの環境がないので、イメージで書きます。, Excelやテキストエディタを使ってももちろん良いのですが、繰り返し実行したりする可能性がある場合は手軽に実行できるようにしたいですね。世の中にはバッチ芸人なる職人技を持った人もいるみたいです(類義語:シェル職人)。 参考になるようだったら応用してみてください。 どのような手があるか教えて下さい。, 「Python Windows」に関するQ&A: WindowsでPythonで外部コマンドを動作させる時はどうしているのでしょうか?, 「Python 環境」に関するQ&A: python 環境変数を設定したい, G_Aminoさん、早速のご回答と詳しいご説明ありがとうございます。 _   End If Code Page Identifiers (Windows), カレントパスより下に存在する.csvファイルごとに処理を実施しています。dir /s /b /a-d *.csvの処理結果を%%aで受取り、for文を回しています。     MyStr = "検索条件を満たすファイルはありません。" どのようにすれば良いか教えて下さい。, No.4です。 という処理を実行させたいのですが、   fd = ThisWorkbook.Path & "\" Dim buf As String, i As Long 特にマスタ登録する際にはよく使われると思います。 '新規に作成するファイル  close #1 となる。結局 for 文を使いまわす事になります。 set fso = Nothing   Next i   myfile = dir() 200のファイルが同じフォルダにあること前提で書いてます。 ただ、あと、先頭の”3:” をどうやって切り離すか? と言う問題にぶつかる。さらにファイルに先頭に”3:”があった場合、どうするのか? さらに、findstr の正規表現の動作が??? 表示すれるのはいいが、変数にどうやってセットするのか?   Dim MyFol As String   Dim i  As Long 実際の値、行数は違いますが、こんな感じに文字列が複数行並んでいます。   Dim MyObj As Object Dim fso  myfile = dir(mypath & "*.csv") 4.変数Textを使用し色々処理をする     ret = Err.Number & vbTab & Err.Description   Dim ws As Worksheet とすると、2つめのタイトルが付与されてしまいます。    地道にコピペするのは時間がかかるのでマクロで処理を行いたいと思います。 >新しいブックで一つのシートにまとめなくてはいけません     'Dir関数を使って指定フォルダ内csvファイルを順次処理 大量にあるcsvファイルを1つのcsvて列方向にまとめたいです。 現在使用しているコードは下記であり、行方向に結合することはできました。これを行方向ではなく、列方向にまとめる方法はございますでしょうか。ご回答の程、よろしくお願いいたします。 -----ソースコード-----Option Sub Sample1() Copyright (C) 2001 - 2020 hatena. ・       OutTxt.WriteLine(OutTmp)   Application.ScreenUpdating = False   Dim s  As Long 1つのブックで外部データの取り込みでCSVを次々に選択して strScriptPath = Replace(WScript.ScriptFullName,WScript.ScriptName,"") Dim strScriptPath 内容: 昔書いた事があるサンプルです。 元ファイル:TEST_DATA.csv End Sub よろしくお願いします。, すみません。質問を勘違いしていました。   'ActiveWorkbookにシートを追加して処理     MyFnm = Dir(MyFol & "*.csv") set Folder = Nothing 例えば 現在考えていることは、 参考になるようだったら応用してみてください。 End Function, 過去の質問の中から、素晴らしい結合のマクロを見つけましたが、パソコンをwindows7にエクセルを End Function データの持ち方として 千葉,女 ○CSVファイル2 222 Application.CutCop...続きを読む, CSVファイルの特定行を削除するということは可能なのでしょうか? どなたか修正して頂けないでしょうか?   If i > 0 Then