重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

EXCELでcsvファイルを取り込み指定の形式にして、csvファイルとして
保存するマクロを組みたいです。

途中までマクロの記録機能を使い作ったものです。

Sub csvファイルの取り込み()
'Windows("a.csv").Activate '←ここでファイルを選択する形式にしたい。
Columns("C:H").Select
Selection.ClearContents
Columns("A:A").Select
Selection.Delete Shift:=xlToLeft
Range("A1").Select
ActiveCell.FormulaR1C1 = "Number"
Rows("2:2").Select
Selection.Delete Shift:=xlUp
Rows("1:1").Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:="<>C*", Operator:=xlOr, _
Criteria2:="=C1*" ', Operator:=xlOr, Criteria2:="=AABC*"
Rows("4:13").Select '←ここをフィルタで選択された行を削除するように変更したい。
Selection.Delete Shift:=xlUp
Selection.AutoFilter Field:=1
Range("A1").Select
End Sub

マクロの流れとして
・まずcsvファイルを取り込む
・C列からH列までを削除(もしくは数値をクリア)
・その後、A列を削除
・A1セルに文字があるのでその文字を"Number"に変更
・A列にある指定の文字列をフィルタで抽出してその行を削除
 (抽出文字列は以下の3パターン。)
Cで始まらない文字を抽出
or
C1で始まる文字を抽出
or
AABCで始まる文字を抽出
・以上の作業を終了したら取り込んだファイル名の
左から11文字+"ABC"の文字をあわせてファイル名として
CSVファイルで保存する

長くなってすいません。助けてください

A 回答 (2件)

こんばんは。



私は、ご質問が良くわかっていないけれども、いくつかを足してみました。

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

この回答への補足

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

補足日時:2007/05/23 22:48
    • good
    • 0

こんばんは。



>・AABCではじまるものの抽出ができませんでした。
>それ以外は私の満足する仕様です。

それは、元のコードに、コメントブロックが入っていませんでしたか(^^;
だから、そうしたのですが……。


 Criteria2:="=C1*" ', _    ←ここの右端の「'」を外します。
         Operator:=xlOr, _
         Criteria2:="=AABC*"
   
たぶん、これで、こちら側はOKですね。もし、そうだったら、次にの話に移ります。

この回答への補足

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

補足日時:2007/05/30 01:49
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!