Excel VBA ノート(サンプルコード)

Hide Tamura の Excel VBA ノート

Excel-VBA マクロ有効ブックとして保存

マクロを書いたブックの保存方法です。Excel2013を例に解説します。

VBEは独立したソフトではなく、Excelブックに付属した機能だと理解してください。
その為、Excel本体を保存するとVBEの内容も保存されます。逆に、VBEで保存した場合でも、Excel本体の変更も保存されます

保存方法について簡単に説明しますと、ブックを「名前を付けて保存」する際に、ファイルの種類を「Excel マクロ有効ブック(*.xlsm)」にするだけ。


以下、詳細に説明します。

VBE側からの保存方法する場合

VBEで、「Ctrl」+「S」(「Ctrl」キーを押しながら「S」キー)を押します。まだ、一度も保存されていない状態なので、「名前を付けて保存」ダイアログボックスが表示されます。

Excel本体側からの保存方法する場合

「F12」キーを押します。「名前を付けて保存」ダイアログボックスが表示されます。

11


「名前を付けて保存」が表示されたら

ファイルの種類」のドロップダウンリストから
Excel マクロ有効ブック(*.xlsm)」を選択します。

ファイル名を入力し、「保存」ボタンを押します。これで、マクロ有効ブックとして保存されます。

ファイルの種類が「Excel ブック(*.xlsx)」のままですと、VBEに書いたマクロが全て無くなってしまいますので注意してください。

保存したマクロ有効ブックは、ファイルのアイコンが、「!」マーク付きの次のようなデザインになります。

13


パソコンのキーボードに「F12」キーが無い場合

次の方法で「名前を付けて保存」ダイアログボックスを表示させてください。

「Ctrl」+「S」(「Ctrl」キーを押しながら「S」キー)を押します。または、リボンの「ファイル」タブを押します。

12

左のグリーンのメニュから、「名前を付けて保存」を選択し、「コンピューター」を選択して「参照」を選択します。
「名前を付けて保存」ダイアログボックスが表示されます。



Microsoft Office ブログランキングへ



 

★Excel 2013対応 Excel-VBA Excel マクロを有効にする方法(コンテンツの有効化)

マクロが書かれているブックは、「コンテンツの有効化」を行い、マクロを有効にして利用します。

では、マクロを有効にする方法をご紹介します

マクロが書かれているブックを開くと、セキュリティー警告が表示されます。
セキュリティー警告が表示されない場合は、マクロが使えない設定になっていますので、設定を変える必要があります。それも下に書いておきます。

 [ Excel 2013, 2010 ] の場合  
「セキュリティー警告」が表示されましたら、[コンテンツの有効化] を選択してください。

14


[ Excel 2007 ] の場合 
「セキュリティー警告」が表示されましたら、 [オプション…] を押します。

15

次図の「Microsoft Office セキュリティ オプション」が表示されましたら、[このコンテンツを有効にする]  を選択して「OK」ボタンを押してください。

16


 [ Excel 2003 ] の場合
「セキュリティー警告」ダイアログボックスが表示されましたら、[マクロを有効にする] を選択します。

17

 
セキュリティ警告が表示されない場合は、Excelのセキュリティーレベルの設定を行います。

[ Excel 2013, 2010 ]の場合
1.[スタート]から Excel を起動
※Excel2013では、「お勧めのテンプレート」から「空白のブック」を選択してExcelを起動させてください
2.画面上部の[ファイル]タブを選択し、左のメニュから[オプション]を選択

18

3.[Excelのオプション]ウインドウが表示されますので、左のメニュから[セキュリティ センター]を選択
4.右の「Microsoft Excel セキュリティ センター」から、「セキュリティ センターの設定」ボタンを選択。

19

5.[セキュリティ センター]ウインドウが表示されますので、左のメニュから[マクロの設定]を選択
6.右の「マクロの設定」で、2番目の「警告を表示してすべてのマクロを無効にする」を選択

20

7.[OK]ボタンを押して、Excelを閉じる

[ Excel 2007 ]の場合
1.[スタート]から Excel を起動
2.左上の丸いOfficeマークをクリックします。

