こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

csvファイルを取り込み指定の形式にする

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ファイルで保存する

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

投稿日時 - 2007-05-22 00:09:00

QNo.3019830

m1z

すぐに回答ほしいです

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

こんばんは。

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

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

投稿日時 - 2007-05-22 23:56:39

補足

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

投稿日時 - 2007-05-23 22:48:57

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

こんばんは。

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

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


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

投稿日時 - 2007-05-24 00:32:45

補足

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

投稿日時 - 2007-05-30 01:49:35

あなたにオススメの質問