http://www.asahi-net.or.jp/~ZN3Y-NGI/YNxv202.html 1) ブックを開く
========================================================================================= Sub ブックを開く() Workbooks.Open FILENAME:=("BBB.xls") '※1 End Sub ----------------------------------------------------------------------------------------- Sub ブックを読み取り専用で開く() Workbooks.Open FILENAME:=("BBB.xls"), ReadOnly:=True '※1 End Sub =========================================================================================
<コメント> ※1 BBBにはブック名を記入
--------------------------------------------------------------------------------
2) ブックを保存する、閉じる
'========================================================================================= Sub アクティブブックを名前を付けて保存する() ブック名 = "BBB.xls" '※1 ActiveWorkbook.SaveAs ブック名 End Sub '----------------------------------------------------------------------------------------- Sub 名前を付けて保存ダイアログボックスを表示する() Application.Dialogs(xlDialogSaveAs).Show '※2 End Sub '----------------------------------------------------------------------------------------- Sub 名前を付けて保存ダイアログボックスの保存先を指定して表示する() フォルダパス = "C:\フォルダ名" '※2、3 Application.Dialogs(xlDialogSaveAs).Show (フォルダパス) End Sub '========================================================================================= Sub アクティブブックのコピーを保存する() ActiveWorkbook.SaveCopyAs Filename:="BBB_Copy.xls" '※1 End Sub '----------------------------------------------------------------------------------------- Sub アクティブブックを上書き保存して閉じる() ActiveWorkbook.Save '上書き保存 ActiveWorkbook.Close '閉じる End Sub '----------------------------------------------------------------------------------------- Sub ブックのファイル形式を指定して保存する() ActiveWorkbook.SaveAs FileFormat:=xlNormal '※4 End Sub '========================================================================================= Sub ブックの内容の変更を保存しないで閉じる() Workbooks("BBB.xls").Close SaveChanges:=False '※1 End Sub '----------------------------------------------------------------------------------------- Sub 確認メッセージを表示しないでブックを閉じる() Application.DisplayAlerts = False '確認メッセージを表示しない ActiveWorkbook.Close '閉じる End Sub '----------------------------------------------------------------------------------------- Sub 開かれているすべてのブックを閉じる() Workbooks.Close End Sub '=========================================================================================
<コメント> ※1 BBB、または、BBB_Copyにはブック名を記入 ※2 サンプルは こちら ※3 保存先フォルダへのパスを記入 ※4 FileFormatプロパティの定数と値は こちら
--------------------------------------------------------------------------------
3) 保存してない変更があるか調べる
========================================================================================= Sub 保存してない変更があるか調べる() Worksheets("SSS").Activate 'ワークシートをアクティブにする ※1 If ActiveWorkbook.Saved = False Then 'False(変更を未保存)なら メッセージ = "保存してない変更があります" MsgBox メッセージ, vbExclamation, "サンプルマクロ" Else 'そうでなければ メッセージ = "保存してない変更は、ありません" & Chr(13) & Chr(13) & _ "「OK」ボタンを押してから、セルに何か入力し、" & Chr(13) & Chr(13) & _ "その後で、お試しボタンを押してみてください" MsgBox メッセージ, vbInformation, "サンプルマクロ" End If End Sub =========================================================================================
<コメント> ※1 SSSにはシート名を記入 サンプルブックのダウンロードは ここをクリック (YNxv202_Saved.xls 35KB) ※ 一旦、ブックをハードディスクに保存し、開き直してから実行してください。
--------------------------------------------------------------------------------
4) Webページとして保存する
========================================================================================= Sub アクティブブックをWebページとして保存する() ドライブ = "C" '※1 フォルダ名 = "My Documents" '※2 ファイル名 = "ExcelBookをWebページに" '※3 パス = ドライブ & ":\" & フォルダ名 & "\" & ファイル名 & ".html" '※4 ActiveWorkbook.SaveAs Filename:=パス, FileFormat:=xlHtml '※5 End Sub =========================================================================================
<コメント> ※1 保存するドライブ番号を指定 ※2 保存するフォルダ名を指定 ※3 保存するファイル名を指定 ※4 拡張子の '.html' は 'htm' でもよい ※5 FileFormatプロパティの値は、xlHtml とする サンプルブックのダウンロードは ここをクリック (YNxv202_Web.xls 29KB) ※ 一旦、ブックをハードディスクに保存し、開き直してから実行してください。
--------------------------------------------------------------------------------
5) 新しいブックを作成する
========================================================================================= Sub 新しいブックを作成する() Workbooks.Add End Sub =========================================================================================
--------------------------------------------------------------------------------
6) ブックのシート数を取得
========================================================================================= Sub アクティブブックのワークシート数を取得する() シート数 = ActiveWorkbook.Worksheets.Count End Sub ----------------------------------------------------------------------------------------- Sub 指定ブックのワークシート数を取得する() ブック名 = "BBB" & ".xls" '※1 シート数 = Workbooks(ブック名).Worksheets.Count End Sub ========================================================================================= Sub アクティブブックのシート数を取得する() シート数 = ActiveWorkbook.Sheets.Count '※2 End Sub ----------------------------------------------------------------------------------------- Sub 指定ブックのシート数を取得する() ブック名 = "BBB" & ".xls" '※1 シート数 = Workbooks(ブック名).Sheets.Count '※2 End Sub ========================================================================================= Sub アクティブブックの選択されているシート数を取得する() シート数 = ActiveWindow.SelectedSheets.Count '※2 End Sub =========================================================================================
<コメント> ※1 BBBにはブック名を記入 ※2 ワークシートとグラフシートが対象 --------------------------------------------------------------------------------
7) ブックのプロパティの設定・取得
========================================================================================= Sub ブックのプロパティを設定する() ActiveWorkbook.BuiltinDocumentProperties("Title").Value = "すぐマク" 'タイトル ※1 ActiveWorkbook.BuiltinDocumentProperties("Author").Value = "永井善王" '作成者 URL = "http://www.geocities.jp/happy_ngi/" ActiveWorkbook.BuiltinDocumentProperties("Hyperlink Base").Value = URL End Sub ----------------------------------------------------------------------------------------- Sub ブックのプロパティを取得して表示する() MsgBox ActiveWorkbook.BuiltinDocumentProperties(3).Value '作成者 ※1 MsgBox ActiveWorkbook.BuiltinDocumentProperties(7).Value '最終更新者 MsgBox ActiveWorkbook.BuiltinDocumentProperties(11).Value '作成日時 MsgBox ActiveWorkbook.BuiltinDocumentProperties(12).Value '更新日時 End Sub ----------------------------------------------------------------------------------------- Sub ブックの作成者の名前を操作する() 作成者名 = ActiveWorkbook.Author '取得する ActiveWorkbook.Author = "" '削除する ActiveWorkbook.Author = 作成者名 '設定する End Sub ----------------------------------------------------------------------------------------- Sub ブックのパスを含めたブック名を表示する() MsgBox ActiveWorkbook.FullName End Sub =========================================================================================
<コメント> ※1 BuiltinDocumentPropertiesプロパティのインデックス値とプロパティ名は こちら
--------------------------------------------------------------------------------
8) ブックのファイル形式の取得
========================================================================================= Sub ブックのファイル形式を取得する() 値 = ActiveWorkbook.FileFormat End Sub ----------------------------------------------------------------------------------------- Sub 指定されたファイルの形式と種類を取得して表示する() 定数 = "?" 種類 = "?" 値 = ActiveWorkbook.FileFormat 'ファイル形式の値を取得する
If 値 = xlWorkbookNormal Then '-4143 定数 = "xlWorkbookNormal" 種類 = "Microsoft Excelブック (*.xls)" ElseIf 値 = xlExcel5 Then '39 定数 = "xlExcel5" 種類 = "Microsoft Excel5.0/95ブック (*.xls)" ElseIf 値 = xlExcel9795 Then '43 定数 = "xlExcel9795" 種類 = "Microsoft Excel97-2000および5.0/95ブック (*.xls)" End If
タイトル = "作業中のブックの現在のファイル形式は" メッセージ = "FileFormatの定数: " & 定数 & " 値: " & 値 & _ Chr(13) & Chr(13) & "ファイルの種類: " & 種類 MsgBox メッセージ, vbInformation, タイトル End Sub =========================================================================================
<コメント> ※1 FileFormatプロパティの定数と値は こちら
--------------------------------------------------------------------------------
9) ブックのマクロ添付状況の取得
========================================================================================= Sub ブックのマクロ添付状況を取得する() マクロ添付状況 = ActiveWorkbook.HasVBProject '※1 End Sub ----------------------------------------------------------------------------------------- Sub マクロ添付状況に合わせてファイル形式を設定し名前を付けて保存する() With Application.FileDialog(msoFileDialogSaveAs) If ActiveWorkbook.HasVBProject Then .FilterIndex = 2 '※2 Else .FilterIndex = 1 End If If .Show = -1 Then .Execute '※3、※4 End With End Sub =========================================================================================
<コメント> ※1 HasVBProjectプロパティの返り値 True…VBAプロジェクトが添付されている、False…いない ※2 FilterIndexプロパティの定数 1…Excel ブック (*.xlsx)、2…Excel マクロ有効ブック (*.xlsm) ※3 Showメソッドの返り値 -1…[保存(S)]ボタン、0…[キャンセル]ボタン ※4 Executeメソッド Showメソッドが呼び出された直後のユーザーのアクションを実行する
--------------------------------------------------------------------------------
10) ブックの複写・削除・移動・変更
========================================================================================= Sub ブックを複写する() FileCopy "C:\FFF\BBB.xls", "C:\F22\B22.xls" '※1,3,4,5,6 End Sub ----------------------------------------------------------------------------------------- Sub ブックを削除する() Kill "C:\FFF\BBB.xls" '※1,3,4 End Sub ----------------------------------------------------------------------------------------- Sub ブックを移動する() Name "C:\FFF\BBB.xls" As "C:\F22\BBB.xls" '※1,3,4,5 End Sub ----------------------------------------------------------------------------------------- Sub ブックを移動しブック名を変更する() Name "C:\FFF\BBB.xls" As "C:\F22\B22.xls" '※1,3,4,5,6 End Sub =========================================================================================
<コメント> ※1 BBBにはブック名を記入 ※2 SSSにはシート名を記入 ※3 Cにはフォルダが保存されているドライブを記入 ※4 FFFにはブックが保存されているフォルダ名を記入 ※5 F22には複写・移動先のフォルダ名を記入 ※6 B22には新しいブック名を記入
--------------------------------------------------------------------------------
11) ブックのアクセス権・読み取り専用
========================================================================================= Sub ブックを読み取り専用に設定する() ActiveWorkbook.ChangeFileAccess Mode:=xlReadOnly End Sub ----------------------------------------------------------------------------------------- Sub ブックを書き込み可能に設定する() ActiveWorkbook.ChangeFileAccess Mode:=xlReadWrite '※1,2 End Sub ========================================================================================= Sub ブックが読み取り専用か調べる() If ActiveWorkbook.ReadOnly Then MsgBox "読み取り専用です。" Else MsgBox "読み取り専用ではありません。" End If End Sub =========================================================================================
<コメント> ※1 読み取り専用から書き込み可能に変更すると、再読み込みされる ※2 書き込みパスワードの指定も可能
--------------------------------------------------------------------------------
12) ブックを保護・非保護
========================================================================================= Sub ブックの保護_非保護() ActiveWorkbook.Unprotect 'ブック非保護 ActiveWorkbook.Protect Structure:=True, Windows:=False 'ブック保護 End Sub =========================================================================================
--------------------------------------------------------------------------------
13) ブック・シートをアクティブに
========================================================================================= Sub ブックをアクティブにしてシートを選ぶ() Workbooks("BBB.xls").Activate 'ブックをアクティブにする ※1 Sheets("SSS").Select 'シートを選ぶ ※2 End Sub ----------------------------------------------------------------------------------------- Sub 指定ブックの指定シートをアクティブにする() ブック名 = "BBB" '※1 シート名 = "SSS" '※2 Workbooks(ブック名 & ".xls").Worksheets(シート名).Activate End Sub ----------------------------------------------------------------------------------------- Sub 指定ブックの指定シートの選択状態を調べる() ブック名 = "BBB" & ".xls" '※1 シート名 = "SSS" '※2 For Each 各シート In Workbooks(ブック名).Windows(1).SelectedSheets '※7 If 各シート.Name = シート名 Then MsgBox 各シート.Name & " は選択されています。" Exit For End If Next End Sub =========================================================================================
<コメント> ※1 BBBにはブック名を記入 ※2 SSSにはシート名を記入 ※3 Cにはフォルダが保存されているドライブを記入 ※4 FFFにはブックが保存されているフォルダ名を記入 ※5 F22には移動先のフォルダ名を記入 ※6 B22には新しいブック名を記入 ※7 アクティブウィンドウは常にWindows(1)と記述
--------------------------------------------------------------------------------
14) ブック・シート名を取得・変更
========================================================================================= Sub ブック名シート名を取得する() '※12 ブック名 = ActiveWorkbook.Name シート名 = ActiveSheet.Name 'シートタブに表示される名前 シートのオブジェクト名 = ActiveSheet.CodeName 'コード名 シートのインデックス番号 = ActiveSheet.Index End Sub ----------------------------------------------------------------------------------------- Sub ブック内の全部のシート名を取得する() Worksheets("NNN").Select '※7 取得したシート名を記入するシート選択 For I = 1 To Worksheets.Count '※8 ワークシートの数だけ繰り返す Cells(I, 1).Value = Worksheets(I).Name '※9 取得したシート名をセルへ記入する Next End Sub ----------------------------------------------------------------------------------------- Sub ブック名を変更する() Name "C:\FFF\BBB.xls" As "C:\FFF\B22.xls" '※1,3,4,6,10,11 End Sub ----------------------------------------------------------------------------------------- Sub シート名を変更する() Worksheets("Sheet1").Name = "新しい名前" '※11 End Sub =========================================================================================
<コメント> ※1 BBBにはブック名を記入 ※2 SSSにはシート名を記入 ※3 Cにはフォルダが保存されているドライブを記入 ※4 FFFにはブックが保存されているフォルダ名を記入 ※5 F22には移動先のフォルダ名を記入 ※6 B22には新しいブック名を記入 ※7 NNNには取得したシート名を記入するためのシート名を記入 ※8 Worksheets.CountをSheets.Countに変えるとワークシート以外も取得可能 ※9 Worksheets(I).Nameについても※8と同様 ※10 Macintoshではパスの記述が異なる ※11 ブック名またはシート名に使用禁止文字が含まれているか31文字超の場合は変更されない 使用禁止文字とは : \ / ? * [ ] および 空白 ※12 シートの名前・オブジェクト名・インデックス番号の関連図
--------------------------------------------------------------------------------
15) シートを保護・非保護
========================================================================================= Sub シートの保護_非保護() ActiveSheet.Unprotect 'シート非保護 ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True 'シート保護 ActiveSheet.Protect UserInterfaceOnly:=True '画面上からの変更だけ保護 ※1 End Sub ----------------------------------------------------------------------------------------- Sub シートの保護_非保護_パスワード付き() ActiveSheet.Unprotect "PW" '※2 ActiveSheet.Protect "PW", DrawingObjects:=True, Contents:=True, Scenarios:=True '※2 End Sub =========================================================================================
<コメント> ※1 マクロからの変更は可能。保存して閉じると再度実行しないとマクロからも変更ができなくなる ※2 PWにはパスワードを記入 --------------------------------------------------------------------------------
16) シート切替時の自動処理
========================================================================================= シートがアクティブになったときに実行されるイベントマクロ
Private Sub Workbook_SheetActivate(ByVal シート名 As Object) '※1 MsgBox "アクティブにされたシート名は、" & シート名.Name End Sub ========================================================================================= シートがアクティブでなくなったときに実行されるイベントマクロ
Private Sub Workbook_SheetDeactivate(ByVal シート名 As Object) '※1 MsgBox "非アクティブにされたシート名は、" & シート名.Name End Sub =========================================================================================
<コメント> ※1 ワークブックのコード画面に作成する
--------------------------------------------------------------------------------
17) シートを隠す
========================================================================================= Sub ユーザーが再表示できないようにシートを隠す() Worksheets("SSS").Visible = xlVeryHidden '※1 End Sub ----------------------------------------------------------------------------------------- Sub シートを隠す() Worksheets("SSS").Visible = False '※1 End Sub ----------------------------------------------------------------------------------------- Sub 隠したシートをもどす() Worksheets("SSS").Visible = True '※1 End Sub =========================================================================================
<コメント> ※1 SSSにはシート名を記入
--------------------------------------------------------------------------------
18) シートを削除する
========================================================================================= Sub ワークシート名を指定して削除する() Application.DisplayAlerts = False '※4 注意メッセージを表示しない シート名 = "SSS" 'ワークシート名をセットする ※1 Worksheets(シート名).Delete 'ワークシートを削除する ※2 Application.DisplayAlerts = True '※4 注意メッセージを表示する End Sub ----------------------------------------------------------------------------------------- Sub 現在アクティブなワークシートを削除する() Application.DisplayAlerts = False '※4 シート名 = ActiveSheet.Name 'アクティブシート名を取得する Worksheets(シート名).Delete 'ワークシートを削除する ※2 Application.DisplayAlerts = True '※4 End Sub ----------------------------------------------------------------------------------------- Sub 現在アクティブなシートを削除する() Application.DisplayAlerts = False '※4 シート名 = ActiveSheet.Name 'アクティブシート名を取得する ※3 Sheets(シート名).Delete 'シートを削除する ※3 Application.DisplayAlerts = True '※4 End Sub ----------------------------------------------------------------------------------------- Sub シートを選択してから削除する() Application.DisplayAlerts = False '※4 Sheets("SSS").Select 'シートを選択する ※1、3 ActiveWindow.SelectedSheets.Delete '選択されたシートを削除する ※3 Application.DisplayAlerts = True '※4 End Sub =========================================================================================
<コメント> ※1 SSSにはシート名を記入 ※2 ワークシート以外のシートが指定されているとエラーになる ※3 ワークシート以外のシートも可能 ※4 注意メッセージを表示したくない場合に指定する (関連ページはこちら) --------------------------------------------------------------------------------
19) シートを追加する
========================================================================================= Sub 新しいワークシートをアクティブシートの前へ追加する() Sheets("SSS").Select '※1 ActiveWorkbook.Worksheets.Add 'アクティブシートの前へ追加する End Sub ----------------------------------------------------------------------------------------- Sub 新しいワークシートをアクティブシートの後へ追加する() Sheets("SSS").Select '※1 シート名 = ActiveSheet.Name 'アクティブシート名を覚える Worksheets.Add after:=Worksheets(シート名) 'アクティブシートの後へ追加する End Sub ----------------------------------------------------------------------------------------- Sub 新しいワークシートを最後のシートの後へ追加する() Sheets("SSS").Select '※1 Worksheets.Add.Move after:=Worksheets(Worksheets.Count) '最後のシートの後へ追加する End Sub =========================================================================================
<コメント> ※1 SSSにはシート名を記入
--------------------------------------------------------------------------------
20) シート見出しをスクロールする
========================================================================================= Private Sub シート見出しを先頭までスクロールする() ActiveWindow.ScrollWorkbookTabs Position:=xlFirst End Sub ----------------------------------------------------------------------------------------- Private Sub シート見出しを末尾までスクロールする() ActiveWindow.ScrollWorkbookTabs Position:=xlLast End Sub ----------------------------------------------------------------------------------------- Private Sub シート見出しを前方にスクロールする() ActiveWindow.ScrollWorkbookTabs Sheets:=1 End Sub ----------------------------------------------------------------------------------------- Private Sub シート見出しを後方にスクロールする() ActiveWindow.ScrollWorkbookTabs Sheets:=-1 End Sub =========================================================================================
--------------------------------------------------------------------------------
21) シート見出しの色を設定する
========================================================================================= Private Sub シート見出しの色を赤にする() ActiveWorkbook.Sheets("SSS").Tab.ColorIndex = 3 '※1、2 End Sub ----------------------------------------------------------------------------------------- Private Sub シート見出しの色をなしにする() ActiveWorkbook.Sheets("SSS").Tab.ColorIndex = -4142 '※1、2 End Sub ----------------------------------------------------------------------------------------- Private Sub シート見出しの色がなしなら黄色にする() If Worksheets("SSS").Tab.ColorIndex = xlColorIndexNone Then '※1 ActiveWorkbook.Sheets("SSS").Tab.ColorIndex = 6 '※1、2 End If End Sub =========================================================================================
<コメント> ※1 SSSにはシート名を記入 ※2 カラーパレットのインデックス番号 (1=黒、2=白、3=赤、4=明るい緑、5=青、6=黄、7=ピンク、-4142=なし、等)
--------------------------------------------------------------------------------
22) シートの背景のグラフィックスを設定する
========================================================================================= Sub ワークシートの背景のグラフィックスを設定する() フルパス = "C:\YN2007USA_a.jpg" '※1 Worksheets("Sheet1").SetBackgroundPicture Filename:=フルパス End Sub 画像ファイルのフルパス ----------------------------------------------------------------------------------------- Sub ワークシートの背景のグラフィックスを削除する() Worksheets("Sheet1").SetBackgroundPicture Filename:=vbNullString End Sub =========================================================================================
<コメント> ※1 ""内には画像ファイルのフルパスを記入
|