
目次
- ExcelVBAで0の折損文字化けしなうように読み込む
- 読み込む時の注意
- 作成内容
ExcelVBAで0の折損文字化けしなうように読み込む
楽天のデータをShopify用に変換する時等のVBAの工程の一部になります。
※UTF-8 はこのVBAでは文字化けしますので別の対応が必要です。
読み込む時の注意
元のCSVデータを開いて保存しなおすなどの対応は禁止です。
出力したCSVのまま対応してください。
この内容は 楽天市場など日本のプラットフォームから出力したデータを読み込む場合の仕様になっています。
Shopify から出力のCSVのデータは UtF-8 になっていますので別の対応が必要になります。
作成内容
楽天市場から出力した商品データのCSV を読みこむVBA
- " normal-item" と言う名前のシートを先に作性しておく
※シート作成についてはこちらを参考。 - シートを選択する
- 「カタログID」の列のみ文字列で処理
- 商品説明の項目などの "" で囲まれる部分に対して処理。
※読み込むCSVは Shopifyでは無く楽天市場のデータを読み込む想定なので UTF-8 の場合は別処理が必要。
すでにご購入済みの方は
こちらから
ログインしてください。
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万点以上の商品データ移行・ネクストエンジン導入等ご相談可能です。下記お問い合わせよりご連絡ください。※ご相談後お見積もりとなります。