返品了解書作成のVBA。出版社リストのデータを他のエクセルに送る

datarenkeyecatch

こんにちは、じゅんぱ店長(@junpa33)です。

今回は,

返品了解書作成ソフト作りの中で、先回までに作成した各出版社別のデータを

エクセルBOOK「返品了解申請.xlsm」に移すVBAプログラム作りを行います。

 

抽出した書誌データを返品了解書のテンプレートへ転記するための準備作業の後半部分になります。

 

先回の返品了解書作成記事はこちら↓からお読みいただけます。

エクセルVBAで返品了解書を作成。書誌データを出版社別に処理する

 

返品了解書作成に関連の記事はこちらです。

「返品了解書作成」の記事一覧を開く

 

返品了解書作成 この記事での進め方

 

先回に作成した、各出版社別の書誌データを「返品了解申請.xlsm」に落としこみます。

 

「返品了解申請.xlsm」で行う作業の前半戦ということになります。

 

作業の流れとしては、エクセルBOOK「返品書籍情報」からのVBAで

①「返品了解申請.xlsm」を開きます。(すでに開かれているときはスルー)

②「返品了解申請.xlsm」の「返品本分類」シートに作成リストとしてデータ転記します。

 

このタイミングで、転送前のデータのチェックや修正を出来るようにします。

 

出版社リストでのVBA

 

ここからの作業用に新たに標準モジュールを挿入追加します。

 

(挿入の方法はこちら↓で確認できます。)
VBE(ビジュアルベーシックエディター)を起動する

エクセルVBA 始めての起動。VBEの立ち上げ、保存と終了」

 

「返品了解申請.xlsm」をVBAで開きます

 

「返品了解申請.xlsm」は「返品書誌情報.xlsm」と同じディレクトリにあることが必要です。

すでに「返品了解申請.xlsm」が開かれているときはこのプロシージャーはスルーされます。

関連記事

VBA 回数不定のループ処理はDo LoopとFor Each

 

MEMO

ChDirの使い方についてはこちらの記事が参考になります。

エクセルVBA カレントフォルダを簡単に変更できるChDirの使い方

 

Subプロシージャー名を「返品申請OPEN」とします。

Sub 返品申請OPEN()
 
 Dim flag As Boolean
 Dim Wb As Workbook
 Dim EXN As String

  ChDir ThisWorkbook.Path
  EXN = ThisWorkbook.Path & "\返品了解申請.xlsm"
  flag = False

  For Each Wb In Workbooks
    If Wb.FullName = EXN Then
      flag = True
      Exit For
    End If
  Next Wb
  If flag = False Then
    Workbooks.Open EXN
  End If

End Sub

 

「返品了解申請.xlsm」にデータを送ります

 

各出版社別に作成したシートの返品データを順番に拾っていき、

「返品了解申請.xlsm」の「返品本分類」シートに一覧表形式で表示します。

 

エラー処理として、対策のためのコードを埋め込みます。

「抽出データ」が空の時(返品書誌データが抽出されていないとき)はプロシージャーを終了します。

「出版社リスト」にある出版社名と出版社別シートが一致しない場合(削除された場合など)のエラーに対しては、その部分は無視して次の出版社の処理を行います。

関連記事

Gotoステートメントの利用法を最速に理解。毒コードと薬コード

 

MEMO

入力セルの最終行を取得する方法はこちらを参考にしてください。

エクセルVBA データ入力済セルの最終行番号を取得する方法

 

Subプロシージャー名を「申請データ転送」とします。

Sub 申請データ転送()

