エクセル画像挿入マクロでずれる?エラーの原因と解決方法を解説

このQ&Aのポイント
  • エクセル2003で挿入する画像がマクロ実行時に少しずれることがあります。
  • また、実行時エラー'-2147024809(80070057)'が発生する場合もあります。
  • マクロで画像の挿入や位置・幅の調整をする際に注意すべきポイントを解説します。
回答を見る
  • ベストアンサー

エクセル 画像挿入マクロで、ずれます

 エクセル2003 ・ 挿入ファイルは emf です。  毎回 かなりの頻度で 挿入→微調整(幅をかえたり位置をかえたり)の作業があり、非常に効率が悪くマクロで出来ないものかと思いトライしていますが、何故か実行すると、少しずれて挿入(もしかすると挿入後の調整部がずれている?)されてしまいます。 後、下記のようなエラーがでる時があります。 実行時エラー’-2147024809(80070057)’: 指定した名前のアイテムが見つかりませんでした。 マクロくんですぐなので、ファイルを消してもいません。  エラーがでたマクロでは毎回同じ場所でエラーになります。何が原因なのでしょうか?  マクロで、ずれない様に挿入・位置・幅調整はどのようにするのでしょうか? (マクロ編集で数値をかえて調整しようかとおもいましたがいまいち微調整がうまくできません)

質問者が選んだベストアンサー

  • ベストアンサー
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.3

良く分かりませんが、第一引数の msoFalse を msoTrue にすればどうなるでしょうか? Selection.ShapeRange.ScaleHeight 0.43, msoTrue, msoScaleFromTopLeft Selection.ShapeRange.ScaleWidth 0.48, msoTrue, msoScaleFromTopLeft 下記マクロも試してください。 補正値は調整(加減、大小)してください。 Sub test2() Dim pic As Picture Dim pth As String Dim pname As Variant Dim rng As Range Dim i As Integer pth = "C:\Users\note\Desktop\テスト材料\jpg変換済み\材料\" pname = Array("2-小", "2-大") Set rng = Range("B24:N54, O9:X54") '挿入開始セル範囲 For i = 0 To UBound(pname) Set pic = ActiveSheet.Pictures.Insert(pth & pname(i) & ".emf") With pic .Left = rng.Areas(i + 1).Left - 0.75 .Top = rng.Areas(i + 1).Top - 0.75 .ShapeRange.LockAspectRatio = msoFalse '縦横比を無視 .Height = rng.Areas(i + 1).Height + 1.5 .Width = rng.Areas(i + 1).Width + 1.5 End With Next i End Sub

naginagisa
質問者

お礼

 ありがとうございます。 >msoFalse を msoTrue は同結果でした。  再度教えていただいたマクロでOKでした。とても時間短縮でき大感激です。本当にありがとうございました。

その他の回答 (2)

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.2

>回答番号:No.1 この回答への補足 質問1) ActiveSheet.Pictures.Insert("C:\Users\note\Desktop\テスト材料\jpg変換済み\材料\2-小.emf").Select With Selection .Left = Range("B24").Left .Top = Range("B24").Top End With Selection.ShapeRange.IncrementLeft 0.75 Selection.ShapeRange.IncrementTop 0.75 Selection.ShapeRange.ScaleHeight 0.43, msoFalse, msoScaleFromTopLeft Selection.ShapeRange.ScaleWidth 0.48, msoFalse, msoScaleFromTopLeft ActiveSheet.Pictures.Insert("C:\Users\note\Desktop\テスト材料\jpg変換済み\材料\2-大.emf").Select With Selection .Left = Range("O9").Left .Top = Range("O9").Top End With Selection.ShapeRange.IncrementLeft 0.75 Selection.ShapeRange.IncrementTop 0.75 Selection.ShapeRange.ScaleHeight 0.43, msoFalse, msoScaleFromTopLeft Selection.ShapeRange.ScaleWidth 0.48, msoFalse, msoScaleFromTopLeft 質問2) 次のシートをActiveにする Sheet("Sheet2").Activate 質問3) 下記コードで数値を変えてみる Selection.ShapeRange.IncrementLeft 0.75 Selection.ShapeRange.IncrementTop 0.75 Selection.ShapeRange.ScaleHeight 0.43, msoFalse, msoScaleFromTopLeft Selection.ShapeRange.ScaleWidth 0.48, msoFalse, msoScaleFromTopLeft 下記マクロを試してみてください。 詳細がよく分からないので挿入位置とか適当に決めています。 Sub test1() Dim pic As Picture Dim pth As String Dim pname As Variant Dim rng As Range Dim i As Integer pth = "C:\Users\note\Desktop\テスト材料\jpg変換済み\材料\" pname = Array("2-小", "2-大") Set rng = Range("B2:H12") '挿入開始セル範囲 For i = 0 To UBound(pname) Set pic = ActiveSheet.Pictures.Insert(pth & pname(i) & ".emf") With pic .Left = rng.Left .Top = rng.Top .ShapeRange.LockAspectRatio = msoTrue '縦横比維持 .Height = rng.Height '高さ基準 '.Width = rng.Width '幅基準 End With Set rng = rng.Offset(12) '挿入位置を12行下方にずらす Next i End Sub

