Excel2010,マクロを使用して画像挿入をした時の画像が他のPC上で見れないです。どなたか助けてくださいませんか。
Excel2010,マクロを使用した画像挿入した時の画像が他のPCへ送った時に見れませんでした。
原因は画像がリンク付けさせているから他のPCだと見えなくなっているんだと思うんですが……
マクロに関しては初心者なので教えてくださる方がいらっしゃると助かります。
過去の類似した質問はだいたい見ましたがわかりませんでした。
解決したい点は
・Excelに画像挿入するときにリンク先から表示するのではなく、画像自体をExcelへ保存して
別のサーバー上で他の方が画像を見ることができるようにする
以上になります。
仕事上画像を1つのシートあたり1000枚以上必要なのでマクロが必須です。
どなたか助言をいただけることはできないでしょうか。
よろしくお願いします。
※今使用しているマクロは下記のようになります。
すいません。これも他の方のマクロを少しいじったものです。
このどこかに問題点があると思うのですが…
Sub 複数画像挿入_サイズ変更()
Dim a As Range
Dim cc As Range
Dim W As Single
Dim H As Single
Dim mx As Long
Dim fi As Long
Dim i As Long
Dim pkfile
Const myHeight = 40 '行の高さ。0-409を指定。写真のサイズがこれで調整される。
Const myWidth = 20 '列の幅。0 - 255を指定。
On Error GoTo extLine
With Application
Set a = .InputBox("画像挿入するセル選択" & vbLf & _
"複数選択可", _
"複数画像の一括挿入(セル選択)", _
Selection.Address, _
Type:=8)
pkfile = .GetOpenFilename("すべての図" & _
"(*.emf;*.wmf;*.jpg;*.jpeg;*.jfif;" & _
"*.jpe;*.png;*.bmp;*.gif)," & _
"*.emf;*.wmf;*.jpg;*.jpeg;*.jfif;" & _
"*.jpe;*.png;*.bmp;*.gif", 2, _
"挿入する図の選択(複数選択可)", , True)
If Not IsArray(pkfile) Then
MsgBox "ファイルが指定されていません", , _
"複数画像の一括挿入"
GoTo extLine
End If
H = .InputBox("タテ", Type:=1)
W = .InputBox("ヨコ", Type:=1)
.ScreenUpdating = False
End With
mx = UBound(pkfile)
fi = 1
For Each cc In a
If cc.Address = cc.MergeArea.Item(1).Address Then
Call picIns(cc, pkfile(fi), W, H)
fi = fi + 1
If fi > mx Then
Set cc = Nothing
Exit For
End If
End If
Next
For i = fi To mx
Set a = a(a.Rows.Count, 1).Offset(1)
Call picIns(a, pkfile(i), W, H)
Next
extLine:
Set a = Nothing
Application.ScreenUpdating = False
With Err()
If .Number <> 0 Then MsgBox .Number & ":" & .Description
End With
End Sub
Sub picIns(ByVal r As Range, _
ByVal s As String, _
ByVal W As Single, _
ByVal H As Single)
With ActiveSheet.Pictures.Insert(s).ShapeRange
If (W > 0) And (H > 0) Then
.LockAspectRatio = msoFalse
.Height = H
.Width = W
ElseIf W > 0 Then
.Width = W
ElseIf H > 0 Then
.Height = H
End If
.Left = r.Left
.Top = r.Top
End With
End Sub
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
こんにちは。
私もExcel上に何100枚もの画像を貼り付ける(リンクではなく、直接挿入する)マクロを作成しています。
画像を貼り付けるところは下記のマクロを使用しています。
ActiveSheet.Pictures.Insert(Gname).Select
貴方のマクロも同様な記述がありますが、
ActiveSheet.Pictures.Insert(s).ShapeRange
これを上のマクロを参考に下記のように修正したらどうでしょう。
ActiveSheet.Pictures.Insert(s).Select
では。
ご回答ありがとうございます。
試してみた結果
「438:オブジェクトは、このプロパティまたはメソッドをサポートしていません」
となりました。
他にも試したところ同じようなエラーが出るときが多々あります。
何が悪いのでしょうか…
No.3
- 回答日時:
With ActiveSheet.Pictures.Insert(s).ShapeRange
のところを下のコードを参考に書き換えてみてください。
100, 100, 120, 80はそれぞれ
left top width heightです。
ActiveSheet.Shapes.AddPicture("C:\Program Files\Microsoft Office\MEDIA\OFFICE14\AutoShap\BD18234_.wmf", msoTrue, msoFalse, 100, 100, 120, 80).Apply
1枚が100KBとしても1000枚だと運用できるのか心配ですね。
ご回答ありがとうございます。
結果から言わせていただきますとダメでした…
何がいけないのでしょうか。
2010ではPicture.InsertではなくShapes.Addを使わなければいけないことは他の質問からも理解できました。
今回私はDreamyCatの意見を参考にしつつ、以下のように変更して試しました。
今まで:With ActiveSheet.Pictures.Insert(s).ShapeRange
今回: With ActiveSheet.Shapes.AddPicture("フルパス名.bmp", msoTrue, msoFalse, 100, 100, 120, 80).Apply
※最後の.Applyの部分は.Apply、Select、.ShapeRangeの3通りで試しました。
エラー内容は
「'438':オブジェクトは、このプロパティまたはメソッドをサポートしていません」
です。
以前の場合はエラーは起きません。
画像の数が多くて運用できない可能性もありますが、
とりあえず作成してからではないと上司が納得しないので…
なにが悪いのでしょうか。
No.4
- 回答日時:
こちらのやり取りが参考になるのでは?
http://www.moug.net/faq/viewtopic.php?t=63479
二つの方法を紹介されています。
1000枚の画像だと途中でExcelがどうにかなってしまいそうです。
バックアップはお忘れなく。
No.5
- 回答日時:
適当に書き換えても動かないのは仕方がないことです。
エラーが出るところで、なぜエラーになるのか考えて修正します。
前回提示したコード・・・ selectを使って1000枚も処理するとしたら何だかたいへんなことになりそうな気がするので。
ActiveSheet.Shapes.AddPicture("C:\Program Files\Microsoft Office\MEDIA\OFFICE14\AutoShap\BD18234_.wmf", msoTrue, msoFalse, 100, 100, 120, 80).Apply
selectは使わないほうがいいのですが、わかりやすくするなら
Applyをselectにして
with selection
.height= のようにする
あるいは、Selectを使わないで with のところをこのようにする。
With ActiveSheet.Shapes(ActiveSheet.Shapes.Count)
.Height = 200
再度回答ありがとうございます。
マクロについては初心者なので調べながら試行しています。
相変わらず何かがおかしいようです。
もしかすると私が勉強不足のためDreamy Catさんがおっしゃていることを理解できていないのかもしれません。
大変申し訳ありません。
今回変更したのは
【過去】
With ActiveSheet.Pictures.Insert(s).ShapeRange
If (W > 0) And (H > 0) Then
.LockAspectRatio = msoFalse
.Height = H
【現在】
With ActiveSheet.Shapes.AddPicture("C:\Program Files\Microsoft Office\MEDIA\OFFICE14\AutoShap\BD18234_.wmf", msoTrue, msoFalse, 100, 100, 120, 80).Apply
If (W > 0) And (H > 0) Then
.LockAspectRatio = msoFalse
.Height = H
.
です。
変更するのは
ActiveSheet.Pictures.Insert(s).ShapeRange
↓
ActiveSheet.Shapes.AddPicture("C:\Program Files\Microsoft Office\MEDIA\OFFICE14\AutoShap\BD18234_.wmf", msoTrue, msoFalse, 100, 100, 120, 80).Apply
だけで動くのでしょうか。いや何か私が理解していない点で間違っている気がします…(泣き
それと質問なのですが
フルパス名を入れる点はそのフルパス名の画像を挿入するという考えでよろしいのでしょうか?
そうすると複数選択して画像を入れるときには何か変数を用意してやるのでしょうか?
Dreamy Catさんは変更したソースで動きましたか?
まだ未熟で意味不明なことを言ってしまっているかもしれません。
どうか知恵をお貸しください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) 【VBA】写真の縦横比を変えずに貼り付ける 5 2023/06/13 11:42
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ローマ字→カタカナへ変換(エク...
-
マクロ 実行ボタンを押さずに...
-
Excelを開いた時に表示さ...
-
Excel VBA のdebug(F8キー) が...
-
複数ファイルにある特定のシー...
-
EXCELのセルへ、デジタル時計を...
-
エクセル グラフの軸の最小値最...
-
EXCEL 複数のシートの同一の位...
-
ワードマクロで画像を選択する方法
-
Excel2000 データの並べ替えで...
-
エクセルのマクロ機能で前のシ...
-
Image J ソフトの使い方
-
《エクセル2000》非表示になっ...
-
開いているフォルダを全て閉じ...
-
UWSCからエクセルのマクロを実行
-
Accessのクエリを実行するショ...
-
ワードで一連作業の繰り返し
-
ExcelVBAで印刷設定の拡大率を...
-
マクロを実行したけど…
-
マクロを実行するとフリーズし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ローマ字→カタカナへ変換(エク...
-
複数ファイルにある特定のシー...
-
マクロ 実行ボタンを押さずに...
-
EXCELのセルへ、デジタル時計を...
-
Excelを開いた時に表示さ...
-
エラーになってないのにVBA...
-
Excel VBA のdebug(F8キー) が...
-
ワードからエクセルへ貼り付け...
-
エクセルのマクロ機能で前のシ...
-
Excelのワークシート上に検索窓...
-
モジュール内のマクロを全て実...
-
エクセル グラフの軸の最小値最...
-
EXCEL 複数のシートの同一の位...
-
エクセルで複数のシートをまと...
-
【Excel VBA】エラー番号400
-
Excelマクロでオプションボタン...
-
Wordの画面を左右にスクロール...
-
マクロ ブックをマクロなしでコ...
-
Wordで「原稿用紙○枚」を換算す...
-
AccessのテーブルデータをExcel...
おすすめ情報