21

3.表示されたメニュの下の[Excelのオプション]ボタン選択 

22

4.[Excelのオプション]ウインドウが表示されますので、左のメニュから[セキュリティ センター]を選択
5.右の「Microsoft Office Excel セキュリティ センター」から、「セキュリティ センターの設定」ボタンを選択

23

6.[セキュリティ センター]ダイアログの、左のメニュから[マクロの設定]を選択
7.右の「マクロの設定」で、2番目の「警告を表示してすべてのマクロを無効にする」を選択

24

8.[OK]ボタンを押して、Excelを閉じる

[ Excel 2003 ]の場合
1.[スタート]から Excel を起動
2.メニューバーの[ツール]メニュから、[マクロ]-[セキュリティ]を選択

25

3.[セキュリティ]ダイアログから[セキュリティ レベル]タブを選択
4.[セキュリティ レベル]パネルから、[中]を選択します
   ( [高] はマクロが利用できなくなります。 [低] はセキュリティ上、推奨しません)

26

 5.[OK]ボタンを押し、Excelを閉じる



Microsoft Office ブログランキングへ



Excel-VBA ユーザーフォームを使い、ブックにパスワードを設定する Asc関数


pass

パスワードは、Asciiコードを取得し、8文字以上で、半角の数字と英字の両方が含まれるようにしています。

Option Explicit

Private Sub CheckBox1_Click()

    If Me.CheckBox1.Value = True Then
        Me.TextBox2.PasswordChar = ""
        Me.TextBox3.PasswordChar = ""
    Else
        Me.TextBox2.PasswordChar = "*"
        Me.TextBox3.PasswordChar = "*"
    End If
    
End Sub

Private Sub CommandButton1_Click()
    Dim strNewPass As String
    Dim lngPassLen As Long
    
    Dim i As Long
    
    Dim blnFlag0 As Boolean, blnFlagA As Long, blnFlag0A As Boolean
    Dim blnTextBox1 As Boolean, blnTextBox2 As Long, blnTextBox3 As Boolean
    
    Dim strStartSheet As String
    Dim strStartZoomRange As String
    Dim strStartCell As String
    Dim lngStarCol As String 'スタート時の画面のカラム
        
    strNewPass = Me.TextBox2.Text
    lngPassLen = Len(strNewPass)

    blnTextBox2 = False
    blnTextBox3 = False
    
    blnFlag0 = False
    blnFlagA = False
    blnFlag0A = False

    '入力チェック
    If Not (Me.TextBox2.Text = Empty) Then blnTextBox2 = True
    If Not (Me.TextBox3.Text = Empty) Then blnTextBox3 = True
    
    
    If blnTextBox2 = False And blnTextBox3 = False Then
        'パスワード入力なし
        
        MsgBox "入力がありません", vbExclamation
        Application.ScreenUpdating = True
        Exit Sub
    
    End If
    
    'TextBox2.Text が8文字以上かチェック

    If lngPassLen < 8 Then
        MsgBox "パスワードは8文字以上で設定して下さい", vbExclamation
        Me.TextBox2.SetFocus
        Exit Sub
    End If
    
    'TextBox2.Text に英語と数字の両方が含まれているかチェック
    
    For i = 1 To lngPassLen
    
        '0-9
        If (Asc(Mid(strNewPass, i, 1)) >= 48 And Asc(Mid(strNewPass, i, 1)) <= 57) Then
            blnFlag0 = True
        End If
        
        'A-Z a-z
        If (Asc(Mid(strNewPass, i, 1)) >= 65 And Asc(Mid(strNewPass, i, 1)) <= 90) Or _
        (Asc(Mid(strNewPass, i, 1)) >= 97 And Asc(Mid(strNewPass, i, 1)) <= 122) Then
        
            blnFlagA = True
        
        End If
    
        If blnFlag0 = True And blnFlagA = True Then
            blnFlag0A = True
            Exit For
        End If
        
    Next i

    If blnFlag0A = False Then
        MsgBox "パスワードは半角数字と半角英文字の両方が必要です", vbExclamation
        Exit Sub
    End If

    'TextBox2.Text とTextBox3.Text が同じかチェック

    If Not (Me.TextBox2.Text = Me.TextBox3.Text) Then
        MsgBox "新パスワードと確認パスワードが一致していません", vbExclamation
        Me.TextBox3.SetFocus
        Exit Sub
    End If
        
    'パスワード設定
    
    Workbooks(strPassBook).Sheets(strPassSheet2).Range(strPassCell).Value = strNewPass
    
    Application.DisplayAlerts = False
    ThisWorkbook.SaveAs ThisWorkbook.Path & "\" & ThisWorkbook.Name, Password:=strNewPass
    Application.DisplayAlerts = True
    
    MsgBox "パスワードを設定しました", vbInformation
        
    Unload Me
    Application.ScreenUpdating = True

