Excel2010で作成したマクロをExcel2007で使用する方法

このQ&Aのポイント
  • Excel2010で作成したマクロをExcel2007で使用する方法について教えてください。結合セルをダブルクリックしても画像選択画面が出てこない問題があります。
  • オンラインのQ&Aサイトで見つけたマクロをExcel2010で使っています。結合セルをダブルクリックして画像を選択すると、画像が枠内にぴったり収まるようになっています。しかし、同じExcelファイルをExcel2007で使用すると、画像選択画面が表示されず、画像の調整ができません。
  • Excel2010で作成したマクロをExcel2007で使用する際、結合セルをダブルクリックして画像を選択する方法を教えてください。Excel2007では、マクロを使って画像を枠内にぴったり収めることができません。
回答を見る
  • ベストアンサー

Excel2010で作成のマクロを2007で使用

以下のマクロをExcel2010で入力(ネットで拾ったものをコピペしただけです)し、 結合セルをダブルクリックで画像を選択すると枠内にぴったり収まるようにしたのですが、 同じExcelファイルをExcel2007で使用すると、結合セルをダブルクリックしても 画像選択画面が出てきません。 Excel2007でも同様に使用できるようにする方法があれば教えてください。 参考に、マクロを拾ったURLも貼っておきます。 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1429681184 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim WDT, HGT Application.ScreenUpdating = False WDT = Target.Width HGT = Target.Height On Error GoTo Fin Application.Dialogs(xlDialogInsertPicture).Show With Selection.ShapeRange .LockAspectRatio = msoFalse .Width = WDT .Height = HGT End With Fin: On Error GoTo 0 Application.ScreenUpdating = True End Sub

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

  • ベストアンサー
回答No.1

2007持ってないんで デバッグとかはできないんですが ぐぐった感じでは、Application.Dialogs(xlDialogInsertPicture).Showは 2007でも普通に使える様なので モジュールを貼った位置が間違っているんではないでしょうか? 例えばSheet1で動かしたいのに Sheet2に貼ってるとか、標準モジュールに貼ってるとか。 エラーが出てるとかなら、機能が使えなくなった可能性も考えられますけど 何も怒らないのであれば、イベント自体が起きてないんじゃないですか。 あとはマクロのセキュリティが無効になってるとか?

jazzjung
質問者

お礼

マクロの貼り付け位置は合っていましたので、 セキュリティで全てのマクロを有効にしたら問題なく 使用することができました。 セキュリティは確認したつもりでいたのですが、snowsan062さんのおかげで再確認できました。 ありがとうございます。

その他の回答 (1)

  • x0000x
  • ベストアンサー率52% (67/127)
回答No.2

マクロ修正なしでExcel2007で動作します。 セルの大きさに合わせ画像のサイズを調整しているので 単一セルでも、結合セルでも問題なく動作しました。 作成されているマクロは、シートのコードに記述する必要があります。 シートでダブルクリック操作を行う事で "Worksheet_BeforeDoubleClick"イベント発生により マクロ処理が実行できます。 提示頂いたURLにも書かれています。 > マクロは、シートタブの右クリックメニューから「コードの表示」を > 選択して表示される画面に記述(コピペ)します。

jazzjung
質問者

お礼

マクロ設定が原因でした。 ありがとうございます。

