人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

質問です。
c:\test\のフォルダーの中に複数のCSVファイルがあります。
データは1行目から複数行ですA列は属性文字です

データA列だけ残し他のB列以降のデータを削除するマクロをお願いします
B列以降には空白列もあります



●質問者: inosisi
●カテゴリ:コンピュータ インターネット
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● きゃづみぃ
●100ポイント ベストアンサー
Public w As Workbook
Public 読み込み数 As Long
Public カラム数 As Integer

Sub main()
Dim p As String
'対象フォルダを指定してください。
'このフォルダに この実行用のブックは 入れないでください。
p = "C:\test\"

'処理対象となる拡張子を指定して 呼び出します。
Call jikkou(p, "csv")

End Sub


Sub jikkou(p As String, s As String)

Dim bk As Workbook
Dim gg As Long
Application.DisplayAlerts = False

Dim fdb() As String
 
a = 1
f = Dir(p & "*." & s, vbNormal)
Do While f <> ""
 ReDim Preserve fdb(a)
 fdb(a - 1) = f
 a = a + 1
 f = Dir
Loop


For aaa = 0 To a - 2
 f = fdb(aaa)
 csvImp (p & f)
Next aaa

Application.DisplayAlerts = True

End Sub


Sub csvImp(csFName As String)

Const csDelimiter As String = ","

Dim FNo As Integer
Dim FN2 As Integer

Dim wsObj As Worksheet

Dim strGet As String

Dim outd() As String

Dim i As Long

FNo = FreeFile
If Dir(csFName) <> "" Then

 Open csFName For Input As #FNo
 a = 1
 Do Until EOF(FNo)
 Line Input #FNo, strGet
 ReDim Preserve outd(a)
 If strGet <> "" Then
 outd(a - 1) = Split(strGet, csDelimiter)(0)
 End If
 a = a + 1
 Loop
 
 Close
 
 FN2 = FreeFile
 Open csFName For Output As #FN2
 For b = 0 To a - 2
 Print #FN2, outd(b)
 Next b
 Close
End If

End Sub

inosisiさんのコメント
ありがとうございました。 上手く行きました。 以前分の質問で申し訳ないのですがF列の1,2,3,4,5,6,7,8,9,10,11,12 以外を削除するマクロのことですが頭に数字たとえば10が付いた「10aaaa」みたいな文字があると消えないで残りますが削除する方法はありますか数字だけが残れば良いのですがすみません遅くなりまして

inosisiさんのコメント
B列以降になにもない場合A列のみのデータファイルがあるとA列の1行のセル中に2つのデータが入ってしまうのは修正できますか?

inosisiさんのコメント
すみませんこちらのデータの最後に,が付いていてそれがいたずらしていたみたいですマクロのせいではありませんでした

きゃづみぃさんのコメント
ああ カンマありは CSVでは 使えないですね。 なので エクセルは タブ区切りなのです。

きゃづみぃさんのコメント
カンマありとかだと ""でくるまないとダメです。

inosisiさんのコメント
ありがとうございます。 イレギュラーでたまたまカンマありが紛れ込んでしまったので都度区切り文字呼び込みで外して使用しますありがとうございました
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