Excel VBA質問箱 IV

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

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


13502 / 13644 ツリー ←次へ | 前へ→

【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 お礼

【5085】頭文字"0"の出力方法
質問  jin  - 03/4/21(月) 20:40 -

引用なし
パスワード
   こんにちわ
いつも参考にさせてもらっています。

タブ区切りでCSV出力をしようと思っていますが、頭文字が"0"の文字列がうまく出力することができません。
コードは以下に記述。
いちおう文字列として出力してはいるのですが、出力ファイルをひらくと頭文字の"0"が消えてしまっています.

このCSVを後にDBに入れるという作業を行いたいので、この頭文字が"0"のコードである必要があります。

どうか何か参考意見がありましたら、教えてください。
宜しくお願いします。

For introw 1 To 15
  strOutData(1) = objSh_No15.Cells(introw, "A")
  strOutData(2) = CStr(Val(objSh_No15.Cells(introw, "E") & ""))
  strOutData(3) = CStr(Val(objSh_No15.Cells(introw, "F") & ""))

   ・
   ・

Next

Print#〜〜〜

※ObjSh_No15は"シート15"というようにオブジェクトをセットしています。

【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桁の例
などとしてください。

【5096】ありがとうございます。&追加
お礼  jin  - 03/4/22(火) 9:29 -

引用なし
パスワード
   ▼りん さん:
りんさん ありがとうございます!

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

すいません。記述ミスです。(カンマ区切りのCSVファイルです)

>それはさておき。
> csvで保存しても0が出ない理由はよくわかりませんが、

エクセルではなくメモ帳などでひらいてみると、0がでていることを確認できました。
申し訳ありません。注意力不足でした。

!!!これに付随してエクセルで開いても頭文字"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桁の例
>などとしてください。

決めた桁数、文字列で出力したいときに上記は使えますね。
参考になります。

【5100】頭文字"0"で表示する
回答  こう E-MAIL  - 03/4/22(火) 12:05 -

引用なし
パスワード
   >!!!これに付随してエクセルで開いても頭文字"0"で表示することは可能でしょうか?!!!!
開く際に,数字と判断されると前0がなくなりますので,
インポート(してるのかな?)時に,文字列として開くか
CSV格納時に,""で囲むと良いでしょう。

【5109】Re:頭文字"0"で表示する
お礼  jin  - 03/4/22(火) 14:55 -

引用なし
パスワード
   ▼こう さん:
こうさん ありがとうございます。

>>!!!これに付随してエクセルで開いても頭文字"0"で表示することは可能でしょうか?!!!!
>開く際に,数字と判断されると前0がなくなりますので,
>インポート(してるのかな?)時に,文字列として開くか
>CSV格納時に,""で囲むと良いでしょう。

使う用途によってCSV格納を使い分けることにします。

助言ありがとうございました。
これからも質問することがあるかもしれませんが、
宜しくお願い致します。

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