VBAで~ 第5回 の資料 続き

4 写真を挿入する

昨日 は1、2、3をやったので、
続きということで、4 になっています。

1月~12月のカレンダーに、それぞれ写真を挿入するので、
12枚の写真を用意します。
写真は、同じ大きさ、サイズの調整などが必須ですが、
これをやっていると、講座の時間内に収まりきらないので、
写真(jpg 画像)、ファイル名 1.jpg、2.jpg、~、12.jpg まで
事前にいただいてます。

変数の定義


VBAで~ 第5回 の資料 で作成した、
エクセルファイルと同じフォルダに、
その12枚の画像を入れておきます。

 

エクセルファイルと12枚の画像が、
同じフォルダに入っていない場合、については、1.4 画像をシートに配置する 
の最後に書いておきました。

 

そうしたら、そのファイルを開いて、
続きのコードを追加していきます。
今までは、変数 i だったら、
たんに、Dim i としか書いてませんでしたが、
何を扱う変数なのか、定義付けします。
むかしからの言語だと、
どういう型を、変数として使っているか、
書く必要があった、ということ。

 

画像ファイル名を格納する変数 String 型(文字列)

   Dim picName As String

今までに挿入した変数にも、
Dim i
Dim j
Dim saishuubi
Dim year

厳密には、↓ の様に記述した方が、エラーやバグを防止するそうです。Integer は、整数型だそう。
Dim i As Integer
Dim j As Integer
Dim saishuubi As Integer
Dim year As Integer
この下に、画像ファイル名を格納する変数を追加

 

図形や画像オブジェクトを扱う変数 Shape 型

図形や画像オブジェクトを扱う変数 Shape 型
  Dim myShape As Shape
これは、画像ファイル名を格納する変数の下に追加します。

 

ところで、
picName
myShape は、
自分で定義しているものなので、
用意されてるものではないので、
さいしょから大文字で打ち込まないと、

picname
myshape のままです。

 

画像をシートに配置する

このコードについて説明していると、
講座の時間内に収まらないので、写経してくださいということ。

picName = ActiveWorkbook.Path & “¥” & Trim(Str(i) & “.jpg”)
Set myShape = ActiveSheet.Shapes.AddPicture( _
  Filename:=picName, _
  linktofile:=False, _
  savewithdocument:=True, _
  Left:=Selection.Left, _
  Top:=Selection.Top, _
  Width:=0, _
  Height:=0)
myShape.ScaleHeight 0.5, msoCTrue
myShape.ScaleWidth 0.5, msoCTrue

追加する場所は、下記の、さいしょのNext の下です。
    Next
  Next
  Application.DisplayAlerts = True
End Sub

実行すると、画像が挿入されます。

 

ActiveWorkbook.Pat hで、
今、使っているエクセルファイルのPath 、
つまり、HDの住所 を指定しているので、
このエクセルファイルと同じHDの住所に、
12枚画像の画像が入ってないと、当然ですが、
  実行時エラー’1004′
  指定したファイルが見つかりませんでした。
というエラーメッセージが出てしまいます。

 

 

5 土日の日付と曜日を色付け

Select Case 構文を使って、
土曜日を青、
日曜日を赤
にしてみましょう。と書いてあります。
  Cells(27, j + 1).Font.Color = vbBlue
くらいは、わかりますが、
これをうまくまとめるにはどうしたらいいのかな~と、
やっぱり回答例を見てしまいました。

hiduke = CDate(Str(year) & “/” & Str(i) & “/” & Str(j))
  Cells(27, j + 1) = j
  Cells(28, j + 1).Value = Format(hiduke, “aaa”)
の下に、
  Select Case Format(hiduke, “aaa”)
    Case “土”
      Cells(27, j + 1).Font.Color = vbBlue
      Cells(28, j + 1).Font.Color = vbBlue
    Case “日”
      Cells(27, j + 1).Font.Color = vbRed
      Cells(28, j + 1).Font.Color = vbRed
と、なっていました。

実行すると、

 

回答例ばかり、見っぱなしでしたが、
これで、カレンダー作成 が完成しました。

 

Sub sample()
  Dim i As Integer
  Dim j As Integer
  Dim saishuubi As Integer
  Dim year As Integer
  Dim hiduke As String
  Dim picName As String
  Dim myShape As Shape


    |
  この間、省略
    |

    Else
      saishuubi = 28
    End If
  End Select
  For j = 1 To saishuubi
  hiduke = CDate(Str(year) & “/” & Str(i) & “/” & Str(j))
    Cells(27, j + 1) = j
    Cells(28, j + 1).Value = Format(hiduke, “aaa”)
    Select Case Format(hiduke, “aaa”)
     Case “土”
      Cells(27, j + 1).Font.Color = vbBlue
      Cells(28, j + 1).Font.Color = vbBlue
     Case “日”
      Cells(27, j + 1).Font.Color = vbRed
      Cells(28, j + 1).Font.Color = vbRed
    End Select
    Cells.HorizontalAlignment = xlCenter
    Range(“A27:A28”).Merge

    |
  この間、省略
    |

  Next
  picName = ActiveWorkbook.Path & “\” & Trim(Str(i) & “.jpg”)
  Set myShape = ActiveSheet.Shapes.AddPicture( _
    Filename:=picName, _
    linktofile:=False, _
    savewithdocument:=True, _
    Left:=Selection.Left, _
    Top:=Selection.Top, _
    Width:=0, _
    Height:=0)
  myShape.ScaleHeight 0.5, msoCTrue
  myShape.ScaleWidth 0.5, msoCTrue
 Next
 Application.DisplayAlerts = True
End Sub

 

 

サイトマップ