お待たせいたしました。
皆さま待望の、書誌FAX注文書の自動作成VBAについて説明を行っていきます。
完成すれば、今までの大変面倒な手書き作業から解放されます。頑張って取り組んでいきます。
先の記事でも書きましたが、エクセルBOOKは2つ作ります。
まず最初に
”発注したい書誌情報収集”と”システム全体をコントロールする”BOOKについて説明していきます。
ここからエクセルVBAの説明をしていきますが、とりあえず先に結果を見たいと思われている方もあるかと思います。そんな方に、完成の「FAX注文書作成」VBAソフトをダウンロードしていただけるようにしています。
ダウンロードしたエクセルファイルはVBAコードの保護をしていますので、改変することはできません。
一部にデフォルト設定のVBAコードのままになっています。”余分な語句”を取り除くことによって「電話帳」機能を使うことができます。
“FAX注文書作成エクセル” をダウンロード faxtyumon.zip – 3833 回のダウンロード – 100 KB
取説については「最初から使い方の説明を」をご覧ください。
このソフトはご自分で業務でお使いいただくのはフリーですが、
転載や転売については許可しておりませんので、ご使用にならないよう固くお断りいたします。
FAX注文書作成の関連の記事はこちらになります。
コンテンツ
エクセルBOOKを開き初期設定をする
以前に領収書作成についてエクセルVBAで作業していただいていれば、初期設定は不要です。
この記事で初めてという方は、
領収書作成の「エクセルの初期設定 準備作業をします」の記事で事前準備をしてください。
自分流のFAX注文書をエクセルで作っていきます
Sheet2(シート)名の変更
左下にあるタブで”Sheet2”となっている個所をダブルクリックして”名称の変更状態”にしてください。
DeleteボタンでSheet2の文字を消して「書誌データ貼付」とタイプしてください。
Sheet3(シート)名の変更
DeleteボタンでSheet3の文字を消して「抽出データ」とタイプしてください。
BOOK名を「FAX注文書作成」に変更
「ファイル」タブ→「名前を付けて保存」をクリックしてください。
保存場所は適宜分かり易い場所へ、
保存名は「FAX注文書作成.xlsm」としてください。
「書誌データ貼付」シートでの作業1
「書誌データ貼付」シートを開いてください。
下の項目をタイプしてください。
- G1セルに「抽出項目」、H1セルに「抽出セル名」
- G2セルに「書名」
- G3セルに「副書名」
- G4セルに「出版社」
- G5セルに「著者」
- G6セルに「本体価格」
- G7セルに「ISBN」
こういう感じになると思います。(ビジュアルはお好みで)
エクセルVBAを記述していきます
VBE(ビジュアルベーシックエディター)を開く
「書誌データ貼付」シートのA列に書名・出版社名などのデータを貼り付けます。
先ほど作った表はA列のどの位置にそれぞれの必要なデータが入っているかを指定する表です。
次に、吸い上げたデータを「抽出データシート」に表示します。
VBEを開き”標準モジュール”を挿入してください。
挿入方法については以前の記事で確認いただけます。
参考記事です。
エクセルVBA 始めての起動。VBEの立ち上げ、保存と終了
エクセルVBAの組み立て マクロ名設定
マクロ名を「書誌データ登録」とします。
- 書誌データ貼付シートのデータ位置指定のための変数の宣言
- 抽出データシートのデータ項目タイトル表示とそのデータ表示行数の変数
について記述します。
コード①
‘変数の宣言
Dim Boname As String
Dim Bosname As String
Dim Shuname As String
Dim Wriname As String
Dim Cos As Long
Dim IsCode As String
Dim nRow As Long
‘抽出データシートのデータ項目を記述
‘A列を使ってデータ入力済の行数を数える
Worksheets(“抽出データ”).Select
Range(“A1”).Value = “ISBN”
Range(“B1”).Value = “書名”
Range(“C1”).Value = “出版社名”
Range(“D1”).Value = “著者名”
Range(“E1”).Value = “本体価格”
Range(“F1”).Value = “冊数”
Range(“G1”).Value = “客注名”
nRow = Range(“A1”).CurrentRegion.Rows.Count + 1
End Sub
書名・副書名・出版社・著者・本体価格・ISBNのデータ取り出し
個別のデータを取り出していきます。
書誌情報をどのWebから取り出すかによって、その情報データの表記方法が少し変わってきます。
例えば、「本体価格」項目で表記方法が ”2280円(本体)” と ”2,462円(本体2,280円+税)” の違いなどがあります。
発注金額合計を計算するためには、「本体価格」項目が数値のみで表示させる必要があります。
利用されるユーザーによって利用条件が変わりますので、
ここでのコードは、デフォルト(元の表記のまま)でデータ抽出を行う設定にしています。
先ほど記述したコードの「End Sub」の直前に挿入します。
コード②
Worksheets(“書誌データ貼付”).Select
Boname = Range(“H2”).Value
Bosname = Range(“H3”).Value
Shuname = Range(“H4”).Value
Wriname = Range(“H5”).Value
Cos = Range(“H6”).Value
IsCode = Range(“H7”).Value
‘書名
Worksheets(“書誌データ貼付”).Range(Boname).Copy _
Destination:=Worksheets(“抽出データ”).Range(“B” & nRow)
‘副書名
Worksheets(“書誌データ貼付”).Range(Bosname).Copy _
Destination:=Worksheets(“抽出データ”).Range(“I” & nRow)
‘書名連結
Worksheets(“抽出データ”).Select
Range(“B” & nRow) = Range(“B” & nRow) & ” ” & Range(“I” & nRow)
Range(“I” & nRow) = “”
‘出版社
Worksheets(“書誌データ貼付”).Range(Shuname).Copy _
Destination:=Worksheets(“抽出データ”).Range(“C” & nRow)
‘著者
Worksheets(“書誌データ貼付”).Range(Wriname).Copy _
Destination:=Worksheets(“抽出データ”).Range(“D” & nRow)
‘本体価格
Worksheets(“書誌データ貼付”).Range(Cos).Copy _
Destination:=Worksheets(“抽出データ”).Range(“E” & nRow)
‘ISBN
Worksheets(“書誌データ貼付”).Range(IsCode).Copy _
Destination:=Worksheets(“抽出データ”).Range(“A” & nRow)
Worksheets(“抽出データ”).Range(“A” & nRow).NumberFormatLocal = “0_ “
この様になります。
Webからのデータを日販NOCSから入手する場合は「本体価格」のコードをこのように変更できます。
'本体価格
Dim L as Long
Dim M as Long
Dim kkkm as Long
Dim N as Long
Dim kkk as Long
L = Len(Worksheets("書誌データ貼付").Range(Cos))
M = InStr(Worksheets("書誌データ貼付").Range(Cos), "体")
kkkm = Right(Worksheets("書誌データ貼付").Range(Cos), L - M)
N = InStr(kkkm, "円")
kkk = Left(kkkm, N - 1)
Worksheets("抽出データ").Range("E" & nRow) = kkk
Webからのデータを出版書誌データベースから入手する場合は「著者」と「本体価格」のコードをこのように変更できます。
'著者
Dim Ln as Long
Dim NNN as String
Ln = Len(Worksheets("書誌データ貼付").Range(Wriname))
NNN = Right(Worksheets("書誌データ貼付").Range(Wriname), Ln - 2)
Worksheets("抽出データ").Range("D" & nRow) = NNN
'本体価格
Dim L as Long
Dim N as Long
Dim kkk as Variant
L = Len(Worksheets("書誌データ貼付").Range(Cos))
N = InStr(Worksheets("書誌データ貼付").Range(Cos), "円")
kkk = Left(Worksheets("書誌データ貼付").Range(Cos), L - N)
Worksheets("抽出データ").Range("E" & nRow) = kkk
Len関数についてはこちらを参考にしてください。
Len関数・LenB関数で文字列の文字数を知る方法。使用例で解説します
InStr関数についてはこちらを参考にしてください。
Instr関数・InstrRev関数は文字列を検索する。ファイルパス取得に威力
Right関数、Left関数についてはこちらを参考にしてください。
注文冊数と客注名を入力する
注文冊数と客注名を ”インプットボックス” を使ってデータを入力します。
さらに列幅を調節して見やすくします。
コード③
‘冊数
Worksheets(“抽出データ”).Select
mymsg1 = “冊数を記入ください。”
mytitle1 = “冊数”
mysasu = Application.InputBox(prompt:=mymsg1, Title:=mytitle1, Type:=1)
If mysasu = “” Then mysasu = 1
Range(“F” & nRow).Value = mysasu
‘客注名
Worksheets(“抽出データ”).Select
mymsg2 = “客注名を記入ください。”
mytitle2 = “客注名”
mykyaku = Application.InputBox(prompt:=mymsg2, Title:=mytitle2, Type:=2)
If mykyaku = “” Then mykyaku = “”
Range(“G” & nRow).Value = mykyaku
‘列幅自動調節
Worksheets(“抽出データ”).Select
Columns(“A:E”).AutoFit
Worksheets(“書誌データ貼付”).Range(“A1:A100”).Clear
Worksheets(“書誌データ貼付”).Activate
Range(“A1”).Select
データ抽出ボタンを設置する
「書籍データ貼付シート」に ”書誌データ登録マクロ” を実行するボタンを設置します。
開発タブから挿入をクリック ボタン(フォームコントロール)を選択します。
ボタンにマクロを登録します。
ボタン名を設定します。
ここまでの完成形です。
ここまでのまとめ
Webからデータをコピーして注文書籍の情報を取り込み、一覧表としてまとめることができました。
使い方を簡単に説明しますと、
まず、Webからデータコピーの貼り付け方法は、
A1セルをクリックして右クリック→形式を選択して貼り付け→クリック→テキストを指定
テキストデータとしてA列の各セルに上から下へズラズラとペーストされていきます。
必要項目の入っているセル番号を例えば”A1”とか”A13”という様に「抽出セル名」の欄にタイプしてください。
最後に、書誌データ抽出ボタンを押せば 「抽出データ」シートに情報が蓄積されていきます。
次は、このエクセルBOOKにつなげて、FAX注文シートを作成します。
エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。
エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です
エクセルVBAの独習には動画学習という方法もあります。 目と耳両方を使って学習することでさらに勉強効率を上げることもできると思います。
エクセルVBA初級者がUdemyで動画学習する講座おすすめ5選と無料講座の上手な使い方。


電子書籍版「Excelマクロ&VBA超入門」をamazonで見てみる
(著者)井上香緒里(出版社)技術評論社
(税込価格)1,738円(本体1,580円+税)
マクロとVBAについて学んでみたいけれど,いまひとつ自信がないという方のために,ひとつひとつの操作を丁寧に解説する1冊目の教科書です。
エクセルVBAの「い・ろ・は の い」から説明していますので、安心して取り組める参考書です。
例題として、
- 「データ消去」「シートのコピー」「メッセージボックス」の機能を持つお小遣い帳
- 「入力フォーム」の機能を持った歩数表
エクセルVBAを使って業務効率を上げて行くのに、始めのうちに知っておきたい内容を纏めています。
今回の記事はここまでです。 最後までご覧いただき有難うございました。