naginagisa
質問者

お礼

 度々ありがとうございます。  質問1・2(2つの画像挿入と次のシートへ移動)は理解できました。 どうしても質問3の幅調整がうまくいきません(位置調整はうまくいきそうです) >Selection.ShapeRange.ScaleHeight 0.43, msoFalse, caleFromTopLeft の値を0.434にすると足らず(狙いより6ピクセル程小さい)、 0.435にすると一気に伸びます(狙いより6ピクセル程大きい)。0.001倍の差で何故ここまで違うのかわかりません。  横のほうも 0.475と0.476で同じような感じです。自分なりにずっと調べているのですが理解力が乏しいのか解決できません。 >下記マクロを試してみてください。 位置はファイル2-小 をB24:N54へ  2-大をO9:X54に挿入したいので Set rng = Range("B24:N54", "O9:X54")としたのですが駄目でした。 取りあえず単体でどうなるかと思い、2-小を Set rng = Range("B24:N54")としてみましたが、指定どおりきました。しかし、僅かに左と上によっている感じです(カーソールを右と下を一回ずつ押し右と下の幅を狭めればよい感じでした・・・セルの枠線が太いのですが半分消えてる感じです)  画像にラインが数本あり、セルの枠線と合わせないといけない為、微調整が必要となります。(一度うまくいけば、ライン位置などはすべて同じですので大丈夫です)その為、質問1で回答頂いたマクロの方がうまくできるのであれば微調整しやすいかもしれません・・・ど素人の発想ですが。   あと少しで解決できそうです。お力をお貸しください。

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.1

セルを指定すればどうでしょうか。 Dim pic As String pic = "C:\Users\○○○\Pictures\AAA.jpg" With ActiveSheet.Pictures.Insert(pic).ShapeRange   .Left = Range("B2").Left   .Top = Range("B2").Top End With 一度、現状のマクロを提示していただくことはできないでしょうか。

naginagisa
質問者

お礼

 ありがとうございます。 2つのシート各2つの画像を挿入しましたが、1つ目のシートの2つ目で ”指定した名前のアイテムが見つかりませんでした”と表示されそれ以降挿入されません。 下記がマクロです。よろしくおねがいします。仕事がはかどらず困っています。(文字制限があるので後半削除します) Sub Macro2() ' Macro2 Macro ' マクロ記録日 : 2009/7/10 ユーザー名 : note ' Keyboard Shortcut: Ctrl+Shift+A Range("B24").Select ActiveSheet.Pictures.Insert("C:\Users\note\Desktop\テスト材料\jpg変換済み\材料\2-小.emf"). _ Select ActiveWindow.SmallScroll Down:=75 Selection.ShapeRange.IncrementTop 0.75 Selection.ShapeRange.ScaleHeight 0.43, msoFalse, msoScaleFromTopLeft ActiveWindow.SmallScroll Down:=-18 Selection.ShapeRange.ScaleWidth 0.48, msoFalse, msoScaleFromTopLeft ActiveWindow.SmallScroll Down:=-18 Range("P33").Select ActiveSheet.Shapes("Picture 201").Select Selection.ShapeRange.IncrementLeft 0.75 ActiveWindow.SmallScroll Down:=6 Range("O41").Select ActiveWindow.SmallScroll Down:=-18 Range("O9").Select ActiveSheet.Pictures.Insert("C:\Users\note\Desktop\テスト材料\jpg変換済み\材料\2-大.emf"). _ Select ActiveWindow.SmallScroll Down:=96 Selection.ShapeRange.IncrementTop 0.75 ActiveWindow.LargeScroll ToRight:=1 Selection.ShapeRange.IncrementLeft 0.75 ActiveWindow.SmallScroll Down:=-42 Selection.ShapeRange.ScaleWidth 0.43, msoFalse, msoScaleFromTopLeft

