教えてください。
現在、VBAを使用して、CSVファイルの編集をしたいと考えています。
フォルダ内に数個のCSVファイルがあり、それらにすべて同じ処理(行削除など)をしたいのです。
下記のようなプログラムです。
Sub getting()
Dim myPath As String
Dim myFName As String
Dim FCnt As Integer
Dim A(500) As String
MsgBox CurDir()
Workbooks("自動処理.xls").Activate
myPath = ActiveWorkbook.Path
MsgBox myPath
ChDir myPath
FCut = 0
myFName = Dir("*.csv")
If myFName <> "" Then
FCut = FCut + 1
A(FCut) = myFName
Do
myFName = Dir()
If myFName <> "" Then
FCut = FCut + 1
A(FCut) = myFName
MsgBox A(FCut)
Else
Exit Do
End If
Loop
End If
MsgBox "「" & myPath & "」には、" & FCut & "個のファイルがあります。"
Dim i As Integer
Dim seet As String
Dim ws As Object
Dim FullPath As String
For i = 1 To 1
seet = Left(A(1), 6)
FullPath = myPath & "\" & A(i)
'Workbooks.Open(FullPath).Activate
Open FullPath For Append As #1
Print #1, Rows("1:1").Select
Selection.Delete Shift:=xlUp
Rows("2:2").Select
Selection.Delete Shift:=xlUp
Range("A1").Select
Print #1, Range("A1").Value = ""
Print #1, Range("A1").Value = "COMP_NAME"
Print #1, Range("B1").Select
Print #1, ActiveCell.Value; "PC_OS"
Print #1, Range("C1").Select
Print #1, ActiveCell.Value = "OS_SUB_VERS"
Print #1, Range("D1").Select
Print #1, ActiveCell.Value = "IP_ADDR"
Print #1, Range("E1").Select
Print #1, ActiveCell.Value = "LOCATION "
Close #1
' Workbooks(A(i)).Save
' Workbooks(A(i)).Close savechanges:=False
Next i
End Sub
教えていただきたいのは、どうにかworkbook.openを使わず、ファイルを編集できるところまでいったのですが、ファイルを開かずに行を削除することができません。
>Print #1, Rows("1:1").Select
>Selection.Delete Shift:=xlUp
>Rows("2:2").Select
>Selection.Delete Shift:=xlUp
ファイルを開かずに行削除をできるものなのでしょうか。
ご存知の方がいれば教えてください。
よろしくお願いいたします。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
Private Sub CommandButton1_Click()
Dim I As Integer
Dim N As Integer
Dim M As Integer
Dim strFiles() As String
Dim strDatas() As String
strFiles() = GetFileList("C:\Temp\", "*.csv")
N = UBound(strFiles()) - 1
For I = 0 To N
strDatas() = FileReadArray("C:\Temp\" & strFiles(I))
M = UBound(strDatas())
If M > 0 Then
strDatas(1) = "削除行"
FileWrite Str(I) & ".csv", Replace(Join(strDatas(), vbCrLf), "削除行" & vbCrLf, "")
End If
Next I
End Sub
エクセルは実際には操作したこともない門外漢ですので上述のようなアイデを提示します。
1
2
3
という3行の Test1.csv、Test2.csv、Test3.csv の2行目を削除する場合ですが・・・。
1、配列 strFiles()に対象ファイルを読み込む。
2、各ファイルの行データを配列 strDatas()に読み込む。
3、2行目が存在する場合は、2行目を"削除行"に書き換える。
4、 "削除行" + 改行コードを空値に置換して新ファイルに書き込む。
これで、首尾よく2行目は削除されます。
なお、 GetFileList()、FileReadArray()、FileWrite() の関数は必要であれば補足します。
さっそくのご回答、ありがとうございます。
上記の方法ですが、すごいの一言でした。
一度ためしてみます。
ただ、ファイル数が大体80個、1つのファイルサイズが5Mほどあり、
毎回配列に読むと、エクセルファイルを開くのと同様、時間がかかってしまうのではとも思います。
できれば、純粋にファイルを開かずに、該当ファイルを直接編集と言う方法があれば、ぜひご教授ください。
よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) VBAが止まります。 1 2022/09/02 14:51
- Visual Basic(VBA) 動きっぱなしです。止め方とプロシージャの間違いを教えて下さい! 5 2022/08/15 23:08
- Visual Basic(VBA) countifsについての質問 3 2023/03/08 13:45
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
このQ&Aを見た人はこんなQ&Aも見ています
-
風水の観点で選ぶ観葉植物とは?置き場所や上げたい運気ごとの注意点を紹介!
観葉植物で運気をアップするコツを、風水デザイン1級建築士の福島昌彦さんに伺った。
-
VBA:Openステートメントで開いたCSVファイルの特定行を削除する方法
その他(プログラミング・Web制作)
-
CSVファイルの特定行の削除
Visual Basic(VBA)
-
テキストファイルの特定行の削除方法
Visual Basic(VBA)
-
-
4
VBAでCSVファイルの特定行を書き換える方法はあるのでしょうか?
その他(プログラミング・Web制作)
-
5
vbsで最後の行を削除する
その他(プログラミング・Web制作)
-
6
Access インポート
Access(アクセス)
-
7
エクセルのマクロで行と列の削除してCSV保存
Excel(エクセル)
-
8
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
9
最終行の改行について
Visual Basic(VBA)
-
10
ファイルの先頭行を全て削除したい
Windows Vista・XP
-
11
【VBA】テキストファイルを指定行数からの読み込み
Visual Basic(VBA)
-
12
テキストファイルの途中行から読み込む方法について
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
カンマ区切りのCSVファイルから...
-
VBAでcsvファイルを読み込んで...
-
複数のcsvファイルをExcelに一...
-
csvファイル 項目数取得
-
Visual C++によるcsvファイルの...
-
Excelでcsvのフィールドが減る
-
データ解析ソフトRでのファイル...
-
vb2010でCSVファイルを並び替え...
-
CSVの読み込み処理について
-
Csvから1行ずつ変数に格納する...
-
csvファイルのデータの一部を取...
-
巨大なCSVの加工(指定列のみの...
-
CSVファイル作成
-
バッチでCSVを処理する時、空の...
-
COBOL85でのCSVファ...
-
マクロから出力されるcsvのダブ...
-
CSV形式での保存時に”文字列...
-
CSVファイルを折れ線グラフ化す...
-
csvファイルでの日付設定「yyyy...
-
エクセル形式のファイルの読み込み
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
カンマ区切りのCSVファイルから...
-
CSV形式での保存時に”文字列...
-
複数のcsvファイルをExcelに一...
-
csvファイル 項目数取得
-
csvファイルでの日付設定「yyyy...
-
バッチでCSVを処理する時、空の...
-
マクロから出力されるcsvのダブ...
-
csvファイルを列数ごとに分割す...
-
csvファイルのデータの一部を取...
-
エクセル形式のファイルの読み込み
-
エクセルVBA 大容量CSVファイル...
-
CSVファイル作成
-
EXCEL|csvで保存→開くcsvを閉じる
-
CSVファイルの項目行を削除...
-
巨大なCSVの加工(指定列のみの...
-
データ解析ソフトRでのファイル...
-
VBAでCSVファイルのデータを集...
-
【ExcelVBA】UTF-8の文字コード...
-
【C#】パス名で無効な文字
-
【エクセル マクロ】読み込ん...
おすすめ情報