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

質問です
c:\test\の中に複数のcsvファイルがあります
A列に
012-3333-4444
の文字列が1行目からあります
-ハイフンから区切るマクロをおねがいします
B列以降に文字データがあるため
B、C列の空間をつくりB列以降のデータはD列以降に移動する
結果
A列 B列 C列
012 3333 4444
となるようなマクロそれぞれの列は文字列でおねがいします
データが多い場合を想定して早いマクロができればお願いします
よろしくお願いします

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

▽最新の回答へ

1 ● きゃづみぃ
●100ポイント ベストアンサー
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 String
Application.DisplayAlerts = False
 
f = Dir(p & "*." & s, vbNormal)

Do While f <> ""
 k = 0
 ReDim bk(k)
 
 ch1 = FreeFile
 Open p & f For Input As #ch1
 
 Do While Not EOF(ch1)  'ファイルの終端かどうかを確認します
 Line Input #ch1, textline  'データ行を読み込みます
 ReDim Preserve bk(k)
 bk(k) = textline
 k = k + 1
 Loop
 Close #ch1
 
 ch2 = FreeFile
 Open p & f For Output As #ch2
 For i = 0 To k - 1
 textline = bk(i)
 aa = InStr(textline, ",")
 If aa = 0 Then aa = Len(textline)
 ab = Left(textline, aa)
 ab = Replace(ab, "-", ",")
 textline = ab & Right(textline, Len(textline) - aa)
 
 Print #ch2, textline  'データの書き込みをします
 Next i
 Close #ch2
 
 f = Dir
Loop

Application.DisplayAlerts = True

End Sub


A列にハイフンがある分、挿入されます。
ひとつもない場合は、挿入されません。


inosisiさんのコメント
ありがとうございます A列の012の0が取れないようにお願いします 現在は12となってしまいます よろしくお願いします

きゃづみぃさんのコメント
CSV上は とれてないはずです。

きゃづみぃさんのコメント
ま、そのままエクセルで開くと とれちゃいますね。 ab = Replace(ab, "-", ",") を ab = "'" & Replace(ab, "-", ",'") に 置き換えればいいかな。

inosisiさんのコメント
ありがとうございました CSVで開くと大丈夫でしたすみませんでした ケースバイケースで使い分けたいと思います 速さも満足できます 挿入もOKでした
関連質問

●質問をもっと探す●



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