naginagisa
質問者

補足

 マクロをくんで・・と質問しましたが表現が間違っていました。 組むほどの知識はありません。記録のスタートで作成しているレベルです。もっと勉強します。とりあえず回答いただいた物を挿入し指定の場所に挿入ができました。 ただ、 質問1) 同シートにもう1つの画像を挿入するときには同すればよいのか?(連続で回答していただいた物を貼り付けましたがエラーになります) 質問2) 次のシートに挿入するにはどうすればよいのか? 質問3) 挿入した画像の位置(右に1、下に1つずらす・・カーソールの→や下を1回押す・)や縦横の幅調整はどのようにすればよいのか? 取り急ぎこの3つが理解できればどうにかなりそうです。 こちらも勉強をしてみますが何分急いでいますので教えていただけたら助かります。

関連するQ&A

  • エクセルで画像の挿入マクロについて

    エクセルのB列にJANコードが入力してあり、 (1)セル内容コピー  (2)C列にそのJANコード.emfのファイル名画像を挿入 (3)次の行に移る この作業をマクロ記録してみたところ内容が下記の様になりました。 Sub JAN() ' ' JAN Macro ' ' Keyboard Shortcut: Ctrl+Shift+Q ' Selection.Copy ActiveCell.Offset(0, 1).Range("A1").Select ActiveSheet.Pictures.Insert( _ "C:\Users\user\Documents\JAN_バーコード\1234567890123.emf").Select ActiveCell.Offset(1, -1).Range("A1").Select End Sub 挿入する画像のファイル名が最初のものに固定されてしまっているのですが、 これを次のセル内容に自動で変える為にはどうすればよいでしょうか。

  • エクセル マクロ 列挿入後のカーソル位置

    エクセルで「1列挿入する」だけのマクロを作成した時のことです。 実行させると1列挿入しますが、挿入後のカーソル位置は変わらず、元の列全体が反転表示されてます。ところが、複数シートを選択しマクロ実行すると、列挿入はしますが、カーソルは元の列のひとつ右側の列が反転表示されます。 手作業で1列挿入すると、1シートでも複数シートでも挿入後のカーソルは元の位置です。マクロ作成し複数シートを選択して実行するとカーソル位置が変わるのです。 なぜですか? 特に相対参照でマクロを作る場合、選択するシート数でカーソル位置が変わると困ります。 良い方法はないでしょうか?

  • エクセルのマクロについてです。

    マクロを作ったのですが、実行させようとすると『実行時エラー1004』というのが出て、うまく実行できません。微妙な操作(一つのセルをソートして選択すると実行できます)をすると実行出来ますが、毎回上記のエラーが出てしまいます。これを解消するにはどうすればよいでしょうか?

  • エクセルでの画像挿入

    エクセル(2003)で画像を挿入した際に その画像の右のセルにファイル名も入れたいのですが このようなマクロがあれば教えていただきたいです それと上記のとは別に画像にポインタを会わせた時に ファイル名をその場かもしくは どこかに表示させることは可能ですか? それと既に挿入してしまった画像のファイル名を知ることは可能ですか? あまりマクロには詳しくないので 分かりやすいとありがたいです

  • エクセルのマクロについて

     エクセル2000を使用しています。  先月使っていたファイルをコピーして、今月分のデータを新たに入力しようと思ったのですが、このファイルにはマクロが設定されており、コピーした新しいファイルではエラーメッセージが出てマクロが実行されません。  このエラーメッセージ通りセキュリティーレベルを変更したのですが、やはり同じエラーメッセージが出てマクロが実行されません。  そこで先月分のファイルからマクロ部分のみをコピーして張り付けてみました。  これによってマクロは実行されるものの、その実行にとても時間が掛かってしまいます。  これを解決する良い方法があったら教えて下さい。よろしくお願いします。  *当方は初心者ですので、できれば難解な専門用語は使わないで下さい。お願いします。

  • Excelにマクロを使って写真を挿入したいのです。

    Excelにマクロを使って写真を挿入したいのです。 ネットサーフィンして挿入できるマクロ(下)を見つけたので 恐縮ながら使ってみたのですが・・・。 マクロを実行すると、"ファイルを開く"画面が開いて、 ファイル、フォルダの一覧表示が出てきました。 これをサムネイル表示になる画面にするには、どうすればよいのでしょうか? また、画面下の"ファイルの種類"では、"すべてのファイル(*.*)" になっていて 画像ファイル以外のファイルもたくさん表示されてしまいます。 これを画像ファイルに限り表示されるようにしたいのですが、 どうすればよいのでしょうか? 使用するExcelバージョンは、2000です。 Sub 画像取込() Dim PicFile As String PicFile = Application.GetOpenFilename() If PicFile = "False" Then Exit Sub ActiveSheet.Pictures.Insert PicFile End Sub 識者の方、よろしくお願いします。

  • マクロの設定について

    マクロでファイル1のシート1のデータをクリア一部クリアしたあと ファイル2のシート1,2の一部データもクリアをしようとマクロの新規記憶をさせ実行したところ、何度トライしても「エラー9、インデックスが範囲にありません」となります。 同じファイル内でシート1,2,3とマクロの処理は実行できますが、ファイル間では無理なのでしょうか?教えて下さい

  • エクセル) 複数の画像を同時に挿入するマクロについて

    仕事上、エクセルに画像を挿入することが多く、場合によって200枚の画像を挿入することがあります。 なんとかならないかとWebで調べたら下記のサイトに行き着きました。 http://pc.nikkeibp.co.jp/article/NPC/20071101/286186/?P=1 このマクロを半信半疑に実行したら、見事に"picuture"というシートにズラーーーっと画像がいっきに挿入されました。 スゴイ!!まさに神みたいなマクロでした。 ただ、数箇所「うーーん・・。」という点があります。 1)■■挿入した各画像の大きさの『縦x横 比』■■ 挿入した全ての画像の"横"の大きさは「セル2個分」にフィットしています。 これはいいの全然いいです。バッチリです。 問題はそれに対する縦です。縦横比を保持しないで縦の大きさが6セル分に無理矢理フィットします。 つまり強引に横2セルx縦6セルの画像になってしまいます。 縦横比を保持できないでしょうか? ちうなみに貼り付ける画像は全て正方形よりやや横長です。。 2)■■挿入した画像がハイパーリンクになってる。■■ 挿入した画像の位置を微妙に変えようと、白い十字キーのポインターを画像の上に持っていくと、IEでリンク先をクリックするときに出てくる「白い手袋をした人差し指を立てたポインター」に変わります。 これだと画像が選択できません。 以上この2点どなたかマクロに詳しい方がいらっしゃいましたら解決していただけますでしょうか? 回答下さった方には心底お礼したいです!!お願い致します。 お願いします!

  • Excel 2007のマクロについて

    今、Excel 2007でOSはVistaを使っているのですが、グラフ上でマクロにしたいのですが、実行できません。 セキュリティに関しては、有効にしていますし、タブもチェックを入れています。ファイル形式もマクロ有効ファイルにしています。 ただ、グラフ上の場合が実行できません。 エラー表示ではメソッドが実行できないと表示されるのですが、XPで同じ動作をしたら実行できました。 マクロを記録する際に、問題があるのでしょうか。

  • Excelのマクロを使ってコメントを表示させる

    マクロを使ってセルにコメントを挿入したいのですが、どうしてもエラーが出て先に進めません。 エラー内容 実行時エラー:438 オブジェクトは、このプロパティまたはメソッドをサポートしていません。 【Excel2007 SP1】を使っています。 マクロに詳しい方、ご教授よろしくお願いします。

専門家に質問してみよう