●WordVBA~譜面(5線1段分)の切り取り画像を、Wordの所定の位置に貼り付けて、指定した色の部分を透明化することを自動化
※まだ書きかけです。すみません。
※間違ってたらすみません。
※メモ書きなので、自分でも意味不明な箇所も多いです。ごめんなさい。
この作業をする場合、最低限、以下の(01)と(02)の2つがあります。
(01)PDFファイルの画面をキャプチャソフトなどで部分トリミングして、
Wordに画像としてコピペした場合。
(02)Jpeg画像(ペイント)などの画面をキャプチャソフトなどで部分トリミングして、
Wordに画像としてコピペした場合。
※「PDFファイル」は、楽譜サイトから買ったオリジナルのPDFだとします。
で、紙に楽譜を印刷した時に、きれいに仕上がるのは(02)のほうです。
(01)だと5線がきれいに出なかったり、細かい記号がぼやけて印刷されます。
ただ、手間はかからないので、おおまかな内容の楽譜なら(01)でも十分です。
(02)は、(01)のPDFを印刷して、それを300DPI以上の解像度でスキャナで読み込んで作ります。JPEG画像などにします。PDFが20ページあれば、20枚分のJPEG画像にします。(A3スキャナがあれば10枚でOKです。)
以下、そのコピペ後に5線(譜)を自動的に縮小して、所定の位置(左からの)に配置するプログラムです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
' ' Sub FumenConf01() Dim o_Shape01 As Object Dim v_blueScreen As Variant Selection.ShapeRange.Width = 530.3 '187.08mmの幅で、タテヨコ比を維持して縮小。 Selection.ShapeRange.Left = 20 '用紙の左から20ポイント?分の位置にそろえる。 '指定した色(RGB)を透明化するブロック。 'PDFなら恐らく白(255, 255, 255)で、 'JPEGなどなら、ペイントでスポイトで吸い取った色のRGBの3つの数字。 '↓ v_blueScreen = RGB(255, 255, 255) Set o_Shape01 = ThisDocument.Shapes(ThisDocument.Shapes.Count) With o_Shape01 With .PictureFormat .TransparentBackground = True .TransparencyColor = v_blueScreen End With .Fill.Visible = False End With End Sub ' ' |
コピペ画像の左からの位置は、Wordの画面の、4隅にある「トンボ」の、『「左上のトンボ」の縦の線から 』、が基準となっているようです。(用紙の「本当の最左端から」ではなくて。)
もし位置を変えたかったら、
「Selection.ShapeRange.Left = 20」
の行の数字を変えます。
また、このプログラムでは、5線(譜)の背景を透明化しているのですが、画像によってはその背景の色が真っ白(255, 255, 255)ではない場合があります。その場合は、背景が透明化されません。
「あれ?透明化されてないな」と思ったら、次項の(02)の方法で処理します。
●RGB関数で使う数字
(01)PDFの画面をキャプチャソフトなどで部分トリミングして、Wordに画像としてコピペした場合。
255、255、255、(つまり「真っ白」)で行けるのではないかと思います。
もしダメなら次の(02)の方法で。
(02)Jpegの画面をキャプチャソフトなどで部分トリミングして、Wordに画像としてコピペした場合。
背景が真っ白ではない場合がありますので、ペイントなどで背景の色を吸い取って、そこからRGBの数値をゲットします。下図はペイントでJpeg画像を開いたときの操作方法です。
スポイトのアイコンで背景をクリックし、リボンの「丸いカラーチャート的なアイコン」を押します。
すると、スポイトアイコンでクリックした部分の背景色のRGBが数値で表示されます。
それをプログラムの数値に書き変えます。
ペイントでは上から3つの数字が表示されますので、プログラムではそれをそのまま、左から順番に書きます。