関連するQ&A

  • エクセル マクロ

    エクセルのある特定のセルをダブルクリックすると 画像ファイルを参照しにいき 貼りつけたい画像ファイル選ぶと そのセルの大きさに合わせて 画像ファイルがそのセルに 貼りつくというマクロが以下の通りなんですが Excel2003からExcel2007へ変更すると 画像ファイルの貼りつく位置がダブルクリックしたセルではない所に 貼りつくようになりました 参照や大きさなどはちゃんと機能しているようです どこを変更すればよいでしょうか? Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range('特定のセル)) Is Nothing Then Exit Sub Cancel = True Dim myPic Dim myRange As Range Dim rX As Double, rY As Double myPic = Application.GetOpenFilename("画像ファイル,*.jpg;*.jpeg;*.gif;*.tif") If VarType(myPic) = vbBoolean Then Exit Sub Set myRange = Target Application.ScreenUpdating = False With ActiveSheet.Pictures.Insert(myPic).ShapeRange rX = myRange.Width / .Width rY = myRange.Height / .Height If rX > rY Then .Height = .Height * rY Else .Width = .Width * rX End If .Left = .Left + (myRange.Width - .Width) / 2 .Top = .Top + (myRange.Height - .Height) / 2 End With Application.ScreenUpdating = True Cancel = True End Sub

  • Excel写真帳の写真を挿入マクロを教えて下さい。

    Excelで工事写真帳での写真枠のダブルクリックで写真挿入の マクロを教えて下さい。 使用パソコン 第1パソコン・Windows7・Excel2013 第2パソコン・WindowsXp・Excel2003 現在Excel2013をメインに使用しています。 今までExcel2003でExcelでの工事写真帳と資料用の写真帳をマクロで 写真挿入枠をセルの結合で作成して、ダブルクリックで写真データ保存の フォルダを開いて写真の挿入をしていました。 Excel2013で使用すると データ(工事写真帳と資料用の写真帳)を別のパソコンへ移動したり データを第三者への提出したり、写真データの移動/削除すると 下記のような状態(コメント)になります。 リンクされたイメージを表示出来ません。ファイルが移動または削除されたか、 名前が変更された可能性があります。リンクに正しいファイル名と場所が 指定されていることを確認して下さい。 状況は、たぶんリンク貼り付けになってしまう仕様に新Excelはなっている。 Excel 2010 で Pictures.Insert メソッドを使用して図をワークシートに 挿入すると図がリンク オブジェクトとして挿入される http://support.microsoft.com/kb/2396509/ja だと思っててます。 リンク回避もしくはマクロをどの様に変更したら良いのでしょうか。 使用しているマクロは下記です。(Excel2003で使用していたマクロ) よろしくご教授をお願いします。。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim fname As String Dim pos As Integer If Target.Column <> 2 Then Exit Sub If Target.Cells.count = 1 Then Exit Sub Cancel = True fname = Application.GetOpenFilename() If fname = "False" Then Exit Sub pos = InStrRev(fname, ".") If pos > 0 Then Select Case LCase(Mid(fname, pos + 1)) Case "jpeg" Case "jpg" Case "gif" Case Else Exit Sub End Select Else Exit Sub End If With ActiveSheet.Pictures.Insert(fname) .ShapeRange.LockAspectRatio = msoTrue .Height = Target.Height If .Width > Target.Width Then .Width = Target.Width End If .Top = Target.Top + (Target.Height - .Height) / 2 .Left = Target.Left + (Target.Width - .Width) / 2 End With End Sub

  • エクセルVisualBasicマクロ詳しい方

    写真を特定のセルに貼り付けるのにダブルクリックでマイドキュメントがでるようにし、 写真を貼り付けるとサイズを枠に調節するようにマクロをつくりました。 問題なく出来るようになったのですが、 ダブルクリックでマイドキュメントではなく、 別の場所を指定するにはどこをどう変えればいいですか? 現状は以下の通りです。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Union(Range("A1:A21"))) Is Nothing Then Exit Sub Cancel = True Dim myPic Dim myRange As Range '画像を配置するセル範囲 Dim rX As Double, rY As Double myPic = Application.GetOpenFilename("画像ファイル,*.jpg;*.jpeg;*.gif;*.tif") If VarType(myPic) = vbBoolean Then Exit Sub Set myRange = Target 'このセル範囲に収まるように画像を縮小する Application.ScreenUpdating = False With ActiveSheet.Pictures.Insert(myPic).ShapeRange rX = myRange.Width / .Width rY = myRange.Height / .Height If rX > rY Then .Height = .Height * rY Else .Width = .Width * rX End If .Left = .Left + (myRange.Width - .Width) / 2 '写真を横方向の中央に配置 .Top = .Top + (myRange.Height - .Height) / 2 '写真を縦方向に中央に配置 End With Application.ScreenUpdating = True Cancel = True End Sub

  • Excel2010でのマクロによる画像貼付について

    エクセル2010で下記のマクロを実行し、一旦保存して再度開くと、 「リンクされたイメージを表示できません。ファイルが移動または削除されたか、名前が変更された可能性があります。リンクに正しいファイル名と場所が指定されていることを確認してください。」 と表示されます。 検索したところ、Pictures.Insertでなく、2010では、Shapes.Addを使用するとの事ですが、 マクロに詳しく無いため、どこを修正したらいいのかわかりません。 大量の写真貼り付けがあるので、教えて頂けると大変助かります。 どうぞよろしくお願いいたします。 Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) '===============起動の合図 If ActiveCell.FormulaR1C1 = "画像" Then Cancel = True '===============画像選択 SSS = Application.GetOpenFilename _ ("jpg bmp tif png gif,*.jpg;*.bmp;*.tif;*.png;*.gif", , "画像の選択", , False) If SSS = False Then MsgBox "画像を選択してください(終了)" Exit Sub End If '===============画像の貼り付け Set CCC = ActiveSheet.Pictures.Insert(SSS) '===============タテヨコの縮尺を保持 HH = Target.Height / CCC.Height WW = Target.Width / CCC.Width If HH > WW Then CCC.Height = CCC.Height * 0.99 CCC.Width = Target.Width * 0.99 Else CCC.Height = Target.Height * 0.99 CCC.Width = CCC.Width * 0.99 End If '===============中央へ調整 HH2 = (Target.Height / 2) - (CCC.Height / 2) WW2 = (Target.Width / 2) - (CCC.Width / 2) CCC.Top = Target.Top + HH2 CCC.Left = Target.Left + WW2 Set CCC = Nothing End If End Sub

  • エクセルに写真を挿入するVBA

    エクセルで写真集を作るためのVBAですが、以下のVBAでは画像がリンク貼り付けになってしまいます。どうしたらエクセルファイルに画像を貼りこみで保存できるのでしょうか? よろしくお願いいたします。 やりたいことは、まずダブルクリックでダイアログボックスを表示させ、挿入したい写真を選択、写真がセルに合わせた大きさに縮小、セルの中央に写真を配置。以上です。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, _                     Cancel As Boolean)   Dim PicFile As Variant   Dim rX As Double, rY As Double   '[ファイルを開く]ダイアログボックスを表示   PicFile = Application.GetOpenFilename( _             "画像ファイル,*.jpg;*.jpeg;*.gif;*.tif;*.png;*.bmp")   If VarType(PicFile) = vbBoolean Then Cancel = True: Exit Sub   Application.ScreenUpdating = False      '画像を挿入   With ActiveSheet.Pictures.Insert(PicFile)     rX = Target.Width / .Width     rY = Target.Height / .Height     If rX > rY Then       .Height = .Height * rY     Else       .Width = .Width * rX     End If     'セルの中央(横方向/縦方向の中央)に配置     .Left = Target.Left + (Target.Width - .Width) / 2     .Top = Target.Top + (Target.Height - .Height) / 2   End With      Application.ScreenUpdating = True   Cancel = True End Sub

  • エクセル 写真貼り付け マクロ

    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean) Cancel = True '===============画像選択 myF = Application.GetOpenFilename _ ("jpg bmp tif png gif,*.jpg;*.bmp;*.tif;*.png;*.gif", , "画像の選択", , False) If myF = False Then MsgBox "画像を選択してください(終了)" Exit Sub End If '===============画像の掃除 For Each mySP In ActiveSheet.Shapes myAD1 = mySP.TopLeftCell.MergeArea.Address myAD2 = Target.Address If myAD1 = myAD2 Then mySP.Delete Next '===============画像の貼り付け Set mySP = ActiveSheet.Pictures.Insert(myF) '===============タテヨコの縮尺を保持 myHH = Target.Height / mySP.Height myWW = Target.Width / mySP.Width If myHH > myWW Then mySP.Height = mySP.Height * myWW mySP.Width = Target.Width Else mySP.Height = Target.Height mySP.Width = mySP.Width * myHH End If '===============中央へ調整 myHH2 = (Target.Height / 2) - (mySP.Height / 2) myWW2 = (Target.Width / 2) - (mySP.Width / 2) mySP.Top = Target.Top + myHH2 mySP.Left = Target.Left + myWW2 Set mySP = Nothing End Sub ネットでこのマクロを見つけて応用したいのですが 教えてください セルをダブルクリックすると画像が選べて貼り付けできるのですが 全部のセルに反応してしまいます セルの範囲指定したいのですがどうすればいいでしょうか? (1)セル結合でA1:D7範囲だけにこのマクロを入れておきたい場合 (2)セル結合でA1:D7とX1:AA4までとか複数選択したい場合 宜しくお願いします

  • Excel2003 マクロをご教授ください!

    いつもお世話になっております。 ここで 様々な方にご教授いただいて Excelのマクロを反映させられたのですが マクロを貼り付けた後で列を削除したり、各種編集をしていたら 今まで動作していたマクロが動作しなくなってしまいました。 以下 前文を記しますが 動作しないのは 下のマクロです。 Private Sub Worksheet_Change(ByVal Target As Range) Dim rOne As Range Dim intNo As Integer If Target.Column <> "15" Then Exit Sub For Each rOne In Target intNo = Val(StrConv(rOne.Value, vbNarrow)) Select Case (intNo) Case 1 Range("p" & rOne.Row).Select Case 2 Range("x" & rOne.Row).Select Case 3 Range("z" & rOne.Row).Select Case Else End Select Next rOne If Intersect(Target, Range("L3:L3001")) Is Nothing Then Exit Sub If Target.Count > 1 Then Exit Sub Application.ScreenUpdating = False Application.EnableEvents = False With Target.Offset(0, 1).Validation .Delete .Add Type:=xlValidateInputOnly .IMEMode = xlIMEModeHiragana End With If Target Like "###-####" Then Target.Offset(0, 1).Select SendKeys Target.Value SendKeys "{ }" SendKeys "{ENTER}" End If Application.EnableEvents = True Application.ScreenUpdating = True End Sub 上のマクロ(セルを飛ばす)は正常に動作してくれるのですが 下のマクロで郵便番号を自動的に隣のセル(M列)に反映してくれなくなってしまいました。 M列のとなり(たしかN列だったと思うのですが)を削除したあたりから この郵便番号マクロが動作しなくなってしまいました。 どこか おかしな所はないか見ていただけますでしょうか。 宜しくお願い致します。

  • wordでのhyperlinkマクロ作成方法

    通称poppyといいます。 excelでは各シートのマクロ定義で Private Sub Worksheet_followhyperlink(ByVal Target As Hyperlink) Application.Goto reference:=ActiveCell, scroll:=True End Sub と定義し、 thisworkbookでは Private Sub Worksheet_followhyperlink(ByVal sh As Object, ByVal Target As Hyperlink) Application.Goto reference:=ActiveCell, scroll:=True End Sub と定義すればhyperlinkでジャンプした先の画面表示では指定したセルが画面左上に表示されます。 このような方法をwordで実行したいのですが、マクロの作成方法を教えて下さい。 よろしくお願いいたします。

  • マクロで画像挿入の質問です

    マクロ 初心者です。 ワークシート指定して、ダブルクリック等を使っての画像選択、貼り付け&セルの大きさに合わせる)ことはできるのですが、 ダブルクリック等ではなく、手動でマクロを実行して指定のセル(B37)に貼り付けることはできるでしょうか?(セルの大きさに画像が変換するのは生かしたまま) Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)を sub マクロ名()にして、Moduleに貼り付けて実行したら myAD2 = Target.Address 上記場所でエラーになってしまいます。 どのように変更したら、できるでしょうか?または、できる手段はないのでしょうか? ご教授お願いします。 使用ベースマクロは以下です。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Cancel = True '===============画像選択 myF = Application.GetOpenFilename _ ("jpg bmp tif png gif,*.jpg;*.bmp;*.tif;*.png;*.gif", , "画像の選択", , False) If myF = False Then MsgBox "画像を選択してください(終了)" Exit Sub End If '===============画像の掃除 For Each mySP In ActiveSheet.Shapes myAD1 = mySP.TopLeftCell.MergeArea.Address myAD2 = Target.Address If myAD1 = myAD2 Then mySP.Delete Next '===============画像の貼り付け Set mySP = ActiveSheet.Pictures.Insert(myF) '===============タテヨコの縮尺を保持 myHH = Target.Height / mySP.Height myWW = Target.Width / mySP.Width If myHH > myWW Then mySP.Height = mySP.Height * myWW mySP.Width = Target.Width Else mySP.Height = Target.Height mySP.Width = mySP.Width * myHH End If '===============中央へ調整 myHH2 = (Target.Height / 2) - (mySP.Height / 2) myWW2 = (Target.Width / 2) - (mySP.Width / 2) mySP.Top = Target.Top + myHH2 mySP.Left = Target.Left + myWW2 Set mySP = Nothing End Sub

  • Excel2007 マクロについて

    自分で何とかしようと思い試行錯誤しましたがダメでしたのでご指導のほどお願いします。 今のコードが下記です Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, cancel As Boolean) If Application.Intersect(Target, Range("F:G")) Is Nothing Then Exit Sub Application.Goto Worksheets(IIf(Target.Column = 6, "人件費", "外注費")).Range("A65536").End(xlUp).Offset(1) ActiveCell.Value = Cells(Target.Row, "A").Value cancel = True End Sub 台帳シートのF列のセルをダブルクリックするとその列の先頭A列の数字を持って人件費シートが開き 一番新しい列のA列に台帳シートの値を入れる というコードです G列では外注費で同じ事が行われます。 それにH列を追加し材料費シートをに同じ事を行いたいのですがわかりません ご指導のほどお願いします。

専門家に質問してみよう