Excelでお絵描き(ちいかわが描けるコードあるよ!)
こんにちは。
派犬事務員のコロ子です。
うさ子:最近「ちいかわ」にハマってるの~。Excelでお絵描きしてるんだ。見て!見て!
コロ子:えっ!これExcelで書いたの?
うさ子:そうだよ。図形を組み合わせて作ったの~。
な、なんと!無駄な才能!こんな事ができても何にもならないのに!
お絵描きソフトが買えないビンボーなうさ子。
ときに、ビンボーは無駄な才能を開花させるのか・・・。
うさ子の作品集
コピペで作れるよ
下のコードをコピペで、うさ子の作ったちいかわが書けるよ!
めちゃめちゃ長いのでソースコードはをクリックして表示してね。
Sub ちいかわ() Dim ws As Worksheet Set ws = ActiveSheet 'セルの色をピンク ws.Cells.Interior.Color = 10040319 '図形を作成 With ws.Shapes.AddShape(9, 230.5195, 214.5665, 180.3936, 179.237) .Fill.ForeColor.RGB = 16777215 .Line.ForeColor.RGB = 0 .Line.Weight = 4.5 .Rotation = 0 End With With ws.Shapes.AddShape(9, 207.0902, 98.44843, 228.3728, 206.0913) .Fill.ForeColor.RGB = 16777215 .Line.ForeColor.RGB = 0 .Line.Weight = 4.5 .Rotation = 0 End With With ws.Shapes.AddShape(20, 239.4303, 240.7963, 164.4258, 71.81969) .Fill.ForeColor.RGB = 16777215 .Line.ForeColor.RGB = 16777215 .Line.Weight = 1 .Rotation = 180 End With With ws.Shapes.AddShape(9, 201.426, 273.7282, 48.08788, 17.82173) .Fill.ForeColor.RGB = 16777215 .Line.ForeColor.RGB = 0 .Line.Weight = 4.5 .Rotation = 294.3798 End With With ws.Shapes.AddShape(9, 390.6777, 270.7456, 47.89866, 17.97701) .Fill.ForeColor.RGB = 16777215 .Line.ForeColor.RGB = 0 .Line.Weight = 4.5 .Rotation = 230.1965 End With With ws.Shapes.AddShape(9, 228.7372, 250.164, 19.60394, 25.60535) .Fill.ForeColor.RGB = 16777215 .Line.ForeColor.RGB = 16777215 .Line.Weight = 1 .Rotation = 0 End With With ws.Shapes.AddShape(9, 391.9751, 255.1602, 19.53197, 24.98079) .Fill.ForeColor.RGB = 16777215 .Line.ForeColor.RGB = 16777215 .Line.Weight = 1 .Rotation = 0 End With With ws.Shapes.AddShape(9, 249.9023, 373.2444, 48.27732, 17.82173) .Fill.ForeColor.RGB = 16777215 .Line.ForeColor.RGB = 0 .Line.Weight = 4.5 .Rotation = 260.6412 End With With ws.Shapes.AddShape(9, 324.8729, 376.4031, 48.27732, 17.74969) .Fill.ForeColor.RGB = 16777215 .Line.ForeColor.RGB = 0 .Line.Weight = 4.5 .Rotation = 281.2405 End With With ws.Shapes.AddShape(9, 259.8097, 349.2646, 38.83386, 31.03661) .Fill.ForeColor.RGB = 16777215 .Line.ForeColor.RGB = 16777215 .Line.Weight = 1 .Rotation = 34.59697 End With With ws.Shapes.AddShape(9, 328.1383, 359.4698, 38.53449, 28.01291) .Fill.ForeColor.RGB = 16777215 .Line.ForeColor.RGB = 16777215 .Line.Weight = 1 .Rotation = 338.5072 End With With ws.Shapes.AddShape(9, 238.8362, 92.16071, 26.88795, 42.27803) .Fill.ForeColor.RGB = 16777215 .Line.ForeColor.RGB = 0 .Line.Weight = 4.5 .Rotation = 339.0344 End With With ws.Shapes.AddShape(9, 358.4806, 84.66653, 26.95992, 42.4674) .Fill.ForeColor.RGB = 16777215 .Line.ForeColor.RGB = 0 .Line.Weight = 4.5 .Rotation = 20.16348 End With With ws.Shapes.AddShape(9, 242.4006, 115.0787, 34.01661, 23.29661) .Fill.ForeColor.RGB = 16777215 .Line.ForeColor.RGB = 16777215 .Line.Weight = 1 .Rotation = 335.768 End With With ws.Shapes.AddShape(9, 348.6313, 106.387, 34.01661, 23.52118) .Fill.ForeColor.RGB = 16777215 .Line.ForeColor.RGB = 16777215 .Line.Weight = 1 .Rotation = 17.24035 End With With ws.Shapes.AddShape(9, 267.5064, 162.107, 33.26724, 36.84653) .Fill.ForeColor.RGB = 0 .Line.ForeColor.RGB = 0 .Line.Weight = 1 .Rotation = 0 End With With ws.Shapes.AddShape(9, 331.8199, 162.107, 33.1952, 36.84653) .Fill.ForeColor.RGB = 0 .Line.ForeColor.RGB = 0 .Line.Weight = 1 .Rotation = 0 End With With ws.Shapes.AddShape(1, 274.7599, 151.9054, 20.66693, 3.747087) .Fill.ForeColor.RGB = 0 .Line.ForeColor.RGB = 0 .Line.Weight = 1 .Rotation = 357.0923 End With With ws.Shapes.AddShape(1, 338.3546, 151.3008, 20.59488, 3.747087) .Fill.ForeColor.RGB = 0 .Line.ForeColor.RGB = 0 .Line.Weight = 1 .Rotation = 6.698767 End With With ws.Shapes.AddShape(9, 274.635, 167.1031, 20.19795, 14.98835) .Fill.ForeColor.RGB = 16777215 .Line.ForeColor.RGB = 16777215 .Line.Weight = 1 .Rotation = 0 End With With ws.Shapes.AddShape(9, 338.9487, 165.8541, 20.12598, 14.98835) .Fill.ForeColor.RGB = 16777215 .Line.ForeColor.RGB = 16777215 .Line.Weight = 1 .Rotation = 0 End With With ws.Shapes.AddShape(9, 277.0113, 187.0877, 15.44551, 6.869606) .Fill.ForeColor.RGB = 16777215 .Line.ForeColor.RGB = 16777215 .Line.Weight = 1 .Rotation = 0 End With With ws.Shapes.AddShape(9, 341.3249, 186.4632, 15.44551, 6.680394) .Fill.ForeColor.RGB = 16777215 .Line.ForeColor.RGB = 16777215 .Line.Weight = 1 .Rotation = 0 End With With ws.Shapes.AddShape(9, 311.3947, 200.2026, 8.544094, 7.929449) .Fill.ForeColor.RGB = 0 .Line.ForeColor.RGB = 0 .Line.Weight = 1 .Rotation = 0 End With With ws.Shapes.AddShape(9, 310.1362, 210.8191, 11.17039, 9.269449) .Fill.ForeColor.RGB = 16777215 .Line.ForeColor.RGB = 0 .Line.Weight = 3 .Rotation = 0 End With With ws.Shapes.AddShape(20, 302.3465, 203.384, 14.45378, 10.29095) .Fill.ForeColor.RGB = 0 .Line.ForeColor.RGB = 0 .Line.Weight = 1 .Rotation = 180 End With With ws.Shapes.AddShape(20, 314.1725, 203.1236, 14.50189, 10.29095) .Fill.ForeColor.RGB = 0 .Line.ForeColor.RGB = 0 .Line.Weight = 1 .Rotation = 180 End With With ws.Shapes.AddShape(20, 311.3813, 222.0373, 9.607165, 4.412362) .Fill.ForeColor.RGB = 0 .Line.ForeColor.RGB = 0 .Line.Weight = 1 .Rotation = 180 End With With ws.Shapes.AddShape(9, 231.3647, 196.1583, 46.41323, 27.53953) .Fill.ForeColor.RGB = 15502329 .Line.ForeColor.RGB = 15502329 .Line.Weight = 1 .Rotation = 0 End With With ws.Shapes.AddShape(9, 356.5391, 195.333, 46.54811, 27.53953) .Fill.ForeColor.RGB = 15502329 .Line.ForeColor.RGB = 15502329 .Line.Weight = 1 .Rotation = 0 End With With ws.Shapes.AddLine(260.3926, 201.6024, 269.321, 218.6242) .Line.ForeColor.RGB = 0 .Line.Weight = 3 .Rotation = 0 End With With ws.Shapes.AddLine(252.3271, 201.2841, 260.7968, 218.3059) .Line.ForeColor.RGB = 0 .Line.Weight = 3 .Rotation = 0 End With With ws.Shapes.AddLine(244.6939, 200.9353, 253.1636, 217.9571) .Line.ForeColor.RGB = 0 .Line.Weight = 3 .Rotation = 0 End With With ws.Shapes.AddLine(236.7289, 199.8887, 245.4299, 216.9105) .Line.ForeColor.RGB = 0 .Line.Weight = 3 .Rotation = 0 End With With ws.Shapes.AddLine(362.2706, 198.4931, 371.199, 215.5149) .Line.ForeColor.RGB = 0 .Line.Weight = 3 .Rotation = 0 End With With ws.Shapes.AddLine(370.1311, 199.8887, 378.8321, 216.9105) .Line.ForeColor.RGB = 0 .Line.Weight = 3 .Rotation = 0 End With With ws.Shapes.AddLine(378.428, 200.5864, 387.1291, 217.6082) .Line.ForeColor.RGB = 0 .Line.Weight = 3 .Rotation = 0 End With With ws.Shapes.AddLine(386.393, 201.6331, 395.094, 218.6549) .Line.ForeColor.RGB = 0 .Line.Weight = 3 .Rotation = 0 End With End Sub
Sub ハチワレ() Dim ws As Worksheet Set ws = ActiveSheet 'セルの色をピンク ws.Cells.Interior.Color = 10040319 With ws.Shapes.AddShape(9, 293.9803, 434.6775, 39.5189, 17.37701) .Fill.ForeColor.RGB = 13408512 .Line.ForeColor.RGB = 0 .Line.Weight = 4.5 .Rotation = 21.06757 End With With ws.Shapes.AddShape(9, 318.2913, 331.3561, 48.05543, 17.72402) .Fill.ForeColor.RGB = 16777215 .Line.ForeColor.RGB = 0 .Line.Weight = 4.5 .Rotation = 265.5319 End With With ws.Shapes.AddShape(9, 136.4653, 330.9115, 48.24213, 18.12189) .Fill.ForeColor.RGB = 16777215 .Line.ForeColor.RGB = 0 .Line.Weight = 4.5 .Rotation = 270 End With With ws.Shapes.AddShape(9, 161.5973, 271.2591, 180.7217, 179.3084) .Fill.ForeColor.RGB = 16777215 .Line.ForeColor.RGB = 0 .Line.Weight = 4.5 .Rotation = 0 End With With ws.Shapes.AddShape(9, 137.9454, 154.0235, 228.6988, 206.2546) .Fill.ForeColor.RGB = 16777215 .Line.ForeColor.RGB = 0 .Line.Weight = 4.5 .Rotation = 0 End With With ws.Shapes.AddShape(20, 171.0944, 296.7804, 164.7772, 71.92118) .Fill.ForeColor.RGB = 16777215 .Line.ForeColor.RGB = 16777215 .Line.Weight = 1 .Rotation = 180 End With With ws.Shapes.AddShape(9, 160.4169, 306.2895, 19.57543, 25.52732) .Fill.ForeColor.RGB = 16777215 .Line.ForeColor.RGB = 16777215 .Line.Weight = 1 .Rotation = 0 End With With ws.Shapes.AddShape(9, 324.0079, 311.2182, 19.50354, 24.91126) .Fill.ForeColor.RGB = 16777215 .Line.ForeColor.RGB = 16777215 .Line.Weight = 1 .Rotation = 0 End With With ws.Shapes.AddShape(9, 223.7226, 443.7801, 48.24213, 17.89354) .Fill.ForeColor.RGB = 16777215 .Line.ForeColor.RGB = 0 .Line.Weight = 4.5 .Rotation = 265.8575 End With With ws.Shapes.AddShape(9, 241.0473, 443.6707, 48.24213, 18.05008) .Fill.ForeColor.RGB = 16777215 .Line.ForeColor.RGB = 0 .Line.Weight = 4.5 .Rotation = 270 End With With ws.Shapes.AddShape(9, 223.0256, 416.6737, 38.64811, 31.07213) .Fill.ForeColor.RGB = 16777215 .Line.ForeColor.RGB = 16777215 .Line.Weight = 1 .Rotation = 34.59697 End With With ws.Shapes.AddShape(9, 245.8621, 419.4603, 38.90236, 27.90236) .Fill.ForeColor.RGB = 16777215 .Line.ForeColor.RGB = 16777215 .Line.Weight = 1 .Rotation = 338.5072 End With With ws.Shapes.AddShape(9, 263.002, 219.1689, 37.94378, 34.64268) .Fill.ForeColor.RGB = 0 .Line.ForeColor.RGB = 0 .Line.Weight = 1 .Rotation = 0 End With With ws.Shapes.AddShape(9, 205.7812, 225.1271, 21.71095, 18.29409) .Fill.ForeColor.RGB = 16777215 .Line.ForeColor.RGB = 16777215 .Line.Weight = 1 .Rotation = 0 End With With ws.Shapes.AddShape(9, 270.793, 226.6386, 22.78614, 15.13134) .Fill.ForeColor.RGB = 16777215 .Line.ForeColor.RGB = 16777215 .Line.Weight = 1 .Rotation = 0 End With With ws.Shapes.AddShape(9, 207.6126, 248.3953, 15.74913, 3.696457) .Fill.ForeColor.RGB = 16777215 .Line.ForeColor.RGB = 16777215 .Line.Weight = 1 .Rotation = 0 End With With ws.Shapes.AddShape(9, 273.6053, 245.5032, 18.49087, 3.789213) .Fill.ForeColor.RGB = 16777215 .Line.ForeColor.RGB = 16777215 .Line.Weight = 1 .Rotation = 0 End With With ws.Shapes.AddShape(20, 234.1159, 259.3374, 14.30354, 10.41984) .Fill.ForeColor.RGB = 0 .Line.ForeColor.RGB = 0 .Line.Weight = 1 .Rotation = 180 End With With ws.Shapes.AddShape(20, 245.9247, 260.5346, 14.35157, 8.965827) .Fill.ForeColor.RGB = 0 .Line.ForeColor.RGB = 0 .Line.Weight = 1 .Rotation = 180 End With With ws.Shapes.AddShape(20, 240.254, 274.3129, 9.463937, 4.352913) .Fill.ForeColor.RGB = 0 .Line.ForeColor.RGB = 0 .Line.Weight = 1 .Rotation = 188.123 End With With ws.Shapes.AddShape(9, 163.0406, 252.2094, 46.21653, 27.43535) .Fill.ForeColor.RGB = 15502329 .Line.ForeColor.RGB = 15502329 .Line.Weight = 1 .Rotation = 0 End With With ws.Shapes.AddShape(9, 288.4266, 251.3952, 46.67717, 27.43535) .Fill.ForeColor.RGB = 15502329 .Line.ForeColor.RGB = 15502329 .Line.Weight = 1 .Rotation = 0 End With With ws.Shapes.AddLine(192.0262, 257.5799, 200.8123, 274.6398) .Line.ForeColor.RGB = 0 .Line.Weight = 3 .Rotation = 0 End With With ws.Shapes.AddLine(183.9724, 257.266, 192.4298, 274.3258) .Line.ForeColor.RGB = 0 .Line.Weight = 3 .Rotation = 0 End With With ws.Shapes.AddLine(176.3504, 256.9218, 184.8078, 273.9817) .Line.ForeColor.RGB = 0 .Line.Weight = 3 .Rotation = 0 End With With ws.Shapes.AddLine(168.3969, 255.8893, 177.0853, 272.9491) .Line.ForeColor.RGB = 0 .Line.Weight = 3 .Rotation = 0 End With With ws.Shapes.AddLine(294.1498, 254.5126, 302.9358, 271.5724) .Line.ForeColor.RGB = 0 .Line.Weight = 3 .Rotation = 0 End With With ws.Shapes.AddLine(301.8695, 255.8893, 310.5579, 272.9491) .Line.ForeColor.RGB = 0 .Line.Weight = 3 .Rotation = 0 End With With ws.Shapes.AddLine(310.1544, 256.5776, 319.1688, 273.6375) .Line.ForeColor.RGB = 0 .Line.Weight = 3 .Rotation = 0 End With With ws.Shapes.AddLine(318.4339, 257.6102, 327.1222, 274.6701) .Line.ForeColor.RGB = 0 .Line.Weight = 3 .Rotation = 0 End With With ws.Shapes.AddLine(214.7203, 207.1345, 224.0448, 208.9889) .Line.ForeColor.RGB = 0 .Line.Weight = 2.25 .Rotation = 0 End With With ws.Shapes.AddLine(269.2573, 205.486, 278.3835, 207.1345) .Line.ForeColor.RGB = 0 .Line.Weight = 2.25 .Rotation = 0 End With With ws.Shapes.AddLine(265.6908, 248.6693, 269.2673, 251.1176) .Line.ForeColor.RGB = 0 .Line.Weight = 3 .Rotation = 0 End With With ws.Shapes.AddLine(292.8926, 247.2955, 299.5111, 250.1239) .Line.ForeColor.RGB = 0 .Line.Weight = 3 .Rotation = 0 End With With ws.Shapes.AddLine(247.3491, 260.0783, 247.3491, 265.8224) .Line.ForeColor.RGB = 0 .Line.Weight = 3 .Rotation = 0 End With With ws.Shapes.AddShape(7, 164.4379, 124.0512, 40.05882, 48.87921) .Fill.ForeColor.RGB = 13408512 .Line.ForeColor.RGB = 0 .Line.Weight = 4.5 .Rotation = 334.992 End With With ws.Shapes.AddShape(7, 295.908, 120.8917, 40.3848, 48.87921) .Fill.ForeColor.RGB = 13408512 .Line.ForeColor.RGB = 0 .Line.Weight = 4.5 .Rotation = 24.72377 End With With ws.Shapes.AddShape(20, 156.1994, 165.4192, 93.33772, 39.83189) .Fill.ForeColor.RGB = 13408512 .Line.ForeColor.RGB = 0 .Line.Weight = 4.5 .Rotation = 163.288 End With With ws.Shapes.AddShape(20, 241.6053, 161.9731, 99.70898, 39.83189) .Fill.ForeColor.RGB = 13408512 .Line.ForeColor.RGB = 0 .Line.Weight = 4.5 .Rotation = 191.0072 End With With ws.Shapes.AddShape(9, 160.1883, 173.1383, 89.64425, 24.85268) .Fill.ForeColor.RGB = 13408512 .Line.ForeColor.RGB = 13408512 .Line.Weight = 1 .Rotation = 342.6447 End With With ws.Shapes.AddShape(9, 244.0317, 170.601, 92.83024, 24.85268) .Fill.ForeColor.RGB = 13408512 .Line.ForeColor.RGB = 13408512 .Line.Weight = 1 .Rotation = 11.89478 End With With ws.Shapes.AddShape(20, 194.3511, 159.1991, 118.8007, 35.39457) .Fill.ForeColor.RGB = 13408512 .Line.ForeColor.RGB = 13408512 .Line.Weight = 1 .Rotation = 0 End With With ws.Shapes.AddShape(9, 169.598, 175.744, 40.93165, 6.252598) .Fill.ForeColor.RGB = 13408512 .Line.ForeColor.RGB = 13408512 .Line.Weight = 1 .Rotation = 334.0313 End With With ws.Shapes.AddShape(9, 292.5388, 173.3902, 40.9315, 6.252598) .Fill.ForeColor.RGB = 13408512 .Line.ForeColor.RGB = 13408512 .Line.Weight = 1 .Rotation = 29.07698 End With With ws.Shapes.AddShape(9, 215.9576, 156.7197, 74.32851, 14.07118) .Fill.ForeColor.RGB = 13408512 .Line.ForeColor.RGB = 13408512 .Line.Weight = 1 .Rotation = 0 End With With ws.Shapes.AddShape(20, 203.175, 162.9968, 22.68213, 7.214882) .Fill.ForeColor.RGB = 13408512 .Line.ForeColor.RGB = 13408512 .Line.Weight = 1 .Rotation = 337.3877 End With With ws.Shapes.AddShape(9, 288.1392, 159.7565, 35.60441, 16.15087) .Fill.ForeColor.RGB = 13408512 .Line.ForeColor.RGB = 13408512 .Line.Weight = 1 .Rotation = 23.22238 End With With ws.Shapes.AddShape(9, 177.1706, 162.6985, 34.42173, 16.15087) .Fill.ForeColor.RGB = 13408512 .Line.ForeColor.RGB = 13408512 .Line.Weight = 1 .Rotation = 334.7345 End With With ws.Shapes.AddShape(9, 197.3227, 218.3988, 38.31827, 34.64268) .Fill.ForeColor.RGB = 0 .Line.ForeColor.RGB = 0 .Line.Weight = 1 .Rotation = 0 End With With ws.Shapes.AddShape(9, 205.479, 226.3678, 23.11221, 15.13134) .Fill.ForeColor.RGB = 16777215 .Line.ForeColor.RGB = 16777215 .Line.Weight = 1 .Rotation = 0 End With With ws.Shapes.AddShape(9, 206.5913, 245.8883, 18.81693, 3.789213) .Fill.ForeColor.RGB = 16777215 .Line.ForeColor.RGB = 16777215 .Line.Weight = 1 .Rotation = 0 End With With ws.Shapes.AddLine(198.4349, 245.6412, 204.3668, 250.509) .Line.ForeColor.RGB = 0 .Line.Weight = 3 .Rotation = 0 End With With ws.Shapes.AddLine(228.7914, 246.6583, 234.7234, 251.2791) .Line.ForeColor.RGB = 0 .Line.Weight = 3 .Rotation = 0 End With End Sub
※Excelのバージョンなどでうまく位置が合わない可能性もあるかも。
これらのコードをどうやって作ったか、というと、
Sheet1(図形があるシート)の図形をすべてループしてプロパティを取得するコードをActiveSheetに出力して作成した。
Sub 図形のコードを作成() 'ActiveSheetに図形を作成するコードを出力する Dim mySheet As Worksheet Set mySheet = ActiveSheet Dim cnt As Long cnt = 1 Dim shp As Shape 'Sheet1(図形のあるシート)の図形をループする For Each shp In Sheet1.Shapes '直線以外の図形の場合 If shp.AutoShapeType <> -2 Then mySheet.Cells(cnt, 1).Value = "With ws.Shapes.AddShape(" & shp.AutoShapeType & "," _ & shp.Left & "," _ & shp.Top & "," _ & shp.Width & "," _ & shp.Height & ")" mySheet.Cells(cnt + 1, 1).Value = ".Fill.ForeColor.RGB = " & shp.Fill.ForeColor.RGB mySheet.Cells(cnt + 2, 1).Value = ".Line.ForeColor.RGB =" & shp.Line.ForeColor.RGB mySheet.Cells(cnt + 3, 1).Value = ".Line.Weight =" & shp.Line.Weight mySheet.Cells(cnt + 4, 1).Value = ".Rotation = " & shp.Rotation mySheet.Cells(cnt + 5, 1).Value = "End With" '直線の場合 Else Dim x1 As Single, y1 As Single, x2 As Single, y2 As Single ' 直線の開始点と終了点の座標を取得 x1 = shp.Left y1 = shp.Top x2 = shp.Left + shp.Width y2 = shp.Top + shp.Height mySheet.Cells(cnt, 1).Value = "With ws.Shapes.AddLine(" & x1 & "," & y1 & "," & x2 & "," & y2 & ")" mySheet.Cells(cnt + 1, 1).Value = ".Line.ForeColor.RGB =" & shp.Line.ForeColor.RGB mySheet.Cells(cnt + 3, 1).Value = ".Line.Weight =" & shp.Line.Weight mySheet.Cells(cnt + 4, 1).Value = ".Rotation = " & shp.Rotation mySheet.Cells(cnt + 5, 1).Value = "End With" End If cnt = cnt + 6 Next shp End Sub
これを実行すると、ActiveSheetに下の図のようにコードが出力されるので、これをVBEエディタにコピペする。
Sub ちいかわ() Dim ws As Worksheet Set ws = ActiveSheet 'セルの色をピンク ws.Cells.Interior.Color = 10040319 'ここセルに出力されたコードをにコピペ End Sub
ちいかわとハチワレ以外も作りたかったけど、図形のフリーハンドを使っていて上手くいかず・・・。
次の機会(あるのか?)チャレンジするかも。