商品情報にスキップ
1 1

Excel VBA 0のついた数字やJAN含むCSV を文字化けせず読み込む

Excel VBA 0のついた数字やJAN含むCSV を文字化けせず読み込む

更新日:

実装環境:利用環境 : Windows 11 , office 2019

ご購入特典:コピペできるサンプルコード

免責事項

カスタマイズ・設置・勉強会につきましてご希望の方は別途ご依頼お伺いいたしますのでご相談ください。

※Shopifyの仕様上利用出来なくなった場合は削除する場合がございます。

当サイトの運営方針と利用上の注意

  • 運営方針
    当サイトは個人運営であり、私自身がEC作業を効率化するために利用することを目的としています。
    掲載内容は、私個人の見解や経験に基づいたものです。
  • Shopifyアップデートによる影響
    Shopifyのアップデートによって、掲載内容が利用できなくなる可能性があります。
  • 掲載内容の取り扱い
    当サイトの情報は参考資料としてご利用ください。
    実装前には、必ずテスト環境での動作検証を行ってください。
  • 責任範囲
    実装に伴う不具合や損害について、当サイトは一切の責任を負いかねます。
    あくまでも参考情報として活用してください。
  • 内容の変更・削除
    サイトの内容は予告なく変更または削除される場合があります。
  • 保証の範囲
    特定の実装方法や機能の動作を保証するものではありません。
  • 返金キャンセルにつきまして
    デジタルで閲覧の性質上、1度ご購入いただいた商品の返金には一切応じられません。あらかじめご了承ください。
  • お問い合わせについて
    内容のカスタマイズや設定をご希望の場合は、お気軽にお問い合わせください。
詳細を表示する

目次

ExcelVBAで0の折損文字化けしなうように読み込む

楽天のデータをShopify用に変換する時等のVBAの工程の一部になります。

※UTF-8 はこのVBAでは文字化けしますので別の対応が必要です。

 

読み込む時の注意

 

元のCSVデータを開いて保存しなおすなどの対応は禁止です。

出力したCSVのまま対応してください。

この内容は 楽天市場など日本のプラットフォームから出力したデータを読み込む場合の仕様になっています。

Shopify から出力のCSVのデータは UtF-8 になっていますので別の対応が必要になります。

 

作成内容

楽天市場から出力した商品データのCSV を読みこむVBA

 

  1. " normal-item" と言う名前のシートを先に作性しておく
    ※シート作成についてはこちらを参考。
  2. シートを選択する 
  3. 「カタログID」の列のみ文字列で処理
  4. 商品説明の項目などの ""  で囲まれる部分に対して処理。

※読み込むCSVは Shopifyでは無く楽天市場のデータを読み込む想定なので UTF-8 の場合は別処理が必要。

ご購入いただくと、続きをご覧いただけるようになります。

0円 (税込)
すでにご購入済みの方は こちらから ログインしてください。
  • 【ご注意】

    • 返金&サポートはしておりません。
    • Shopifyカスタマイズ・Excel等が使用できる作業者様用です。設置・使用環境の違いによる不具合・カスタマイズは別途お見積もりいたしますのでお問い合わせ下さい。
    • 下記の続きの内容に記載の日時・記載されている内容等をご確認ください。
    • 使用する時は必ずテスト環境でテストし、バックアップを取ってからご利用ください。

続きの内容


更新日:
実装環境: 利用環境 : Windows 11 , office 2019

-----------------

コピペできるサンプルコード

Excel

 Sub normalitemインポート()