Dim HRB As Worksheet
Dim SJR As Worksheet
Dim SRow As Long
Dim SNRow As Long
Dim R As Long
Dim SN As String
Dim R As Long

  Worksheets("出版社リスト").Select
  R = Cells(Rows.Count, 1).End(xlUp).Row
  If R <= 1 Then
      MsgBox "出版社リストが作成されていません!"
      Worksheets("操作ボタン").Select
      Range("A1").Select
      Exit Sub
  End If

 Set HRB = Workbooks("返品了解申請.xlsm").Worksheets("返品本分類")
 Set SJR = Workbooks("返品書誌情報.xlsm").Worksheets("出版社リスト")
 SJR.Activate
 SRow = Cells(Rows.Count, 1).End(xlUp).Row
  For i = 1 To SRow
   SN = Range("A" & i)
   Workbooks("返品書誌情報.xlsm").Worksheets(SN).Select
   On Error GoTo step1
   SNRow = Cells(Rows.Count, 1).End(xlUp).Row
   HRB.Activate
   R = Cells(Rows.Count, 1).End(xlUp).Row
   If R = 1 Then R = 0
    Range("A" & R + 1).Value = "P" & i
    Range("B" & R + 1).Value = "ISBN"
    Range("C" & R + 1).Value = "書名"
    Range("D" & R + 1).Value = "出版社名"
    Range("E" & R + 1).Value = "著者名"
    Range("F" & R + 1).Value = "本体価格"
    Range("G" & R + 1).Value = "返品冊数"
    Range("H" & R + 1).Value = "客注名"
    Range("A" & R + 1, "H" & R + 1).Interior.ColorIndex = 35

   For j = 1 To SNRow
    Range("A" & R + 1 + j).Value = Range("A" & R + 1)
   Next j

   Workbooks("返品書誌情報.xlsm").Worksheets(SN).Activate
   Range("A1:G" & SNRow).Copy Destination:=HRB.Range("B" & R + 2)

   SJR.Select
step1:
  Next i
 HRB.Columns.AutoFit

End Sub

 

2つのプロシージャーを連続実行

 

今まで作成した2つのプロシージャー「返品申請OPEN」と「申請データ転送」を

連続で実行するプロシージャーを作成します。

 

Subプロシージャー名を「連携実行」とします。

Sub 連携実行()

返品申請OPEN
申請データ転送
  Worksheets("操作ボタン").Select
  Range("A1").Select
End Sub

 

VBAコード参考記事
ここの説明で出てくるVBAコードの参考にしていただける記事です。

vbacalleyecatch Callステートメントはプロシージャーの部品化に必須項目 エクセルVBA最速理解

 

VBA作動ボタンを「操作ボタン」シートに設置する

 

この作業の最後に、

Subプロシージャー「連携実行」を作動させるボタンを「操作ボタン」シートに設置します。

 

いつもの設置方法ですが、設置方法の確認はこちら↓でも確認できます。

データ抽出ボタンを設置する。

 

MEMO

コマンドボタンの設置方法はこちらの記事も参考になります。

エクセルVBA コマンドボタンをシートに簡単設置する方法

 

 

tensoren001a

 

 

今回作成したVBAコード

 

今回作成したVBAコードはこのような感じになります。

tensoren003a

 

 

 

出版社リストでのVBA作成のまとめ

 

ここまでの作業で、Webから入手した情報を加工し、

返品了解書のテンプレートを作ってあるエクセルBOOKにデータを送るところまで行いました。

 

出版社毎に、事前に返品データをチェックや修正したいときは、

出版社リストから作成される各出版社別のシートでチェックすることも出来ます。

 

次回は、使ったデータをクリアーして、次の使用のためにエクセルBOOK「返品書籍情報」をリセットするVBAを組み立てます。

あと、出来上がったVBAの使い方について解説していく予定です。

 

エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。
エクセルVBAを独学で習得するためのポイントは?良書との出会いは重要

 

エクセルVBAの独習には動画学習という方法もあります。 目と耳両方を使って学習することでさらに勉強効率を上げることもできると思います。
エクセルVBA初級者がUdemyで動画学習する講座おすすめ5選と無料講座の上手な使い方。

 

次の記事を読むのはこちら↓からです。

返品了解書の情報入力VBA。利用後データのクリアコードの組み立て方

 

エクセルVBAを使って、業務効率UPを図る上で始めのうちに知っておきたい内容を纏めています。

「VBA最速理解」の記事一覧を開く

 

今回の記事はここまでです。   最後までご覧いただき有難うございました。

 

<記事内容についての告知>VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。