Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4177 / 13646 ツリー ←次へ | 前へ→

【58050】セルの内容をテキスト化したい masamune 08/9/29(月) 20:35 質問[未読]
【58051】Re:セルの内容をテキスト化したい Hirofumi 08/9/29(月) 22:02 回答[未読]
【58056】Re:セルの内容をテキスト化したい masamune 08/9/30(火) 10:59 お礼[未読]
【58062】Re:セルの内容をテキスト化したい Hirofumi 08/9/30(火) 18:56 発言[未読]

【58050】セルの内容をテキスト化したい
質問  masamune  - 08/9/29(月) 20:35 -

引用なし
パスワード
   セルの内容をテキストファイルにして保存したいと思っています。

条件は・・・

・データは2列とし、B列の内容をテキストファイル化し
 それに対応してA列をそのファイル名にする。

・一つのセルの内容で一つのテキストファイルとして保存する。

・この2列のデータが100行近くあるのでこの100行をバッチ処理する。

VBA初心者のため全く分かりません。
どなたかご教授くださいませ。

よろしくお願いいたします。

【58051】Re:セルの内容をテキスト化したい
回答  Hirofumi  - 08/9/29(月) 22:02 -

引用なし
パスワード
   基本的にはこんな物で出来ると思いますが?
ファイル名の重複、ファイル名の不正文字等の処理をしていませんので
これを行って下さい

また、データには列見出しが有る物とします

Option Explicit

Public Sub Sample()

  '◆データ列数(A列〜B列)
  Const clngColumns As Long = 2
  
  Dim i As Long
  Dim lngRows As Long
  Dim rngList As Range
  Dim vntData As Variant
  Dim dfn As Integer
  Dim strPath As String
  Dim strProm As String

  '◆Listの先頭セル位置を基準とする(A列の列見出しのセル位置)
  Set rngList = ActiveSheet.Cells(1, "A")

  With rngList
    '行数の取得
    lngRows = .Offset(Rows.Count - .Row).End(xlUp).Row - .Row
    If lngRows <= 0 Then
      strProm = "データが有りません"
      GoTo Wayout
    End If
    '列データを配列に取得
    vntData = .Offset(1).Resize(lngRows, 2).Value
  End With
  
  '画面更新を停止
'  Application.ScreenUpdating = False
  
  '◆出力先フォルダを指定
  strPath = ThisWorkbook.Path & "\"
  
  For i = 1 To lngRows
    dfn = FreeFile
    Open strPath & vntData(i, 1) & ".txt" For Output As dfn
    Print #dfn, vntData(i, 2)
    Close #dfn
  Next i
  
  strProm = "処理が完了しました"
   
Wayout:

  '画面更新を再開
  Application.ScreenUpdating = True
  
  Set rngList = Nothing
   
  MsgBox strProm, vbInformation
     
End Sub

【58056】Re:セルの内容をテキスト化したい
お礼  masamune  - 08/9/30(火) 10:59 -

引用なし
パスワード
   出来ました!
大変ありがとうございます。<(_ _)>

自分ではあれだけの内容は絶対出来ませんでした。
これから内容を理解して応用できるようにしたいと思います。

またわからないところがありましたら
質問させて頂きます。

よろしくお願いいたします。

大変ありがとうございました。

【58062】Re:セルの内容をテキスト化したい
発言  Hirofumi  - 08/9/30(火) 18:56 -

引用なし
パスワード
   >出来ました!
>大変ありがとうございます。<(_ _)>
>
>自分ではあれだけの内容は絶対出来ませんでした。
>これから内容を理解して応用できるようにしたいと思います。
>
>またわからないところがありましたら
>質問させて頂きます。
>
>よろしくお願いいたします。
>
>大変ありがとうございました。

現状のコードでは、単にA列の値をファイル名として、B列の値を出力しているだけで、
何のエラー処理もチェックも行って居ません
もし、実用に供すなら以下の問題を考慮してコードを組み込むのが順当だと思います

1、A列の値にファイル名として許可されない文字が有った場合
 チェックの方法と処理(マクロを止める?)
2、A列の値に重複が有った場合
 現状では、重複しているファイル名のデータに上書きされてしまう
 此れを如何処理するか?
3、出力先に、A列の値と同じファイルが既に存在していた場合
 現状では、重複しているファイル名のデータに上書きされてしまう
 此れを如何処理するか?

現在、考え付く物は以上ですが、こう言う事を善く考慮して試して下さい

4177 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free