Excel VBA質問箱 IV

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

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


76064 / 76732 ←次へ | 前へ→

【5093】Re:頭文字"0"の出力方法
回答  りん E-MAIL  - 03/4/22(火) 6:55 -

引用なし
パスワード
   jin さん、おはようございます。

>タブ区切りでCSV出力をしようと思っていますが、頭文字が"0"の文字列がうまく出力することができません。
 タブ区切りはcsvとはいいませんが。
 csv : The Comma Separated Value (CSV) File Format

それはさておき。
 csvで保存しても0が出ない理由はよくわかりませんが、VBAで実行するのならば、csvで保存をするよりも、OpenステートメントとPrint # ステートメントを使えば区切り文字などが結構自由がききますよ。

Sub test()
  Dim r1 As Range, RR(0 To 2) As Long, CC(0 To 2) As Integer
  Set r1 = ActiveSheet.UsedRange
  With r1
   RR(1) = .Cells(1).Row
   CC(1) = .Cells(1).Column
   RR(2) = .Cells(.Count).Row
   CC(2) = .Cells(.Count).Column
  End With
  'csv風のテキストを作成
  Open "TabSep.csv" For Output As #2
   With r1.Parent
     For RR(0) = RR(1) To RR(2)
      For CC(0) = CC(1) To CC(2)
        'セルの値
        With .Cells(RR(0), CC(0))
         If .Value = "" Then
           Print #2, "";
         ElseIf IsNumeric(.Value) = False Then
           Print #2, .Value;
         Else
           Print #2, "0" & Trim(.Value);
         End If
        End With
        Select Case CC(0)
         Case CC(2): Print #2, "" 'vbcrlf
         Case Else: Print #2, Chr(9); 'vbTab
        End Select
      Next
     Next
   End With
  Close #2
  Erase CC,RR
  Set r1 = Nothing
End Sub

こんな感じです。

0を付けたいの意味がわからなかったので、数値の前に0を追加するようにしましたが、
 1 → 0001 などの様に成型したい場合は、
 書き出す分岐の数値と判定された部分(Ifブロックの一番下)を、
 Print #2, Format(.Value, "0000"); '4桁の例
などとしてください。
1 hits

【5085】頭文字"0"の出力方法 jin 03/4/21(月) 20:40 質問
【5093】Re:頭文字"0"の出力方法 りん 03/4/22(火) 6:55 回答
【5096】ありがとうございます。&追加 jin 03/4/22(火) 9:29 お礼
【5100】頭文字"0"で表示する こう 03/4/22(火) 12:05 回答
【5109】Re:頭文字"0"で表示する jin 03/4/22(火) 14:55 お礼

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