'JAN があるシートの読み込み

    Dim ws As Worksheet
    Dim csvPath As String
    Dim txtLine As String
    Dim dataArr As Variant
    Dim rowNum As Long
    Dim colNum As Integer
    Dim fNum As Integer
    Dim cleanedValue As String
    Dim catalogIDColumn As Integer
    
    
   
    ' CSVファイルを選択
    csvPath = Application.GetOpenFilename("CSVファイル (*.csv), *.csv", , "CSVを選択してください")
    If csvPath = "False" Then Exit Sub ' キャンセルされた場合は処理終了
    

   ' "normal-item"という名前のシートに切り替える
    Sheets("normal-item").Activate
    
    
    ' シートを設定
     ' normalitemにインポート
    Set ws = ThisWorkbook.Sheets("normal-item")
    
    ' シートをクリア
    ws.Cells.Clear
    
    ' ファイルを開く
    fNum = FreeFile
    Open csvPath For Input As #fNum
    
    
    ' カタログID列のみ文字列
    ' 1行目を読み込んでカタログID列を探す
    Line Input #fNum, txtLine
    dataArr = Split(txtLine, ",") ' カンマ区切りを配列に変換
    catalogIDColumn = -1
    For colNum = LBound(dataArr) To UBound(dataArr)
        If Trim(dataArr(colNum)) = "カタログID" Then
            catalogIDColumn = colNum + 1
            Exit For
        End If
    Next colNum
    
    If catalogIDColumn = -1 Then
        MsgBox "カタログID列が見つかりませんでした。", vbExclamation
        Close #fNum
        Exit Sub
    End If
    
    ' 1行目をシートに書き込む
    For colNum = LBound(dataArr) To UBound(dataArr)
        cleanedValue = Trim(dataArr(colNum))
        If Left(cleanedValue, 1) = """" And Right(cleanedValue, 1) = """" Then
            cleanedValue = Mid(cleanedValue, 2, Len(cleanedValue) - 2)
        End If
        cleanedValue = Replace(cleanedValue, """""", """")
        ws.Cells(1, colNum + 1).Value = cleanedValue
    Next colNum
    
    ' 残りの行を読み込んで処理
    rowNum = 2
    Do Until EOF(fNum)
        Line Input #fNum, txtLine
        dataArr = Split(txtLine, ",") ' カンマ区切りを配列に変換
        
        ' 各セルにデータを挿入
        For colNum = LBound(dataArr) To UBound(dataArr)
            cleanedValue = Trim(dataArr(colNum))
            
            ' 先頭と末尾がダブルクオートなら削除("abc" → abc)
            If Left(cleanedValue, 1) = """" And Right(cleanedValue, 1) = """" Then
                cleanedValue = Mid(cleanedValue, 2, Len(cleanedValue) - 2)
            End If
            
            ' セル内の ""(二重ダブルクオート)を " に置き換え
            cleanedValue = Replace(cleanedValue, """""", """")
            
            ' カタログID列のみテキスト形式に設定
            If colNum + 1 = catalogIDColumn Then
                ws.Cells(rowNum, colNum + 1).NumberFormat = "@"
            Else
                ' 他の列は標準の書式
                ws.Cells(rowNum, colNum + 1).NumberFormat = "General"
            End If
            
            ws.Cells(rowNum, colNum + 1).Value = cleanedValue
        Next colNum
        
        rowNum = rowNum + 1
    Loop
    
    ' ファイルを閉じる
    Close #fNum
    
    MsgBox "CSVのインポートが完了しました。", vbInformation
End Sub
    

追加ご依頼可能です

内容 価格
ご依頼相談ZOOM 無料(初回)
記事内容について
カスタマイズ・設置
11,000円(税込)~
商品データ移行・登録
(データご準備あり)
1商品220円(税込)~
最低ご依頼価格44,000円~
商品登録勉強会zoom 1時間11,000円(税込)
Shopify構築
(テーマ利用シンプル + 商品データ移行)
330,000円(税込)~550,000(税込)程度

商品データ・顧客データの移行含む Shopify 構築・1万点以上の商品データ移行・ネクストエンジン導入等ご相談可能です。下記お問い合わせよりご連絡ください。※ご相談後お見積もりとなります。


お問い合わせ

お問合せ内容*