質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

3312閲覧

Excelからcsvを出力するとJANコードが化けてしまう

tsunana

総合スコア18

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

1クリップ

投稿2019/05/22 02:37

前提・実現したいこと

ExcelマクロボタンからCSVを出力するのですが、出力したcsvファイルを右クリックからエディタなどで開いてJanコードの行を確認すると「xxxxxE+12」となってしまっている。
これを正確な13桁の数値になって、確認できるようにしたい。

該当のソースコード

'変数・定数定義 Dim r1 As Long, rmax As Long, h1 As Long, hmax As Long, _ newBK As String, filePath Const hsmSH As String = "発注マスター" '発注マスタシートのデータ有無確認(2列目で判断) If Sheets(hsmSH).Cells(2, 2) = "" Then MsgBox "発注データが取り込まれていません", vbExclamation Exit Sub End If '画面表示停止/アラート停止 Application.DisplayAlerts = False Application.ScreenUpdating = False '保存場所のパスを設定(マクロブックと同じ場所) filePath = ThisWorkbook.Path '発注マスタシートの最下行を取得(11列目で取得) Sheets(hsmSH).Activate rmax = Cells(Rows.Count, 11).End(xlUp).Row 'データを店舗名順で並び替え Range(Rows(2), Rows(rmax)).Sort Key1:=Cells(1, 2), Order1:=xlAscending '店舗ごとのブックを作成 For r1 = 2 To rmax With ThisWorkbook.Sheets(hsmSH) '1店舗の開始行のとき ①現在行番号をリセット ②新規ブックを追加 If CStr(.Cells(r1, 2)) <> .Cells(r1 - 1, 2) Then h1 = 1 Workbooks.Add End If 'JANコードと数量を転記 Cells(h1, 1) = .Cells(r1, 11) Cells(h1, 2) = .Cells(r1, 17) h1 = h1 + 1 '1店舗の最終行のとき ①ファイルを店舗名で保存 ②ファイルを閉じる If .Cells(r1, 2) <> .Cells(r1 + 1, 2) Or r1 = rmax Then '店舗名が空欄のとき If .Cells(r1, 2) = "" Then ActiveWorkbook.SaveAs Filename:=filePath & "\_店舗名なし.csv", _ FileFormat:=xlCSV Else ActiveWorkbook.SaveAs Filename:=filePath & "\" & .Cells(r1, 2) & ".csv", _ FileFormat:=xlCSV End If ActiveWorkbook.Close End If End With Next 'アラート再開/画面表示再開 Application.DisplayAlerts = True Application.ScreenUpdating = True MsgBox "転記完了" End Sub

試したこと

「cstr」や「NumberFormat」などの変換を記述していろいろ試したのですが変わりませんでした。。
CSVで出力する時点で立ちはだかる壁かとは思うのですが解決できますでしょうか。

補足情報(FW/ツールのバージョンなど)

出力したCSVの1列目にJanコード、2列目に数量を出力しています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Cells(h1, 2) = .Cells(r1, 17)の時に書式ごとコピーするか、そもそも元の書式もダメだっていうんならコピー先の書式を文字列にしておけばいいんじゃないですか。

投稿2019/05/22 02:43

hentaiman

総合スコア6415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tsunana

2019/05/22 04:12

ありがとうございます。上記も試していたのですが書き方間違っていたらすみません、 Cells(h1, 2)= .Cells(r1, 17).Copy
hentaiman

2019/05/22 05:29

コピー元がエラーになってないならcopyで大丈夫だと思うけど、一応手元でも確認しましたけどエラーになるような数値でも書式を文字列にしておけばエラー表示されずに数字のままで保存できましたが 試したNumberFormaってもちろん@でやったんですよね?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問