personal.xls 強化講座

Home What's
New
Site
Concept
生産性向上
基本テクニック
トラブル回避
テクニック
生産性向上
リンク
personal.xls
強化講座
生産性向上
ツール
Site
Map
Coffee
Break
Guest
Book
地球風
画像館
Q&A Salon
EXCELの質問はこちらへ

 

1.あるとちょっと便利なマクロ(11-15)
05/06/2000 -

このページのマクロ(テキスト)の表示

(11) EXCELを画面フルサイズで立ち上げる
 


EXCELを起動するときに、必ず画面フルサイズ(最大化状態)で立ち上がるようにします。
auto_open() が personal.xls にすでにある場合は、 Application.〜 の1行を追加して下さい。 auto_open() が無い場合は、下の3行を追加します。

 

   
Sub auto_open()
 
    Application.WindowState = xlMaximized

End Sub

←目次へ戻る / このページのマクロ(テキスト)の表示

(12) シートに背景画像を設定する
 


ちょっと凝ったシートを作るときに、背景画像を設定すると雰囲気が出ます。(あくまで、センスによりますが。。)
この「背景設定」マクロは、指定した画像ファイルでアクティブなシートに背景を設定します。表示されるダイアログで「キャンセルボタン」を押すと、背景画像を消去(設定解除)します。

  
「全ての背景消去」の方を実行すると、アクティブなブックの全てのシートに設定されている背景画像を一括して消去(設定解除)します。

2004.10.23
なお、現在は「書式(O)」メニューから簡単に背景画像の設定・解除が可能になっています(下図)。


   
 
Sub 背景設定()
'
    Dim strFileName As Variant
    strFileName = Application.GetOpenFilename _
                    (FileFilter:="画像ファイル (*.bmp; *.gif; *.jpg), *.bmp;*.gif;*.jpg", _
                     Title:="背景画像ファイルの指定")
    If strFileName <> False Then
        ActiveSheet.SetBackgroundPicture strFileName        '背景画像の設定
    Else
        ActiveSheet.SetBackgroundPicture ""                 'キャンセルの場合は背景消去
    End If
'
End Sub
'
Sub 全ての背景消去()
 
    Dim ws As Variant
    For Each ws In Worksheets
        Sheets(ws.Name).Select
        Sheets(ws.Name).SetBackgroundPicture ""
    Next
    Sheets(1).Select
 
End Sub

←目次へ戻る / このページのマクロ(テキスト)の表示


(13) 今開いているブックに決まったパスワードを設定する
 


EXCELのファイルには読み取りパスワードや書き込みパスワードを設定することができますが、標準の操作では「ファイル(F)」「名前を付けて保存(A)」「ツール(L)」「全般オプション(G)」パスワードの入力(読み取りと書き込み両方の場合は2箇所入力)、「OKボタン」、パスワードの再入力と「OKボタン」(読み取りと書き込み両方の場合はそれぞれ)、「保存(S)」「ファイル○○○は既に存在します。既存のファイルを置き換えますか?」の警告ダイアログに「OKボタン」と、大変面倒な作業です。
複数のファイルに同じパスワードをまとめて設定する場合などは、延々と同じ作業を繰り返すことになります。

この機能は、あらかじめ設定するパスワードが決まっている場合に、このマクロを実行することで1発でパスワード設定とセーブを行ってしまう機能です。ファイル上書き確認のダイアログも表示されません。

もし読み込みパスワード・書き込みパスワードどちらか一方だけでよい場合は、 WriteResPassword:="" のようにパスワードを記述する部分を空文字にしてください。(したがって、両方のパスワード設定部分を空文字にすれば、パスワード設定を解除するマクロになるはずです)

また、 ReadOnlyRecommended:=True とすれば、ファイルを開く際に読み取り専用を推奨するメッセージが表示されますし、 CreateBackup:=True とすればバックアップファイルが作成される設定になります。
 

   
 
Sub set_passwd()
'
'  このマクロは読み取り専用で開いたファイルに対して実行するとエラーが出ます(同じファイル名でセーブしようとするため)
'  赤字の部分に設定したいパスワードを記述してください
'

    Dim strBookName As String
 
    strBookName = ActiveWorkbook.Path & "\" & ActiveWorkbook.Name
 
    Application.DisplayAlerts = False           '上書き確認のダイアログが出ないようにする
 
    ActiveWorkbook.SaveAs _
        Filename:=strBookName, _
        FileFormat:=xlNormal, _
        Password:="read", _
        WriteResPassword:="write", _
        ReadOnlyRecommended:=False, _
        CreateBackup:=False
 
    Application.DisplayAlerts = True           '上書き確認のダイアログが出る設定に戻す
'
End Sub
   

←目次へ戻る / このページのマクロ(テキスト)の表示

(14) 今アクティブなブックを「最近使用したファイルの一覧」に追加する
 


EXCELの「ファイル(F)」メニューを開くと下のほうに「最近使用したファイルの一覧」が表示されて、すばやくファイルを開くことが出来てたいへん便利です。しかし、EXCELで開いたりセーブしたりするファイルが必ず「一覧」に登録されるわけでもなく、エクスプローラでファイル名を変更したりフォルダの場所を変えたりするともう使い物にならなくなってしまいます。