End Sub

Private Sub TextBox3_Change()
    
    If Me.TextBox2.Value = Me.TextBox3.Value Then
        Me.CommandButton1.SetFocus
    End If

End Sub

Private Sub UserForm_Initialize()

    Me.CheckBox1.Value = False
    
End Sub
 

Excel-VBA ユーザーフォームのリストボックスにセル範囲の値を表示

Private Sub UserForm_Initialize()
    Dim i  As Long
    Dim lngLastRow As Long
    
    lngLastRow = Sheets(con相手科目).Cells(con最大科目数, 1).End(xlUp).Row
    Me.ListBox1.RowSource = con相手科目 & "!A2:A" & lngLastRow
    
End Sub

 ↓ facebook のフォローで応援してください。お願いします。



Microsoft Office ブログランキングへ




Excel-VBA Imageコントロールに写真を表示 LoadPicture(strImgPath)

Private Sub UserForm_Initialize()
    Dim strImgPath As String
    
    strImgPath = "C:\Users\HIDE\Pictures\新しいフォルダー\1.jpg"
    
    With UserForm1.Image1
        
        .Picture = LoadPicture(strImgPath)
        
        .PictureSizeMode = fmPictureSizeModeClip    '見える範囲だけ表示
'        .PictureSizeMode = fmPictureSizeModeStretch '引き延ばす(縦横比が崩れる)
'        .PictureSizeMode = fmPictureSizeModeZoom    'ズームして全体表示(縦横比維持)
        
    End With

End Sub

 ↓ facebook のフォローで応援してください。お願いします。



Microsoft Office ブログランキングへ


 

Excel-VBA WebBrowserコントロールにWebページを表示 UserForm1.WebBrowser1.Navigate strWebURL

Private Sub UserForm_Initialize()
    Dim strWebURL As String
    
    strWebURL = Cells(5, "E").Value 例:セルの値 http://www.yahoo.co.jp/
    UserForm1.WebBrowser1.Navigate strWebURL
    
End Sub

 ↓ facebook のフォローで応援してください。お願いします。



Microsoft Office ブログランキングへ


 

Excel-VBA セルの列幅に文字列を収める 縮小 ShrinkToFit 折り返す WrapText

Sub セルの列幅に文字列を収める()

    '列幅に収まるように文字列を縮小
    Range("C:E").Select
    With Selection
        .WrapText = False   '列幅に収まるようにテキストを折り返す
        .ShrinkToFit = True '列幅に収まるように文字列を縮小
    End With
                    
    '列幅に収まるようにテキストを折り返す
    Range("C:E").Select
    With Selection
        .WrapText = True   '列幅に収まるようにテキストを折り返す
        .ShrinkToFit = False '列幅に収まるように文字列を縮小
    End With
                    
End Sub

 ↓ facebook のフォローで応援してください。お願いします。



Microsoft Office ブログランキングへ


 

Excel-VBA マニュアル(使用説明書)作成に Word 2010 を利用

Excel-VBA を利用して、マクロ作成のお仕事をしていますが、マニュアル(説明書)の作成依頼が入ることも。

今までも、簡単は使用方法を、Microsoft Word で書いて無料でお渡ししていましたが・・・

