teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

コード削除

2015/11/26 23:27

投稿

cat_junko
cat_junko

スコア44

title CHANGED
File without changes
body CHANGED
@@ -1,5 +1,3 @@
1
- 下記のようなマクロコードがあります。
2
- 実行すると結合した任意のセルに写真を貼り付けてくれます。
3
1
  複数選択で一括で貼り付けることができるとっても便利なコードなのですがこれを変更したいです。
4
2
  1、貼り付けた写真を結合セルの中央に持ってきたい。
5
3
  2、複数選択し貼り付けるとき任意の順番で貼り付けたい。
@@ -9,173 +7,6 @@
9
7
 
10
8
  こんな機能付けるコードは、難しいでしょうか?
11
9
  ------------------------------------------------
12
- '写真ファイルや図形ファイルなどの複数画像を一括で選択し、セルの行順(または任意のセル)に挿入します。
13
- 'セルのサイズに合わせて画像のサイズ縮小(または拡大)することもできます。
14
-
15
- Dim n, fi, cc As Range, ya, ca, g, ok, fl, l
16
- Sub 複数画像の挿入()
17
- Dim a, c, sr, sc, s, rr, pkfile, ar, ac, z, rc, ccc, ca0
18
- On Error GoTo err
19
- Set a = Application.InputBox("画像を挿入するセルを選択してください" _
20
- & Chr(13) & Chr(10) & "複数選択可 (ShiftキーまたはCtrlキーで選択)" _
21
- , "複数画像の一括挿入(セル選択)", Selection.Address, , , , , 8)
22
- Application.ScreenUpdating = False
23
- a.Select
24
- sr = Selection.Row
25
- sc = Selection.Column
26
- rr = sr
27
- pkfile = Application.GetOpenFilename _
28
- ("すべての図(*.emf;*.wmf;*.jpg;*.jpeg;*.jfif;*.jpe;*.png;*.bmp;*.gif;*.eps), *.emf;*.wmf;*.jpg;*.jpeg;*.jfif;*.jpe;*.png;*.bmp;*.gif;*.eps", 2, "挿入する図の選択(複数選択可)", , True)
29
- If Not IsArray(pkfile) Then MsgBox "ファイルが指定されていません", , "複数画像の一括挿入": End
30
- For fi = 1 To UBound(pkfile)
31
- If pkfile(fi) = False Then MsgBox "ファイルが指定されていません", , "複数画像の一括挿入": End 'キャンセルの場合終わる
32
- Next fi
33
- n = ActiveSheet.Pictures.Count
34
- Application.DisplayAlerts = False
35
- z = MsgBox("画像のサイズをセルに合わせますか", vbYesNo, "複数画像の挿入")
36
- ok = 0
37
- If Application.Version < 12 Then
38
- If MsgBox("縦横比を保持しますか", 4, "複数画像の一括挿入") = 6 Then ok = 0 Else ok = 1
39
- End If
40
- If z = 6 Then ya = MsgBox("画像圧縮しますか", vbYesNo, "複数画像の挿入")
41
- l = MsgBox("元の画像へのリンクを作成しますか", 4 + 256)
42
-
43
- ar = a.Address
44
- ac = Range(ar).Count
45
- fi = 1
46
- If ac > 1 Then GoTo ech Else GoTo pc
47
- ech:
48
- ca0 = ""
49
- For Each cc In ActiveSheet.Range(ar)
50
- ca = Range(cc.Address).MergeArea.Address
51
- rc = Range(ca).Rows.Count
52
- ccc = Range(ca).Columns.Count
10
+ 1,2,3を、解決することが出来たのでコード削除しました。
53
- If rc > 1 Or cc > 1 Then
54
- ca = Cells(Range(ca).Row + rc - 1, Range(ca).Column + ccc - 1).Address
55
- End If
56
- If ca0 = ca Then GoTo mne
57
- ca0 = ca
58
- ca = Range(cc.Address).MergeArea.Address
59
- Range(ca).Select
60
-
61
- ' cc.Select
62
- g = ActiveSheet.Shapes.AddPicture( _
63
- Filename:=pkfile(fi), _
64
- LinkToFile:=False, _
65
- SaveWithDocument:=True, _
66
- Left:=Selection.Left, _
67
- Top:=Selection.Top, _
68
- Width:=400#, _
69
- Height:=300#).Name
70
- '図のサイズを元のサイズに戻します
71
-
72
- With ActiveSheet.Shapes(g)
73
- .ScaleHeight 1!, msoTrue
74
- .ScaleWidth 1!, msoTrue
75
- End With
76
-
77
- fl = pkfile(fi)
78
- '右のセルにファイル名を表示
79
- Cells(Range(ca).Row, Range(ca).Column + 1) = fl
80
-
81
- If z = 6 Then セルにサイズを合わせる
82
- fi = fi + 1
83
- If fi = UBound(pkfile) + 1 Then GoTo en
84
- mne:
85
- Next
86
- Application.DisplayAlerts = True
87
- a.Select
88
- Exit Sub
89
-
90
- pc:
91
- For fi = 1 To UBound(pkfile)
92
- ca = Cells(rr, sc).Address
93
- Range(ca).Select
94
- g = ActiveSheet.Shapes.AddPicture( _
95
- Filename:=pkfile(fi), _
96
- LinkToFile:=False, _
97
- SaveWithDocument:=True, _
98
- Left:=Selection.Left, _
99
- Top:=Selection.Top, _
100
- Width:=400#, _
101
- Height:=300#).Name
102
- '図のサイズを元のサイズに戻します
103
-
104
- With ActiveSheet.Shapes(g)
105
- .ScaleHeight 1!, msoTrue
106
- .ScaleWidth 1!, msoTrue
107
- End With
108
-
109
- fl = pkfile(fi)
110
- '右のセルにファイル名を表示
111
- Cells(Range(ca).Row, Range(ca).Column + 1) = fl
112
-
113
- If z = 6 Then セルにサイズを合わせる
114
- rr = rr + 1
115
- Next fi
116
- Exit Sub
117
- en:
118
- Application.DisplayAlerts = True
119
- Application.ScreenUpdating = False
120
-
121
- a.Select
122
- Exit Sub
123
- err: MsgBox "選択が正しくありません", , "複数画像の一括挿入"
124
- End Sub
125
-
126
- Sub セルにサイズを合わせる()
127
- Dim c As Range, cm As Range
128
- Dim rX As Single, rY As Single, r As Single
129
-
130
- Application.ScreenUpdating = False
131
- ' For Each c In Selection
132
-
133
- ' Set cm = c.MergeArea
134
- Set cm = Range(ca)
135
- ' If c.Address = cm.Item(1).Address Then
136
- ' If Application.Dialogs(xlDialogInsertPicture).Show = False Then Exit Sub
137
- ActiveSheet.Shapes(g).Select
138
- With Selection
139
- rX = cm.Width / .Width
140
- rY = cm.Height / .Height
141
- If ok = 0 Then
142
- If rX < rY Then
143
- cx = .Width * rX
144
- cy = .Height * rX
145
- Else
146
- cx = .Width * rY
147
- cy = .Height * rY
148
- End If
149
- Else
150
- cx = cm.Width
151
- cy = cm.Height
152
- End If
153
- .Width = cx
154
- .Height = cy
155
- .Left = cm.Left
156
- .Top = cm.Top + cm.Height - .Height
157
- If ya = 6 Then 図の圧縮
158
- End With
159
- ' End If
160
- ' Next
161
- Set cm = Nothing
162
- Application.ScreenUpdating = True
163
- End Sub
164
- Sub 図の圧縮()
165
- Selection.Cut
166
- Range(ca).Select
167
- ActiveSheet.PasteSpecial Format:="図 (JPEG)"
168
- If l = 6 Then
169
- ActiveSheet.Hyperlinks.Add Anchor:=Selection.ShapeRange.Item(1), Address:=fl
170
- Else
171
- Cells(Range(ca).Row, Range(ca).Column + 1) = ""
172
- End If
173
- g = Selection.ShapeRange.Name
174
-
175
- End Sub
176
- ------------------------------------------
11
+ -------------------------------------------------
177
- 下記、サイトからの引用のようです。
178
- http://kiyopon.sakura.ne.jp/soft/fukuzu.htm
179
- (先輩が、作成したものではなかったようです)
180
- 「エクセルの学校」にもここ引用このコードをそのまま貼り付け各自の仕様に質問しているようです。
12
+ 画像を載せたったのですがま載せられない状態なっている時間をおいて載せたいと思います。
181
- なので、私も私仕様にしたいのでご教示願います。

1

引用追記

2015/11/26 23:27

投稿

cat_junko
cat_junko

スコア44

title CHANGED
File without changes
body CHANGED
@@ -173,4 +173,9 @@
173
173
  g = Selection.ShapeRange.Name
174
174
 
175
175
  End Sub
176
- ------------------------------------------
176
+ ------------------------------------------
177
+ 下記、サイトからの引用のようです。
178
+ http://kiyopon.sakura.ne.jp/soft/fukuzu.htm
179
+ (先輩が、作成したものではなかったようです)
180
+ 「エクセルの学校」にも、ここからの引用でこのコードをそのまま貼り付け各自の仕様にするために質問しているようです。
181
+ なので、私も私仕様にしたいのでご教示願います。