dポイントプレゼントキャンペーン実施中!

たとえばEXCLEのファイルには
あ い う え お
のようないつつのセルがあります
それをTEXTファイルにマクロでこのような形で出力できますか

あ’,’い’,’う’,’え’,’お’,’

A 回答 (3件)

こんにちは。

 FarEyesです。

> 全角ではなくて半角です

#1で記載したサンプルマクロは、試していただけたのでしょうか?

サンプルを見ていただければ解ると思いますが、区切り文字が半角の場合でも
対応できるように、以下のように記述してあります。

==================================================
       :
  '区切り文字の設定
  '※区切り文字を半角文字にする場合は、下記「@1」の行の方を
  ' 有効にして下さい。
  strSep = "’,’"  '全角文字の場合
'@1 strSep = "','"   '半角文字の場合
       :
==================================================

区切り文字を半角にしたい場合は、上記の「全角文字の場合」のコード(1行分)
を削除し、@1の行、「半角文字の場合」の1行を生かす('@1の3文字を削除)よう
にすれば対処可能かと思います。

以上です。
    • good
    • 0

#1です。



すみません。画像が添付できませんでした。
(画像ファイルのファイル形式は条件を満たしていると思うのですが、
 エンコードで失敗してしまうようです。)
申し訳ありませんでした。
    • good
    • 0

こんにちは。



ひとつ確認なのですが、

保存するテキストファイルの形式は、
  あ,い,う,え,お
のCSV形式ではなく、
  あ’,’い’,’う’,’え’,’お’,’
  ※’,’は、全て全角文字?(※半角文字の','ではない?)
  ※ご質問の例をコピペすると ’,’は、全て全角文字だったので
   そう解釈させて戴きました。
ということでしょうか?

CSV形式なら、Excelのファイル保存時に、
  「名前を付けて保存」
    ↓
  「ファイルの種類」で「CSV (カンマ区切り) (*.csv)」を選択
として、ファイル保存すればできるのですが。。。

CSV形式ではなく、ご提示の
  あ’,’い’,’う’,’え’,’お’,’
  ※’,’は、全て全角文字とする。
の形式で、アクティブなシート全体(データのある行まで)をテキストファイル
に保存するマクロ(サンプル)を作成してみました。

※当方は、Excel2000で作成&試してみました。
※他のバージョンのExcelで上手く動作しなかった場合はすみません。
※また、ご要望のものと違った場合はすみません。

■サンプルマクロ
※下記マクロは「標準モジュール」に貼り付けて下さい。
注)インデント等のため全角スペースを入れています。
=====================
Option Explicit
'
'== テキストファイル保存 ==
'※アクティブなシート全体をテキストファイルに保存します。
Sub TextSave()

  Dim nCol As Long     'カラム位置
  Dim nTextNo As Integer  'ファイル番号
  Dim nRowEnd As Long   'データ最終行
  Dim nColEnd As Long   'データ最終カラム(1行単位)
  Dim strBkPath As String '本Excelブックのフォルダ名
  Dim strTxtFn As String  'テキストファイル名(フルパス)
  Dim strSep As String   '区切り文字
  Dim shCur As Worksheet  'Worksheetオブジェクト
  Dim rgCur As Range    'Rangeオブジェクト

  'アクティブシートのオブジェクト取得
  Set shCur = ActiveSheet

  'テキストファイルのフルパス名を作成
  '※フォルダはこのExcelブックがあるフォルダとします。
  strBkPath = ThisWorkbook.Path
  strTxtFn = strBkPath & "\" & "Test.txt"

  '区切り文字の設定
  '※区切り文字を半角文字にする場合は、下記「@1」の行の方を
  ' 有効にして下さい。
  strSep = "’,’"  '全角文字の場合
'@1 strSep = "','"   '半角文字の場合

  '使用可能なファイル番号を取得
  nTextNo = FreeFile

  'テキストファイルをオープン(新規作成)
  Open strTxtFn For Output Access Write As #nTextNo

  'データがセットされている最後のセルの行位置を取得
  nRowEnd = shCur.Range("A1").SpecialCells(xlCellTypeLastCell).Row

  '1行目からデータ最終行までのA列のセルを取得(ループ処理)
  For Each rgCur In shCur.Range("A1:A" & nRowEnd)
    '現在行のデータがある最後のカラム位置を取得
    nColEnd = rgCur(1, shCur.Columns.Count).End(xlToLeft).Column
    '現在行の1カラム目からデータ最終カラムまでループ
    For nCol = 1 To nColEnd
      '「空白行」か「データがある行」かの判定
      If nColEnd = 1 And rgCur(1, 1).Text = "" Then
        'データ最終カラムが1カラム目かつ空白セルの時(=空白行)
        '※空白行の場合は空き文字を出力
        '※ここでは「区切り文字」は付加しない
        '※区切り文字を出力する場合は下記「@2」の行の方を有効に
        ' して下さい。
        Print #nTextNo, "";     '区切り文字を出力しない
'@2       Print #nTextNo, ""; strSep; '区切り文字を出力する
      Else
        '空白行ではない時(=データがある行)
        '※セルデータ+区切り文字の出力
        Print #nTextNo, rgCur(1, nCol).Text; strSep;
      End If
    Next nCol
    '行末の改行を出力
    Print #nTextNo,
  Next

  'テキストファイルをクローズ
  Close #nTextNo

  'シートオブジェクトの解放
  Set shCur = Nothing

End Sub
=====================

■上記マクロの出力結果

<Exce側のシート例>
=====================
    A    B    C    D    E    F 
 1  あ   い   う    え   お  
 2  か   き   く  
 3  (空白行)  
 4  た   ち   つ   て    と  
 5  な   に   ぬ   ね   の  
 6  は   ひ   ふ   へ   ほ  
 7  ま   み   む   め   も  
 8  や        ゆ        よ  
 9  ら    り   る   れ    ろ  
 10 わ
 11 ん
 12 (空白行)
 13     123  456       999  
 14 ABC DEF  GHI       MNO  
 15 
 16                       End ←ここが最終データの
                              セル(F16)です。
=====================

※添付画像に上記のシート画面を添付しています。

保存するExcel側のシートが上記だった場合、出力されるテキストファイルは、
下記のようになります。

<テキストファイルの出力例>
=====================
あ’,’い’,’う’,’え’,’お’,’
か’,’き’,’く’,’

た’,’ち’,’つ’,’て’,’と’,’
な’,’に’,’ぬ’,’ね’,’の’,’
は’,’ひ’,’ふ’,’へ’,’ほ’,’
ま’,’み’,’む’,’め’,’も’,’
や’,’’,’ゆ’,’’,’よ’,’
ら’,’り’,’る’,’れ’,’ろ’,’
わ’,’
ん’,’

’,’123’,’456’,’’,’999’,’
ABC’,’DEF’,’GHI’,’’,’MNO’,’

’,’’,’’,’’,’’,’End’,’
=====================

以上です。参考になれば幸いです。
    • good
    • 0
この回答へのお礼

FarEyesさん
ご解答ありがとうございます
すみません
全角ではなくて半角です

お礼日時:2009/11/29 13:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!