有料で「マニュアル」の作成依頼が入れば、ちゃんと Word の機能を勉強しないと良いものが作れないな・・・

っという事で、Word の勉強を開始しました。(^^♪

Word は使い難くて嫌いだと思っていましたが、それは知識不足からくるもので・・・。 (^^♪

Word は、Excel との連携も良く、使いこなせれば強い武器に!



【送料無料】Word 2010 [ 嘉本須磨子 ]


 ↓ facebook のフォローで応援してください。お願いします。



Microsoft Office ブログランキングへ


Excel-VBA ゼロ0と空欄""とEmptyの違い。 ゼロ0 空欄"" Empty

Sub test()

    If Range("A1").Value = 0 Then MsgBox "Yes"
    If Range("A1").Value = Empty Then MsgBox "Yes"
    If Range("A1").Value = "" Then MsgBox "Yes"

End Sub

セルA1に、何も入っていない空欄の場合、結果は全てYesと表示されます 
セルA1に、数値のゼロ0が入っている場合、If Range("A1").Value = "" 以外は全てYesと表示されます。


 ↓ facebook のフォローで応援してください。お願いします。



Microsoft Office ブログランキングへ



Excel-VBA ブックにパスワードを設定して保存終了する

パスワードを設定する箇所を説明する為、ここでは、簡単にインプットボックスでパスワードを指定していますが、実際にはユーザーフォームでパスワードを見えない状態「*********」のようにしながら設定しています。

Sub CloseTest()

    Dim strMyPass As String
    
    strMyPass = InputBox("新しいパスワードを入力", "パスワード変更")
    
    If strMyPass = "" Then Exit Sub
    
    Application.DisplayAlerts = False
    ThisWorkbook.SaveAs ThisWorkbook.Path & "\" & ThisWorkbook.Name, Password:=strMyPass
    ThisWorkbook.Close savechanges:=False
    Application.DisplayAlerts = True

End Sub

名前を付けて保存 SaveAs にパスワード設定の引数があります。
同じファイル名に保存する場合も、SaveAs を使い、その後 Close しています。
上書き保存のアラートを出さないよう、DisplayAlertsはFslseにし、最後に戻しています。
一度、名前を付けて保存しているので、Close時は保存せずに終了しています。

作成時に作ったパスワードを、ユーザーに好きなパスワードに変更してもらう時に使うマクロです。


 ↓ facebook のフォローで応援してください。お願いします。



Microsoft Office ブログランキングへ




記事検索
Excel VBA ノートについて(注意事項)
このExcel VBA ノートは、Hide Tamura の個人的なVBAノートです。プログラムを再利用したり、コピペで入力の手間を省く為に作ったネット上のノートです。 その為、詳しい解説は書いておりません。エラー等のトラブルには責任は負いません。利用者の環境に合わせて書き換えてご利用ください。
ExcelVBA教室
Excel VBA 担当 Hide Tamura

Excel95? マクロシートがあった頃からExcelVBAを独学で利用しています。現在は、様々な企業様からVBAによる業務効率UPの為のお仕事を頂いております。既にお使いになっているファイルにVBAを利用することで、作業が楽になったり、時間も大幅に短縮されたなど、大変喜ばれています。

■VBA Expert
VBA Expert Standard Crown
ExcelVBA Standard(Odyssey)
Access VBA Standard(Odyssey)
Excel2002 VBA Standard(日本VBA協会)
■MICROSOFT OFFICE USER SPECIALIST
Microsoft Excel version2002 Expert
Microsoft Excel version2002


最新記事
Excelで作る経営計画
Excelで利益計画を立てましょう!会社にいくらの利益が必要で、その為の売上高は?

Excelで作る経営計画
Excel 関数 ノート
Excel関数を中心に、Excelの便利機能や、意外としらない使い方など書いていきます。

Excel 関数 ノート
Access VBAノート
Hide Tamura の個人的なVBAノートです。

頻繁に使うVBAコードなどを記録しコピペして使う為に作りました。お役に立てるようでしたら、お使いください。

Access VBAノート
アクセスカウンター

    • ライブドアブログ