[[20180522133029]] 『日付けが勝手に逆になる 』(つむ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『日付けが勝手に逆になる 』(つむ)

CSV UTF-8で保存されているファイルを
編集し、もう一度CSV UTF-8で自動的に保存するVBAを作成しました。
このマクロをつかうと、編集していないはずのセルの年月日が
2018/01/01から01/01/2018になってしまいます。
どうすれば、勝手に編集されずにすみますか?

なにか方法があれば、教えて下さい。

< 使用 Excel:Excel2016、使用 OS:Windows10 >


ちなみに、VBAを利用せずに、編集保存した場合は、
次にファイルを開いたとしても、きちんとした形で保存されています。
(つむ) 2018/05/22(火) 13:40

 CSVで保存する部分のVBAはどのように記述しているのだろうか?
 また、
 >2018/01/01から01/01/2018になってしまいます。
 これはどのようにして確認したか?

(ねむねむ) 2018/05/22(火) 13:49


マクロを使わなければ問題ないのだから、マクロを見せてもらわないと何とも…。

とりあえずは、マクロで処理しているならば、CSVをシートに読み込んだ後に、日付の入った列の書式設定を「YYYY/MM/DD」と、日本式に指定してから処理してはいかがでしょうか? とにかく、どこかで日付フォーマットを好みの順に変換しないと駄目っぽいと思います。
(???) 2018/05/22(火) 13:50


 ああ、
 >次にファイルを開いたとしても、きちんとした形で保存されています。
 とあるからEXCELで開いて確認しているようだな。
 メモ帳などのテキストエディタで開いても形式が変わっているのだろうか?
(ねむねむ) 2018/05/22(火) 13:53

???様

返信有難うございます。

書式を変更してもだめでした・・・

vbaはこんなかんじです。

    Dim FSO As Object
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Dim name As String
    Dim fl_name As String
    Dim fl_basename As String

    'フォルダ指定
    name = Range("B1").Value

    fl_name = Dir(name & "\*.csv*")

  If fl_name = "" Then
        MsgBox "csvファイルがありません。"
    Exit Sub

  End If

  Application.DisplayAlerts = False

  Do
    ' ファイルを開く
    Workbooks.Open Filename:=name & "\" & fl_name

    fl_basename = FSO.GetBaseName(name & "\" & fl_name)

    ' 削除作業

    Call F列削除
    Call AA_AE列削除

    ' UTF-8のcsvで保存する
   ' ActiveWorkbook.SaveAs Filename:= _
   ' "C:\Users\" & fl_basename & ".csv", FileFormat:=xlCSVUTF8 _
   '  , CreateBackup:=False

     ActiveWorkbook.SaveAs Filename:=name & "\" & fl_name, FileFormat:=xlCSVUTF8 _
      , CreateBackup:=False

   ' 作業したファイルを閉じる
    ActiveWorkbook.Close

    '次のファイルをfl_nameに代入
    fl_name = Dir

  Loop Until fl_name = ""

(つむ) 2018/05/22(火) 14:09


ねむねむ様

返信ありがとうございます。
Excel で開くものを作成しています。

ちなみに、テキストで開いても逆になっていました。

(つむ) 2018/05/22(火) 14:12


 >xlCSVUTF8
 は2016で追加されたものなのか。
 あいにく当方は2010なので確認できない。
 とりあえず日付データを文字列に変換してから保存するとどうなるだろうか?
(ねむねむ) 2018/05/22(火) 14:20

ねむねむ様

文字列にしてしまうと完全に/がなくなってしまうため、無理でした…
(つむ) 2018/05/22(火) 14:25


 例えばA1セルに日付があるとして
 >Range("A1").NumberFormat = "@"
 >Range("A1") = Format(Range("A1"), "yyyy/mm/dd")
 こんなので/付きの文字列にできないか?
(ねむねむ) 2018/05/22(火) 14:37

ねむねむ様

有難うございます。
そうすると解決できました。
ただ、縦1列指定したいのですが、
どうしたらいいのでしょうか?

お手数ですが、教えていただけたらと思います。
(つむ) 2018/05/22(火) 14:45


 区切り位置で日付を文字列にしてはどうかと思ったが、手動で行うとうまくいくのだがそれをマクロの記録で記録して、
 マクロから実行するとyyyy/m/dがd/m/yyyyになってしまう。
 誰か解決策をご存じないだろうか?
(ねむねむ) 2018/05/22(火) 15:34

ねむねむ様
Range("A1").Select

 Do
         ActiveCell.NumberFormat = "@"
        ' ActiveCell.Font.ColorIndex = 4
         ActiveCell = Format(ActiveCell, "yyyy/mm/dd")
         ActiveCell.Offset(1, 0).Select

  Loop While ActiveCell.Value <> ""

でいくと1行はうまくいきました。

(つむ) 2018/05/22(火) 15:54


 ActiveCellを使うとそのたびにカーソルの移動が起こるので
 Dim WK_RANGE    As  Range
 としておいて
    Set WK_RANGE = Range("A1")
    Do
        WK_RANGE.NumberFormat = "@"
        ' WK_RANGE.Font.ColorIndex = 4
        WK_RANGE = Format(WK_RANGE, "yyyy/mm/dd")
        Set WK_RANGE = WK_RANGE.Offset(1, 0)
    Loop While WK_RANGE.Value <> ""
 としてはどうだろうか? 
(ねむねむ) 2018/05/22(火) 16:15

ねむねむ様

セル指定を頭でしていたので、
動くことはなかったです!
(つむ) 2018/05/22(火) 16:18


解決はでき、正しい形での保存ができました。

ただ、原因としては保存するマクロに原因があるのではないかと考えられる、
(つむ) 2018/05/22(火) 16:20


 Workbooks.Open と Workbook.SaveAs の引数に Local:=True を追加するとどうでしょうか

 https://msdn.microsoft.com/ja-jp/vba/excel-vba/articles/workbooks-open-method-excel
 https://msdn.microsoft.com/ja-jp/vba/excel-vba/articles/workbook-saveas-method-excel

 説明を見ると、
 True  : Excel の言語設定
 False : VBA の言語設定(既定値) 通常、英語 (U.S.)
 となってるので、省略時は英語圏の書式設定になるのでしょうか

 ・・・googleで検索(excel csv 日付 逆)した結果ですけど

(2u) 2018/05/22(火) 22:02


 UTF8とか関係なしに、マクロでcsvとして保存する時にOS依存の日付設定になっていると
 (日付の欄から選ぶ時に左側に*がついてる書式)、英語の日付で保存されるみたいですね。
 しかも日本語ではサポートされてないから、次に開く時は文字列扱いになってて、
 後から書式設定も効かないですね。

 2uさんのレスを補足させて頂くと、Local:=True を追加するのはSaveAsの方だけで良いみたいです。
 変換されたcsvでは文字扱いになってるので、開く時には Local:=True を記述しても変わらないですね。

 もしくはcsvを開いてから日付の列を、NumberFormatLocal = "yyyy/m/d;@"、
 とでもしてOS依存じゃない方の日付設定に変更しておけば、Local:=True なしで保存しても大丈夫みたいです。

(sy) 2018/05/23(水) 00:32


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.