• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:csvファイルを取り込み指定の形式にする)

CSVファイルを取り込み指定の形式にするマクロの作成方法

このQ&Aのポイント
  • Excelを使用してCSVファイルを取り込み、指定の形式に変換するマクロの作成方法
  • マクロを使って、CSVファイルを取り込んだ後に必要な列の削除やフィルタリングを行う手順
  • 取り込んだファイル名に基づいて、CSVファイルを保存する手順

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

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

こんばんは。 私は、ご質問が良くわかっていないけれども、いくつかを足してみました。 Sub GetMyCSV() Dim FileName As String   FileName = Application.GetOpenFilename _     ("Excel(*.csv),*.csv")     If FileName = "False" Then Exit Sub        Workbooks.Open FileName   With ActiveSheet    .Columns("C:H").ClearContents    .Columns(1).Delete Shift:=xlToLeft    .Range("A1").Value = "Number"    .Rows(2).Delete Shift:=xlUp    .UsedRange.Rows(1).AutoFilter _          Field:=1, _          Criteria1:="<>C*", _          Operator:=xlOr, _          Criteria2:="=C1*" ', _          Operator:=xlOr, _          Criteria2:="=AABC*"       .AutoFilter.Range.Offset(1).SpecialCells(xlCellTypeVisible).EntireRow.Delete   .AutoFilterMode = False   End With   '11文字よりも少ない場合はどうするか?   FileName = Left$(ActiveWorkbook.Name, 11)   Application.DisplayAlerts = False    ActiveWorkbook.SaveAs FileName & "ABC" & ".csv", xlCSV    ActiveWorkbook.Close False 'ブックは閉じる   Application.DisplayAlerts = True End Sub

m1z
質問者

補足

オートフィルタでの条件抽出で ・Cではじまらない ・C1ではじまる の条件抽出はうまくいきますが、 ・AABCではじまるものの抽出ができませんでした。 それ以外は私の満足する仕様です。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

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

