質問です

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

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2012/11/27 20:01:18
  • 終了:2012/12/02 18:37:36

ベストアンサー

id:taknt No.1

きゃづみぃ回答回数13537ベストアンサー獲得回数11982012/11/27 20:11:32

ポイント100pt
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列にハイフンがある分、挿入されます。
ひとつもない場合は、挿入されません。

他2件のコメントを見る
id:taknt

ま、そのままエクセルで開くと とれちゃいますね。

ab = Replace(ab, "-", ",")



ab = "'" & Replace(ab, "-", ",'")

に 置き換えればいいかな。

2012/11/27 23:02:18
id:inosisi4141

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

2012/11/28 10:42:59

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません