
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ファイルで保存する
長くなってすいません。助けてください
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
この回答への補足
オートフィルタでの条件抽出で
・Cではじまらない
・C1ではじまる
の条件抽出はうまくいきますが、
・AABCではじまるものの抽出ができませんでした。
それ以外は私の満足する仕様です。
No.2
- 回答日時:
こんばんは。
>・AABCではじまるものの抽出ができませんでした。
>それ以外は私の満足する仕様です。
それは、元のコードに、コメントブロックが入っていませんでしたか(^^;
だから、そうしたのですが……。
Criteria2:="=C1*" ', _ ←ここの右端の「'」を外します。
Operator:=xlOr, _
Criteria2:="=AABC*"
たぶん、これで、こちら側はOKですね。もし、そうだったら、次にの話に移ります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのVBAについて とある...
-
複数エクセルファイルの合成
-
コマンドプロンプトの「%1」と...
-
コマンドプロンプトのエラーに...
-
大量のフォルダからひとつのフ...
-
チームズのチャット画面にファ...
-
Thunderbirdで社内共有フォルダ...
-
#include <Windows.h>というヘ...
-
.txtではなく.logの方が良いの...
-
「win11-23H2」を「win11-24H2...
-
[teraterm] waitコマンドで停止...
-
xcopyで特定のファイルのみをコ...
-
特定フォルダ内のファイルを自...
-
「読み取りと実行」と「読み取...
-
リンクの張り付けかたを教えて...
-
.NETアプリを作ったときの .man...
-
ftp処理でmove(移動)を行いたい
-
binファイルを解凍したいの...
-
「営業秘密の漏洩」について
-
MFCで、FTPファイルの属性変更
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのVBAについて とある...
-
Python CSVファイルについて
-
複数エクセルファイルの合成
-
MAC フォルダ内のPDF件数とペー...
-
【Rコマンダー】データインポー...
-
FTPコマンド mgetでとまってし...
-
バッチ処理でcsvファイルの文字...
-
【Excel】Powerクエリーの取り...
-
エクセルマクロ2003による、複...
-
アクセスと同フォルダのCSVファ...
-
エクセル 指定範囲をCSV出力
-
csv形式からbmpを作成
-
複数のcsvファイルを統合、でも...
-
エクセルマクロ、複数のCSVファ...
-
Excelの帳票形式をアクセスに取...
-
複数のCSVファイルを読み込んで...
-
gnuplotで複数csvファイルから...
-
csvファイルをlinuxコマンドで...
-
EXCEL マクロが正常に動かなく...
-
csvファイルを結合するバッ...
おすすめ情報