マクロ・VBAについて質問です。

エクセルの値を抜き出してテキストファイルを作成したいのですがエクセルマクロ(VBA)で作成できないでしょうか?

詳細はコメントに記載します。

回答の条件
  • 1人2回まで
  • 登録:2010/06/23 08:37:34
  • 終了:2010/06/29 09:56:34

ベストアンサー

id:SALINGER No.1

SALINGER回答回数3454ベストアンサー獲得回数9692010/06/23 08:52:40

ポイント50pt

実行させた場所と同じ場所に作成するマクロです。

Sub MakeText()
    Dim FSO As Object
    Dim lastRow As Long
    Dim i As Long
    Dim str As String
    
    Set FSO = CreateObject("Scripting.FileSystemObject")
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row
    
    With FSO.CreateTextFile(ThisWorkbook.Path & "\create.txt")
        For i = 1 To lastRow
            .WriteLine "PrefNo." & Replace(Cells(i, 1).Value, "_", "") & " PrefName." & Cells(i, 2).Value
        Next i
        .Close
    End With
    Set FSO = Nothing
End Sub

その他の回答(6件)

id:SALINGER No.1

SALINGER回答回数3454ベストアンサー獲得回数9692010/06/23 08:52:40ここでベストアンサー

ポイント50pt

実行させた場所と同じ場所に作成するマクロです。

Sub MakeText()
    Dim FSO As Object
    Dim lastRow As Long
    Dim i As Long
    Dim str As String
    
    Set FSO = CreateObject("Scripting.FileSystemObject")
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row
    
    With FSO.CreateTextFile(ThisWorkbook.Path & "\create.txt")
        For i = 1 To lastRow
            .WriteLine "PrefNo." & Replace(Cells(i, 1).Value, "_", "") & " PrefName." & Cells(i, 2).Value
        Next i
        .Close
    End With
    Set FSO = Nothing
End Sub
id:Mook No.2

Mook回答回数1312ベストアンサー獲得回数3912010/06/23 08:51:58

ポイント50pt

下記のような感じでしょうか。

main の中で、作成するファイルと対象のシートを指定するようにしています。


Option Explicit

Sub main()
    MakeFile "C:\Create.txt", Worksheets("Sheet1")
End Sub

Sub MakeFile(filePath As String, ws As Worksheet)
    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")

    Dim lastRow As Long
    lastRow = ws.Range("A" & Rows.Count).End(xlUp).Row

    Dim r As Long
    With fso.CreateTextFile(filePath, True)
        For r = 1 To lastRow
            If ws.Cells(r, "A").Value <> "" And ws.Cells(r, "B").Value <> "" Then
                .WriteLine "PrefNo." & Trim(Replace(ws.Cells(r, "A").Value, "_", "")) & " PrefName." & Trim(ws.Cells(r, "B").Value)
            End If
        Next
        .Close
    End With
End Sub

仕様に異なる点がある場合は、コメントください。

質問者が未読の回答一覧

 回答者回答受取ベストアンサー回答時間
1 rsc 4387 3777 401 2010-06-23 10:12:13
2 koriki-WeKan 342 305 20 2010-06-23 15:50:20
3 daiki0704 18 11 0 2010-06-23 16:21:02
4 daiki0704 18 11 0 2010-06-23 18:17:48
5 りゅうせい<Art style> 5 1 0 2010-06-24 02:24:52
  • id:Ryo0524
    質問者です。

    (例)
    Main.xlsのA列の値を以下の文の[A]の部分に、B列の値を以下の文の[B]の部分に
    代入していき、Create.txtのようなテキストファイルを作成する。
    ※ただし、A列の値の「_(アンダーバー)」は削除する
    文:PrefNo.[A] PrefName.[B]

    Main.xls
       A  |  B  |  C
    ------+-----+-----
    A1_1000100 |青森   |22222
    ------+-----+-----
    A2_1001110 |秋田   |21212
    ------+-----+-----
    B1_1010000 |岩手   |30300
    ------+-----+-----
    A1_1000011 |宮城   |10001
    ------+-----+-----


    Create.txt
    -------------------------
    PrefNo.A11000100 PrefName.青森
    PrefNo.A21001110 PrefName.秋田
    PrefNo.B11010000 PrefName.岩手
    PrefNo.A11000011 PrefName.宮城
    -------------------------
  • id:ootatmt
    すごく簡単そうw
  • id:SALINGER
    実際簡単なんで、ここら辺を参考にして自分で作ってみると、後々役にたつかもね。
    http://officetanaka.net/excel/vba/filesystemobject/filesystemobject06.htm

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

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

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

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