質問です

c:\test\のホルダーに複数のCSVファイルがあります
列操作でB列に空白列を挿入するマクロをおねがいします
A列   b列   c列   d列
aaa   bbb    111   ccc

結果
A列   b列   c列   d列   e列
aaa        bbb    111   ccc

回答の条件
  • 1人3回まで
  • 13歳以上
  • 登録:2012/05/10 12:02:48
  • 終了:2012/05/10 14:39:59

ベストアンサー

id:taknt No.1

きゃづみぃ回答回数13538ベストアンサー獲得回数11982012/05/10 13:20:56

ポイント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)
        '先頭が " なら 次の "まで 一項目とする。
        If Left(textline, 1) = """" Then
            c = InStr(2, textline, """")
            textline = Left(textline, c) & "," & Right(textline, Len(textline) - c)
        Else
            c = InStr(1, textline, ",")
            If c = 0 Then c = Len(textline)
            textline = Left(textline, c) & "," & Right(textline, Len(textline) - c)
        End If
        
        Print #ch2, textline       'データの書き込みをします
    Next i
    Close #ch2
 
    f = Dir
Loop

Application.DisplayAlerts = True

End Sub


CSVなので 一番目と二番目の間にカンマを入れて 空の項目を作って保存するようにしました。

id:inosisi4141

ありがとうございました
上手くいきましたまた何かございましたら
質問させていただきます。

2012/05/10 14:39:48

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

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

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

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

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