エクセルについて質問です。


エクセルの指定したセルのデータを自動で抽出しメモ帳などのテキストファイルに自動で貼り付け、その後指定したフォルダに自動で順番にテキストファイルを保存(もしくはセルの指定したセルの値に.txtを付けて次から次へと保存できる)できるプログラムもしくは無料ソフトなどはありませんでしょうか?(似たようなソフトでも助かります。)大体100個ぐらい一度で処理できるといいです。

プログラムの場合ですが動作の流れを作ってみました。

セルA1に番号が セルB1には文章があります。

① まずメモ帳を開きます。

② メモ帳にセルB1の文章を貼り付けます。

③ メモ帳のテキストデータにセルA1の番号を先頭につけ.txtで指定したフォルダに保存します。

④ メモ帳を閉じます。

⑤ 次に同じくA2 B2に入っているデータを読み込みテキストファイルを作成し、A1、B1のデータを保存した同じフォルダに保存していきます。

①~⑤を繰り返し100データ分ほど行っていきます。

以上のことは可能でしょうか。

お手数をおかけしますがよろしくお願いいたします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2008/07/22 14:49:52
  • 終了:2008/07/29 14:50:02

ベストアンサー

id:SALINGER No.1

SALINGER回答回数3454ベストアンサー獲得回数9692008/07/22 15:23:08

ポイント13pt

ExcelVBAで作りました。


VBAを使ったことがなければこちらを参考に

http://www.officepro.jp/excelvba/ini/index1.html

http://www.officepro.jp/excelvba/ini/index2.html

http://www.officepro.jp/excelvba/ini/index3.html


実行すると、保存するフォルダを選択することで、保存先を決めて、

A列の番号の名前をでテキストを作り、B列の内容で保存します。

Option Explicit

