[心缘地方]同学录
首页 | 功能说明 | 站长通知 | 最近更新 | 编码查看转换 | 代码下载 | 常见问题及讨论 | 《深入解析ASP核心技术》 | 王小鸭自动发工资条VBA版
登录系统:用户名: 密码: 如果要讨论问题,请先注册。

[转帖]VBA常用操作

上一篇:[转贴]Use VBA SaveAs and CheckCompatibility in Excel 2007-2010
下一篇:[备忘]灯具安装、膨胀螺栓使用经验……

添加日期:2010/3/5 15:18:47 快速返回   返回列表 阅读14528次
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 ""内には画像ファイルのフルパスを記入
 

评论 COMMENTS
没有评论 No Comments.

添加评论 Add new comment.
昵称 Name:
评论内容 Comment:
验证码(不区分大小写)
Validation Code:
(not case sensitive)
看不清?点这里换一张!(Change it here!)
 
评论由管理员查看后才能显示。the comment will be showed after it is checked by admin.
CopyRight © 心缘地方 2005-2999. All Rights Reserved