この機能は、EXCELで開いてアクティブになっているブック(ファイル)名を「最近使用したファイルの一覧」に強制的に追加するものです。(複数ファイルを開いている場合は、操作可能になっている(アクティブな)ファイル名だけを対象にします)

一覧に追加する前に、現在の「最近使用したファイルの一覧」をクリアすることも出来ます。
 

   
 
 
Sub Add_RecentFiles()                     '最近使用したファイルにアクティブブックを登録する
'                                         '既に登録されているファイルを追加した場合はリストの1番に来る
'                                         '9ファイル登録されている場合には、一番古いリストが削除される
    Dim strBookName As String
    Dim response As Integer
    Dim Flg%
'
    strBookName = ActiveWorkbook.Path & "\" & ActiveWorkbook.Name
 
    If Application.DisplayRecentFiles = False Then
        Application.DisplayRecentFiles = True                   '最近使ったファイルの表示をオンにする
        Application.RecentFiles.Maximum = 9                     '表示するファイル数はMAXの9にする
        Flg = 1
    End If
 
    If Flg = 0 Then
        response = MsgBox("追加の前に「最近使用したファイルの一覧」をクリアしますか?" & Chr$(13) & Chr$(13) _
                    , vbYesNo + vbQuestion + vbDefaultButton2, "確認")
        If response = vbYes Then
            Application.DisplayRecentFiles = False
            Application.DisplayRecentFiles = True
            Application.RecentFiles.Maximum = 9
        End If
    End If
 
    response = MsgBox(strBookName & Chr$(13) & Chr$(13) & "を最近使用したファイルの一覧に追加しますか?", _
            vbYesNoCancel + vbQuestion + vbDefaultButton1, "最近使用したファイルの一覧")
    If response = vbYes Then
        Application.RecentFiles.Add Name:=strBookName
    End If
'
End Sub

←目次へ戻る / このページのマクロ(テキスト)の表示

(15) 選択範囲の内容をCSVファイルに出力する
 


「EXCELのシートの一部分だけをテキストファイルに吐き出したい」 という事がたまーにありますが、シート全部を「ファイル(F)」「名前を付けて保存(A)」でCSVファイルにしておいてからテキストエディター等で不要な部分を削除するのは結構面倒だったりします。

このマクロは、選択範囲だけの値をCSV形式のテキストファイルに出力します。

 ■新規ファイルへの保存にも対応、ファイル名指定時にキャンセルボタンを押した場合の対応を修正しました。(2001.01.13)

(余談)このホームページ作成にはDreamWeaverを使っています。EXCELで作った表をホームページに貼りこむ場合、EXCELでHTMLファイルとしてセーブしても使い物になりません(^_^;) 。私は、この機能でシートの欲しいところだけCSVファイルとして落とし、DreamWeaverの「表データの挿入」機能で読み込んでいます。めちゃくちゃ重宝しています。
 

   
 
 
Sub csv_output()
'
'出力したいデータ範囲を選択(例えばA1からD1までをマウスで選択)してから実行してください
'ただし、複数範囲を指定しても、一番最初に選択した範囲しか出力されません
'
    Dim buff As String
    Dim startCol As Integer
    Dim endCol As Integer
    Dim startRow As Long
    Dim endRow As Long
    Dim i As Long
    Dim j As Long
    Dim OutPutFileName As Variant
 
    OutPutFileName = Application.GetSaveAsFilename _
    (FileFilter:="テキストファイル(*.csv),*.csv", _
     Title:="出力するCSVファイルの指定", _
     InitialFilename:="")
 
    If OutPutFileName = False Then            'キャンセルを押した場合 20010111
        Exit Sub
    End If
 
    On Error GoTo Macro_Err
    Open OutPutFileName For Output As #1
    On Error GoTo 0
 
    startCol = Selection.Column
    endCol = startCol + Selection.Columns.Count - 1
    startRow = Selection.Row
    endRow = startRow + Selection.Rows.Count - 1
 
    For i = startRow To endRow
 
        If Cells(i, startCol).WrapText = True Then
            buff = """" & Cells(i, startCol).Value & """"   'セル内で折り返している場合はダブルクォーテーションで囲む
        Else
            buff = Cells(i, startCol).Value
        End If
 
        For j = startCol + 1 To endCol          '2つ目からはカンマを入れる"
 
            If Cells(i, j).WrapText = True Then
                buff = buff & ",""" & Cells(i, j).Value & """"
            Else
                buff = buff & "," & Cells(i, j).Value
            End If
 
        Next
 
        Print #1, buff              'ファイル出力する
 
    Next
 
    Close #1
 
    MsgBox "ファイル出力終了"
 
    Exit Sub
'
Macro_Err:
 
    MsgBox "OutPut File Error!"
    Exit Sub
'
End Sub
   

←目次へ戻る / このページのマクロ(テキスト)の表示

Back Next

モーグ

Google
  Web excel7.com