Sub TxtSave()
    Dim FSO
    Dim i As Long
    Dim Shell As Object
    Dim FolderPath
    
    Set Shell = CreateObject("Shell.Application") _
        .BrowseForFolder(0, "フォルダを選択してください", 0, "c:\")
    
    If Shell Is Nothing Then
        Exit Sub
    Else
        FolderPath = Shell.Items.Item.Path
    End If
    
    Set FSO = CreateObject("Scripting.FileSystemObject")
    
    Fold = FSO.getfolder(FolderPath)
    i = 1
    While ActiveSheet.Cells(i, 1).Value <> ""
        With FSO.getfolder(FolderPath).createtextfile(ActiveSheet.Cells(i, 1).Value & ".txt")
            .writeline ActiveSheet.Cells(i, 2).Value
        End With
        i = i + 1
    Wend
    Set FSO = Nothing
End Sub
id:aiomock

変数が定義されていないですというエラーが出てくるのですがこれはどの様に解決すればいいのでしょうか?

セルの値を変数として定義しないといけないということでしょうか??

2008/07/22 17:42:14

その他の回答(3件)

id:SALINGER No.1

SALINGER回答回数3454ベストアンサー獲得回数9692008/07/22 15:23:08ここでベストアンサー

ポイント13pt

ExcelVBAで作りました。


VBAを使ったことがなければこちらを参考に

http://www.officepro.jp/excelvba/ini/index1.html

http://www.officepro.jp/excelvba/ini/index2.html

http://www.officepro.jp/excelvba/ini/index3.html


実行すると、保存するフォルダを選択することで、保存先を決めて、

A列の番号の名前をでテキストを作り、B列の内容で保存します。

Option Explicit

Sub TxtSave()
    Dim FSO
    Dim i As Long
    Dim Shell As Object
    Dim FolderPath
    
    Set Shell = CreateObject("Shell.Application") _
        .BrowseForFolder(0, "フォルダを選択してください", 0, "c:\")
    
    If Shell Is Nothing Then
        Exit Sub
    Else
        FolderPath = Shell.Items.Item.Path
    End If
    
    Set FSO = CreateObject("Scripting.FileSystemObject")
    
    Fold = FSO.getfolder(FolderPath)
    i = 1
    While ActiveSheet.Cells(i, 1).Value <> ""
        With FSO.getfolder(FolderPath).createtextfile(ActiveSheet.Cells(i, 1).Value & ".txt")
            .writeline ActiveSheet.Cells(i, 2).Value
        End With
        i = i + 1
    Wend
    Set FSO = Nothing
End Sub
id:aiomock

変数が定義されていないですというエラーが出てくるのですがこれはどの様に解決すればいいのでしょうか?

セルの値を変数として定義しないといけないということでしょうか??

2008/07/22 17:42:14
id:SALINGER No.2

SALINGER回答回数3454ベストアンサー獲得回数9692008/07/22 16:26:02

ポイント26pt

ちょっと問題ありました。

B列のセルに改行が入っていた場合、うまく動作しないことの修正です。

下から6行目のwritelneの行を

.write Replace(ActiveSheet.Cells(i, 2).Value, vbLf, vbCrLf)

にしてください。

http://q.hatena.ne.jp/

id:aiomock

すいません。動かせないです。。。

2008/07/22 17:51:16
id:taknt No.3

きゃづみぃ回答回数13537ベストアンサー獲得回数11982008/07/22 18:04:55

ポイント26pt

SALINGERさんの回答の手直しですが、

最初の箇所

Option Explicit

を削除するか

Sub TxtSave()

Dim FSO

Sub TxtSave()

Dim Fold

Dim FSO

にしたらいいでしょう。


http://q.hatena.ne.jp/answer

id:aiomock

無事に動作確認できました。ありがとうございます。

もしセルA4に番号、AE4に説明文があるとしたらどういったプログラミングになるのでしょうか? 

時間がある方おりましたら教えてください。よろしくお願いいたします。

2008/07/22 20:45:43
id:taknt No.4

きゃづみぃ回答回数13537ベストアンサー獲得回数11982008/07/23 06:59:47

ポイント25pt

>もしセルA4に番号、AE4に説明文があるとしたらどういったプログラミングになるのでしょうか?

その番号と 説明文をどのようにしたいのか かかれてませんので

それを 書いたほうがいいでしょう。

>③ メモ帳のテキストデータにセルA1の番号を先頭につけ.txtで指定したフォルダに保存します。

この部分のA1がA4となりますので、

セルA4に入っている番号のファイル名になりますね。

AE4は説明文ということなので ファイルに保存したいならば

.write Replace(ActiveSheet.Cells(i, 2).Value, vbLf, vbCrLf)

の次に

.write Replace(ActiveSheet.Cells(i, "AE4").Value, vbLf, vbCrLf)

を入れれば保存されますが

4行目のときだけならば

if i=4 then

.write Replace(ActiveSheet.Cells(i, "AE4").Value, vbLf, vbCrLf)

end if

とすれば 4行目のときだけ 保存します。


あと回答は 2回までの制限にされているので、このあと質問があるなら コメントを有効にしてもらうか

回答数の制限を増やしてもらえればいいでしょう。

他の人が 回答してくれればいいですけど・・・。



http://q.hatena.ne.jp/answer

id:aiomock

ご回答ありがとうございます。

2008/07/23 10:00:08
  • id:taknt
    .write Replace(ActiveSheet.Cells(i, "AE4").Value, vbLf, vbCrLf)

    じゃなくて

    .write Replace(ActiveSheet.Cells(i, "AE").Value, vbLf, vbCrLf)

    でしたね。

  • id:SALINGER
    >aiomockさん
    1行削除し忘れた行があって申し訳ありませんでした。
    回答とコメントで答えることはできなかったので修正することはできませんでした。
    takntさんフォローありがとうございます。
    ですが、正確には変数の定義ではなくて
    >>
    Fold = FSO.getfolder(FolderPath)
    <<
    の行の削除でした。
  • id:aiomock
    Option Explicit

    Sub TxtSave()
    Dim FSO
    Dim i As Long
    Dim Shell As Object
    Dim FolderPath

    Set Shell = CreateObject("Shell.Application") _
    .BrowseForFolder(0, "フォルダを選択してください", 0, "c:\")

    If Shell Is Nothing Then
    Exit Sub
    Else
    FolderPath = Shell.Items.Item.Path
    End If

    Set FSO = CreateObject("Scripting.FileSystemObject")

    i = 1
    While ActiveSheet.Cells(i, 1).Value <> ""
    With FSO.getfolder(FolderPath).createtextfile(ActiveSheet.Cells(i, 1).Value & ".txt")
    .writeline ActiveSheet.Cells(i, 2).Value
    End With
    i = i + 1
    Wend
    Set FSO = Nothing
    End Sub

    これでできました!。

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

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

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

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