• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルのマクロについて)

エクセルのマクロで図形描画を結合したセルに移動する方法

このQ&Aのポイント
  • エクセルを使用して図面中の図形描画で描かれた四角のオブジェクトを結合したセル(G7:H8)の中央に移動させるマクロを組む方法について説明します。
  • マクロを組み実行すると動作はOKですが、保存の際にエラーが発生し修復する必要があります。修復したレコードは「/xl/drawings/drawing1.xml」内のスケッチ(図形描画)です。
  • 以下のマクロコードを使用して図形を移動させることができます。 Sub 打合図() ' ' 打合図 Macro ' ActiveSheet.Shapes.Range(Array("AutoShape 12")).Select Selection.Cut Range("G7:H8").Select ActiveSheet.Paste With Selection .Top = (Range("G9").Top - Range("G7").Top - .Height) / 2 + Range("G7").Top .Left = (Range("I7").Left - Range("G7").Left - .Width) / 2 + Range("G7").Left End With Range("N8").Select End Sub

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

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

当方の環境(Win7SP1+Excel2010)ではエラーもなく保存できました。 コード中でAutoShape 12を削除しているので、今回コードが提示されていない部分で問題が起きているのかもしれません。 以下の様にカット&ペーストではなく、単なる移動にするとどうでしょう? Sub 打合図()   ActiveSheet.Shapes.Range(Array("AutoShape 12")).Select   With Selection     .Top = (Range("G9").Top - Range("G7").Top - .Height) / 2 + Range("G7").Top     .Left = (Range("I7").Left - Range("G7").Left - .Width) / 2 + Range("G7").Left   End With   Range("N8").Select End Sub

konkichikonkon
質問者

お礼

ありがとうございます。 コピーペーストして実行しました。 動作は問題ないのですが、やはり保存の際 エラーが発生してしまいます。 AutoShape 12が何かに引っかかるのでしょうか。

その他の回答 (1)

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

移動だけでも駄目でしたか。 と、なるとAutoShape12またはブック自体が破損している可能性も考えた方が良さそうですね。 次の方法を試してください。 1.Excelを起動。 2.「ファイルを開く」で今回のブックを選択し、<開く>ボタンの右にある▼を押してメニューを出す。 3.メニューから「開いて修復する」で、ブックを開き修復する。 一応、念のためにブックのコピーを取ってから試してください、

konkichikonkon
質問者

お礼

マクロの登録を一度すべて消去し、 一旦xlsの拡張子で保存しました。 その後、再度マクロを貼り付けxls形式で 保存したところ上手くいきました。 動作も良好です。 xlsmの拡張子にするとなぜか調子が 悪いみたいです。 ありがとうございます。

関連するQ&A

専門家に質問してみよう