こんばんは。 >・AABCではじまるものの抽出ができませんでした。 >それ以外は私の満足する仕様です。 それは、元のコードに、コメントブロックが入っていませんでしたか(^^; だから、そうしたのですが……。  Criteria2:="=C1*" ', _    ←ここの右端の「'」を外します。          Operator:=xlOr, _          Criteria2:="=AABC*"     たぶん、これで、こちら側はOKですね。もし、そうだったら、次にの話に移ります。

m1z
質問者

補足

ありがとうございます。 「'」を外して解決しました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 【エクセル マクロ】オートフィルター後の行削除

    Excel2003を使用しています。 オートフィルターを利用した作業をマクロの記録で処理していて 抽出されたデータを行ごと削除しているのですが Selection.AutoFilter Field:=1, Criteria1:="仕入先コード" Rows("4:2102").Select Selection.Delete shift:=xlUp Selection.AutoFilter Field:=2, Criteria1:="仕入先合計" Rows("7:2008").Select Selection.Delete shift:=xlUp …と、上記のような行番号で指定されてしまい 毎月データ数が増減するので、うまく処理出来ません。 (データは、テキストファイルからエクセルに取り込んでいます) 過去の例で近いものがあれば記述の中に取り込んでみましたが… これもうまくいきませんでした。 毎月変わるデータ数に対応できるマクロの記述を教えて下さい。 よろしくお願いします。

  • 同じ場所にあるファイル全てに対してマクロをかけたい

    <やりたいこと> マクロと同じフォルダに入っている全ファイル(そのときによりファイル数が変わる)に対し、 1、2行を削除し、オートフィルタを消し、A2にある「No.1」を「No1」(ドットを消す)にし、 ファイルを上書き保存するようにしたいです。 <今の状態と質問> 全ファイル(例は4つ)を開いた状態で下記のマクロをかければ、 希望の処理ができます。 が、複数ファイルが有る場合、ファイル全てを開いて実行するのは難ありです。 事前にファイルを開く手間をかけずに、マクロで全て処理する方法は どうしたらいいのでしょうか。 過去検索で、Workbooks.Open Filename:= (ThisWorkbook.Path & "\*.xls")などを 見よう見真似で追加したりしてみたものの動きませんでした。 今の段階(4ファイル開いておけば実行可能)のマクロは下記の通りです。 Sub test() ' ' Keyboard Shortcut: Ctrl+q ' Rows("1:2").Select Selection.Delete Shift:=xlUp Selection.AutoFilter Range("A1").Select ActiveCell.FormulaR1C1 = "No1" Range("A2").Select ActiveWorkbook.Save ActiveWindow.Close Rows("1:2").Select Selection.Delete Shift:=xlUp Selection.AutoFilter Range("A1").Select ActiveCell.FormulaR1C1 = "No1" Range("A2").Select ActiveWorkbook.Save ActiveWindow.Close Rows("1:2").Select Selection.Delete Shift:=xlUp Selection.AutoFilter Range("A1").Select ActiveCell.FormulaR1C1 = "No1" Range("A2").Select ActiveWorkbook.Save ActiveWindow.Close Rows("1:2").Select Selection.Delete Shift:=xlUp Selection.AutoFilter Range("A1").Select ActiveCell.FormulaR1C1 = "No1" Range("A2").Select ActiveWorkbook.Save ActiveWindow.Close End Sub

  • マクロ オートフィルタで困っています。

    マクロ オートフィルタで困っています。 1列目と2列目からそれぞれ条件をフィルタで抽出し、抽出された行を削除するマクロを組んだのですが(下記)、Bの条件が表にない場合に2行目から下が全て削除されてしまいます。 元の表は毎週変わるため、抽出する条件があるかないかはその時次第です。 オートフィルタにこだわってはいませんが、その他の抽出方法もいまいち分からず……。 どのようにすればよいのか、教えていただけますでしょうか。 宜しくお願い致します。 <マクロ> Sub Macro() Selection.AutoFilter Field:=1, Criteria1:="A" Selection.AutoFilter Field:=2, Criteria1:="B", Operator:=xlAnd Dim gyou(1) As Long gyou(0) = 2 gyou(1) = Range("A1").CurrentRegion.Rows.Count Rows(gyou(0) & ":" & gyou(1)).Select Selection.Delete Shift:=xlUp End Sub

  • オートフィルタをし選択・貼付をマクロにしたいのですが、対象データ表示される行が毎回違うのでうまくいきません。

    いつもお世話になっております。 どなたかご教示いただければ助かります。 ファイル(1)のデータの中からA行が830となっているものを、ファイル(2)のページ1の一番下の行に付け足し 同じようにファイル(1)からA行が1000となっているものを、ファイル(2)のページ2の一番下に付け足す という作業をマクロでしたいのですが、毎回830と1000がセルAの何行目に表示されるのかが異なっており、オートフィルタをかけた状態でマクロにするとマクロ作成時にたまたま表示されていた行数が指定されているので、別の日に違う行数をコピーしてしまい私が作成したマクロではうまくいきません。 どう変更すれば宜しいでしょうか? どうぞ宜しくお願い致します。 Workbooks.Open Filename:="mm.xls"    ←上記文でファイル(1) Sheets(DM).Select Rows("1:1").Select Selection.AutoFilter Selection.AutoFilter Field:=1, Criteria1:="<>*850*", Operator:=xlAnd, _ Criteria2:="<>*1000*" Range("A2").Select Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select Selection.EntireRow.Delete ActiveSheet.Rows("1:1").Select Selection.AutoFilter Windows("xx.xls").Activate  ←ファイル(2) Sheets("ll").Select   ←ページ1  ActiveSheet.Range("A1").Select Selection.End(xlDown).Select ActiveCell.Offset(1, 0).Activate Windows("mm.xls").Activate Rows("1:1").Select Selection.AutoFilter Selection.AutoFilter Field:=1, Criteria1:="1000" Rows("3:3").Select Selection.Copy Windows("xx.xls").Activate ActiveSheet.Paste Application.CutCopyMode = False Windows("xx.xls").Activate Sheets("pp").Select  ←ページ2 ActiveSheet.Range("A1").Select Selection.End(xlDown).Select ActiveCell.Offset(1, 0).Activate Windows("mm.xls").Activate Rows("1:1").Select Selection.AutoFilter Selection.AutoFilter Field:=1, Criteria1:="850" Rows("2:2").Select Selection.Copy Windows("xx.xls").Activate ActiveSheet.Paste Application.CutCopyMode = False ActiveWorkbook.Save Windows("mm.xls").Activate ActiveWindow.Close End Sub

  • Excelマクロでオートフィルターからコピペ

    ファイルのB列の値から0以外の値をオートフィルターで抽出し、値を、別のファイルのD列の一番下に貼りつけるマクロを作っていますがうまくいきません。 今作ったのは Sub macro1() If ActiveSheet.AutoFilterMode = False Then Range("A:G").Select Selection.AutoFilter Else Selection.AutoFilter Range("A:G").Select Selection.AutoFilter End If Selection.AutoFilter Field:=2, Criteria1:="<>0", Operator:=xlAnd Range("A1").Select Range("B2", Range("B2").End(xlDown)).Select Selection.Copy Windows("貼りつけるファイル名").Activate Cells(Rows.Count, 4).End(xlUp).Offset(1).Select ActiveSheet.Paste End Sub です。 フィルターで0以外の値を抽出しコピーまではできていますが、貼りつけるところでエラーがでます。 Microsoft Visual Basic 400 というエラーです。 何が悪いのか分かりません・・・。 分かる方いましたらご教授ください。よろしくお願いします。

  • 違う列で、2つの抽出条件を満たすには

    OSはXPで、Excel2003を使用しています。 下記のマクロですと、Key列に任意の文字があって、Key2列に任意の文字が入っていなくても抽出されますが、 その逆、Key列に任意の文字がなくて、Key2列に任意の文字が入っている場合は抽出されません。 前者の場合も、後者の場合も抽出される様にするには、どの様にすれば良いか教えて下さい。 ***** Sub test() Dim Key As String Dim Key2 As String Key = Application.InputBox("抽出列の番号を入れて下さい") Key2 = Application.InputBox("抽出列の番号を入れて下さい") Worksheets.add After:=ActiveSheet, Count:=1 ActiveSheet.Name = "BBBB" Sheets("AAAA").Activate Range("A1").Select Selection.AutoFilter Selection.AutoFilter Field:=Key, Criteria1:="*" Selection.AutoFilter Field:=Key2, Criteria1:="*" Selection.CurrentRegion.Copy Sheets("BBBB").Activate Range("A1").PasteSpecial Paste:=xlAll Selection.CurrentRegion.Select End Sub ******* 説明不足な所がございましたら追記致します。 何卒よろしくお願い致します。

  • フィルタで検索した行をマクロで削除する時のコード。

    フィルタで検索した行を一括して削除するマクロを作りました。 記録して加工したマクロで今のところ動くのですが、 理解不能の箇所があるので教えてください。 下記マクロはC列の空白行をフィルターで選択して、表示された行を削除するマクロです。(データは2行目から始まっていて、フィルターは1行目に行います。また、行は全て連続しています。) また、コメントを各コードにつけています。 ここで、コメント内の(1)で示した箇所は2行目を選ぶことになっているのですが、何故これで良いのでしょう?2行目のデータがフィルターにより隠れることもあるのですが、このコードできちんと動きます。 可視セルしか削除しないのなら、分かるのですが、 そのようなコードも無いようですし・・・ なぜこのコードで動くのか教えてください。 Rows("1:1").Select  '1行目を選ぶ Selection.AutoFilter  'オートフィルター Range("C1").Select   'C1を選ぶ Selection.AutoFilter Field:=3, Criteria1:="=" '空白行を探す。Field3は不明です Rows("2:2").Select  '(1) 2行目を選択 Range(Selection, Selection.End(xlDown)).Select '2行目から連続した最後の行までを選択 Selection.Delete Shift:=xlUp  '選んだところをDelして上に詰める。 Range("C1").Select  'C1を選ぶ Selection.AutoFilter Field:=3  'フィルタ解除 基本的なことかもしれませんが、ご教示頂ければ幸いです。 よろしくお願いします。

  • VB.netでのオートフィルタについて

    VB.netでプログラミングをしてるのですが、 xlapp.Selection.autofilter(field:=9, criteria1:="",operator:=xlor, Criteria2:="*予") でエラー(xlorが宣言されてません)で出てしまいます。 どうしたらいいのですか?

  • オートフィルタ マクロについて

    質問です。 オートフィルタで複数列を1つの条件で抽出したいのですが、教えてください。 たとえばA列が納品書No.・B列が受注No.・C列が商品No.なのですがすべて数字の為、出来ればInBox一回でA-C列を検索してほしいです。 指定納品書NO 受注NO 元品番 21812 3252608 77 21880 3307989 32B 22053 3389769 95414A 22050 3389770 67312H 22052 3389771 67312H 22050 3389773 67118H 以下の様なマクロを作ってみましたが、 A-C列全てに一致しないと抽出しないようです。 どなたかご教授いただけないでしょうか? マクロ '条件1 の設定 Dim 検索NO As Variant '抽出キーの入力指示 検索NO = InputBox("検索NOを入力てください。") 'キャンセルした場合の処理 If 検索NO = Empty Then Exit Sub End If 'オートフィルタがかかっていなかったらかける 'かかっていたら念の為一度解除し再設定 If ActiveSheet.AutoFilterMode = False Then Range("A2:O2").Select Selection.AutoFilter Else Selection.AutoFilter Range("A2:O2").Select Selection.AutoFilter End If Selection.AutoFilter Field:=1, _ Criteria1:=">=" & 検索NO, Operator:=xlAnd, Criteria2:=" " & 検索NO Selection.AutoFilter Field:=2, _ Criteria1:=">=" & 検索NO2, Operator:=xlAnd, Criteria2:=" " & 検索NO2 Selection.AutoFilter Field:=3, _ Criteria1:=">=" & 検索NO3, Operator:=xlAnd, Criteria2:=" " & 検索NO3 AutoFilterMode = False Application.ScreenUpdating = True End Sub よろしくお願いいたします。

  • エクセル マクロ:文字変更

    教えてください。 sheet5にデータがあります。 マクロを実行すると、一番右の列のセルに○があると●と書き換える 一番右の列のセルに△があると▲と書き換えるコードを作成しています。 下記のコードでは時間がかかってしまいます。 省略 If Sheets("sheet5").Cells(r, cmax).Value = "○" Then Sheets("sheet5").Cells(r, cmax).Value = "●" 省略 AutoFilterを使用してマクロを作成しましたが、列に○と△が両方無いと 範囲指定したセルがすべて▲となってしまいます。 下記コードをどのように手直ししたらよいのか教えて頂けないでしょうか。 よろしくお願いします。 Sub 文字変更() Dim c As Integer Dim cmax As Integer Dim rmax As Long With Sheets("sheet5") rmax = .Range("A3").End(xlDown).Row cmax = .Range("A3").End(xlToRight).Column .Rows("1:1").Select Selection.AutoFilter For c = 2 To cmax Selection.AutoFilter Field:=c, Criteria1:="○" .Cells(1, c).Offset(1, 0).Select .Range(Selection, Cells(rmax, c)).Value = "●" Selection.AutoFilter Field:=c, Criteria1:="△" .Cells(1, c).Offset(1, 0).Select .Range(Selection, Cells(rmax, c)).Value = "▲" Selection.AutoFilter Field:=c Next c End With Selection.AutoFilter End Sub

このQ&Aのポイント
  • 改善を行ってもDCP-J4140Nでのズレやかすれが解消されず、自動補正も手動でも数字がほぼ見えない状態です。
  • お使いの環境はiOSで、無線LANで接続しています。
  • 詳細な製品名が不明ですが、ブラザー製品に関する質問です。
回答を見る

専門家に質問してみよう