Sub 図形1_1() Dim zusuu As Integer Dim zu As Object ThisWorkbook.Sheets("図形").Select For Each zu In ActiveSheet.Shapes zu.Delete zusuu = zusuu + 1 Next DoEvents MsgBox "図形を「" & zusuu & "」個削除しました。" End Sub |
Sub 図形1_2() Dim zusuu As Integer ThisWorkbook.Sheets("図形").Select zusuu = ActiveSheet.Shapes.Count ActiveSheet.Shapes.SelectAll Selection.Delete DoEvents MsgBox "図形を「" & zusuu & "」個削除しました。" End Sub |
Sub 図形1_3() Dim zusuu As Integer Dim zu As Object ThisWorkbook.Sheets("図形").Select zusuu = ActiveSheet.Pictures.Count For Each zu In ActiveSheet.Pictures zu.Delete Next MsgBox "図形を「" & zusuu & "」個削除しました。" End Sub |
Sub 図形1_4() Dim zu As Object ThisWorkbook.Sheets("図形").Select For Each zu In ActiveSheet.Shapes shname = zu.Name If InStr(1, shname, "Button", 1) = 0 Then zu.Delete End If Next End Sub |
Sub 画面形1_5() Dim obg(2, 50) As String, msg As String ThisWorkbook.Sheets("図形").Select i = 0 For Each ex In ActiveSheet.Shapes obg(0, i) = ex.Name obg(1, i) = ex.TopLeftCell.Row obg(2, i) = ex.TopLeftCell.Column msg = "オブジェクト名 " & obg(0, i) & _ ": Cells(" & obg(1, i) & "," & obg(2, i) & ")" celad = MsgBox(msg, 1, "セル位置") If celad = 2 Then Exit Sub End If i = i + 1 Next End Sub |
Sub ハイパーリンク削除() Dim myobj As Hyperlink For Each myobj In ActiveSheet.Hyperlinks With myobj myobj.Delete End With Next End Sub |
Sub 図形2() For Each sheet_name In Worksheets If sheet_name.Name = "コピー例" Then Sheets("コピー例").Select Application.DisplayAlerts = False ActiveWindow.SelectedSheets.Delete Application.DisplayAlerts = True Exit For End If Next Sheets.Add.Name = "コピー例" コピ− Application.CopyObjectsWithCells = False ThisWorkbook.Sheets("図形").Select Range(Cells(1, 1), Cells(20, 20)).Copy 貼り付け ThisWorkbook.Sheets("コピー例").Select Cells(1, 1).Select ActiveSheet.Paste Application.CopyObjectsWithCells = True Cells(1, 1).Select End Sub |
Sub 図形3_1() Dim i As Integer, obg(20) As String, phn As String phn = ActiveWorkbook.Path i = 1 For Each ex In ActiveSheet.ChartObjects obg(i) = ex.Name gifname = "Chart" & i & ".gif" ActiveSheet.ChartObjects(i).Chart.Export phn & "\" & gifname i = i + 1 Next MsgBox "グラフを「" & i - 1 & "」個gifファイルで保存しました。" End Sub |
Sub フォルダ指定() phn = ThisWorkbook.Path dai = ThisWorkbook.Name msg = "保存場所は" & dai & "と同じファルダで宜しいですか?" yn = MsgBox(msg, 4, "保存場所確認") If yn = 7 Then フォルダ指定 Set myPath = CreateObject("Shell.Application") _ .BrowseForFolder(0, "フォルダを選択してください", &H1) If myPath Is Nothing Then Exit Sub End If phn = myPath.Self.Path Set myPath = Nothing End If End Sub |
Sub 図形3_2() Dim msg As String, hei As Single, wid As Single Dim scel As Range, grf As Chart, pnam2 As String msg = "JPGで保存するセル範囲を指定して下さい。" & Chr(10) _ & "(セル範囲をシ−トから指定して下さい)" On Error Resume Next Set scel = Application.InputBox(msg, "セル指定", Type:=8) If TypeName(scel) = "Nothing" Then MsgBox "セル範囲をシ−トから指定して下さい" Exit Sub End If On Error GoTo 0 scel.Select Selection.CopyPicture Appearance:=xlScreen, Format:=xlPicture ActiveSheet.Paste ActiveSheet.Pictures.Select pnam2 = Selection.Name ActiveSheet.Shapes(pnam2).Select hei = Selection.ShapeRange.Height wid = Selection.ShapeRange.Width Set grf = ActiveSheet.ChartObjects.Add(0, 0, wid + 8, hei + 8).Chart For Each zu In ActiveSheet.ChartObjects cname = zu.Name Next ActiveSheet.ChartObjects(cname).Activate ActiveChart.Paste gif保存 grf.Export ActiveWorkbook.Path & "\" & "Myjpg.jpg" grf.Parent.Delete ActiveSheet.Shapes(cname).Delete Range("A1").Select MsgBox ActiveWorkbook.Path & "へ「Myjpg.jpg」名で保存しました" End Sub |
CopyPictureメソッド対象をピクチャ(画像)としてにコピーできる便利な機能です。 対象としては、選択したセルの例は「図形3_2」マクロで紹介しましたが、オートシェイブや テキストボックスまたは、選択したセル範囲に埋め込まれている図形も一緒にクリップ ボードにコピーできます。 これはマニュアル操作の、【Excel 2010】[ホーム]タブ→[貼りつけ]→[図]→ [図としてコピー]、【Excel2003】[Shift]キーを押しながら[編集]→[図のコピー]の機能と 同じです。マクロの自動記録はCopyPictureメソッドで記録されます。 「図形3_2」マクロ例では、シートに1度貼り付け画像のサイズをチェックしその サイズにあったピクチャー枠作ってそこに貼り付けてから画像ファイルで保存しました。 マニュアル操作で画像ファイルにして保存したい場合は、クリップボードにコピーされている ので、「ペイント」などの画像処理のアプリケーションを開いて貼り付ければ簡単に 画像ファイルで保存できます。 |