2012年6月26日火曜日

Firefox 検索バーに履歴表示ボタンをつける。

検索バーの履歴表示

Firefox 検索バーの履歴表示は、検索バーが空白の状態のときに。

  • キーボードショートカットなら、Ctrl+kで検索バーにフォーカスを移してからの押下。
  • マウス操作なら、検索バーの入力フィールドをクリック、の押下。
で検索履歴が表示されます。

これは 前の記事 で書きました。でもマウス操作のとき、クリック後に「下カーソルキー」を押すのはちょっと不便です。そこで検索バーの履歴ボタンを、ロケーションバーの履歴ボタンと同じデザインで追加してみました。 これでマウス操作だけでも、検索履歴の表示が出来るようにになります。

虫眼鏡アイコンの右隣のボタンが検索履歴の表示ボタンです。ボタンのデザインをロケーションバーのドロップマーカーと同じにしました。



方法

この履歴ボタンを検索バーに追加する方法は、Firefox の userChrome.css ファイルに、下のユーザースタイルを追加します。 このファイルは、ユーザプロファイルディレクトリ直下の chrome サブディレクトリに置きます。

WindowsXPの場合 userChrome.css の場所はここになっています

C:\Documents and Settings\{ユーザー名}\Application Data\Mozilla\Firefox\Profiles{英数字の羅列}.default\chrome\

Windows7の場合 userChrome.css の場所はここになっています。

C:\Users\{ユーザー名}\AppData\Roaming\Mozilla\Firefox\Profiles\{英数字の羅列}.default\chrome\

このフォルダには、サンプルファイル userChrome-example.css があるので、これを元にして追加記入後に、ファイル名を userChrome.css に変えて保存するのが確実かもしれません。 文字コードは UTF-8 で保存します。



履歴ボタンを検索バーに追加するユーザースタイル


次項の「Stylish」アドオンを使うと、もっと簡単に設定できます。



「Stylish」で設定する場合。

「Stylish」
https://addons.mozilla.org/ja/firefox/addon/stylish/

このアドオンはユーザースタイルを管理するアドオンで、ユーザースタイルを使うときにとても便利です。



履歴表示ボタンの設定手順。

  1. アドオンをインストール後に、Firefox の「アドオンマネージャ」を開きます。
  2. 「新しいスタイルを書く」のボタンを押すと、「新しいスタイル」の編集ダイアログが表示されます。
  3. 「名前」欄には設定するスタイル名を入力します。 「履歴表示ボタン」等の任意の名前で OK です。
  4. 中央の編集ウインドウに、上記のコードをコピーして貼り付けます。
  5. 「保存」ボタンを押して終了します。

これで履歴表示ボタンが表示されるようになります。

2012年6月22日金曜日

Firefoxの検索バーを使うときのヒント。

検索バーを使うときの、ちょっと便利なヒントです。


検索結果を新しいタブで開く。

Firefoxの検索バーに入力すると、検索結果は現在のタブに表示されます。
今まで見ていたWebページが検索結果のページに書き換わってほしくないときは、検索キーワードの入力後に<enter>ではなくalt+<enter>を押せば、検索結果ページを新しいタブで開くことができます。

検索結果ページを、いつもの<enter>で新しいタブに開くようにしたいときは以下のように設定します。

  1. ロケーションバーにabout:configと入力。
  2. 検索バーにbrowser.search.openintabと入力。
  3. 表示されたbrowser.search.openintabの値をfalseからtrueに変更。
    (変更方法:「ダブルクリックする」または 右クリックメニューから「切り替え」を選択。)
  4. Firefoxを再起動。
これで、検索文字入力後に<enter>で、検索結果を新しいタブで開くようになります。 alt+<enter>では、今開いているタブに検索結果が表示されるようになります。


検索バーの検索エンジンを切り替える。

Firefoxの検索バーから検索するときに使われる検索エンジンは、あらかじめ複数登録されています。 この中から使用する検索エンジンを選ぶことができます。

  • キーボードショートカットなら、Ctrl+kで検索バーにフォーカスを移してから、
    Ctrl+<上下カーソルキー>で切り替えられます。
  • マウス操作なら、検索バー左側の検索エンジンのアイコン右横の矢印をクリックし、表示された一覧から選択できます。

このメニュー下の「検索バーの管理」では、検索エンジンの並び順の変更や削除、新しい検索エンジンの追加が出来るようになっています。


検索バーの検索候補表示を切り替える。

検索バーに入力するとき、候補キーワードが自動的に表示されます。 この機能が不要な場合は、上記の「検索バーの管理」ダイアログの左下部分の 「検索語句の候補を表示する」のチェックを外すと無効にできます。

検索バーの右クリックメニューから 「候補を表示する」のチェックを外すことでも、同じように無効にできます。

2012年6月14日木曜日

Excel スタイル設定一覧を、シートに表示するマクロ

先週に悩まされた、「表示形式を追加できません。」や、「セルの書式が多すぎるため、書式を追加できません」のエラーメッセージでは、いろいろと勉強になりましたので、ここで少しまとめておきます。


Excelのスタイルについて

Excelのスタイルとは、「表示形式」「配置」「フォント」「罫線」「パターン」「保護」等の一連の書式をひとまとめにして名前を付けたものです。 よく使う書式の組み合わせをスタイルとして登録しておくと一度に設定できるため、書式を別々に設定するよりも効率が良くなるというわけです。 実はこの機能、今まで使ったことが無く今回初めて知りました。

Excel2007では組み込みスタイルが増えて、こんなスタイルが登録されているようです。


使用できるスタイルの件数

Excel 2007 では、一意のセル書式を 64,000 使用することができますが、以前のバージョンの Excel では一意のセル書式は最大で 4,000 しか使用することができません。一意のセル書式には、ブック内で適用される特定の書式の組み合わせすべてが含まれます。

「以前のバージョンの Excel でサポートされない Office Excel 2007 の機能」より引用  http://office.microsoft.com/ja-jp/excel-help/HA010077823.aspx


ワークシートをコピーするとスタイルが増える

Excel2000やExcel2003ではセル書式は最大4,000使えるので、一般的な使い方ならばセル書式が4,000もあれば十分かもしれません。しかし、ここに落とし穴がありました。

それはExcel2007で作成されたブックを「Microsoft Office互換機能パック」で変換後、Excel2003を使って編集しようとした時に発生した「ワークシートのコピーでスタイルが増加する」という現象でした。

コピー前は1608件だったスタイル件数が、シートコピー後に3065件に増えました。 この不思議な現象はワークシートのコピーで発生しましましたが、シートからシートへのセル範囲のコピーでは発生しませんでした。 

Microsoftサポートサイトの
「Excel 2007 で、使用されていないスタイルが、あるブックから別のブックへコピーされます。」 http://support.microsoft.com/kb/2553085/ja 
が解決の糸口になるのかもしれませんが、Excel2007を持っていないのでこれは未確認です。

スタイルはブックに登録されるのでブックごとにスタイルの件数が違うようです。 Excel2007で作成されたブックでは、ワークシートのコピーでスタイルが増えるようなので、Excel2007で繰り返しワークシートをコピーして編集するような使い方をしている場合は、気づかないうちにスタイルが増えているのかもしれません。


スタイルが増えすぎるとどうなるのか

Excel2007で作成された、「スタイルが増えすぎたブック」を「Microsoft Office互換機能パック」で変換後に調べてみました。(この時のスタイル件数は3065件)

まっさらなワークシートをひとつだけ残して、他のワークシートをすべて削除した状態で書式設定をすると Excel2000では「表示形式を追加できません。」 が表示されました。 Excel2003では「セルの書式が多すぎるため、書式を追加できません」 が表示されました。

次にユーザースタイルをマクロを使って一括削除すると再び書式設定が出来るようになりました。

このことから、ワークシート内の書式数では無くて、スタイルの登録件数が多い場合に、このようなエラーが発生することがわかりました。(4,000件に満たない場合でも起こるようです。)



追記:2013年4月10日
スタイルが増えすぎて開くことができない場合は、この投稿が役立つかもしれません。

Office 互換機能パックでxlsxファイルが開けない。
Office 互換機能パックでxlsxファイルを開こうとすると「表示形式を追加できません。」や「セルの書式が多すぎるため、書式を追加できません」が表示される。


追記:2016年6月22日
Excelのスタイルに関連する他の投稿




スタイル設定をシートに出力するマクロ

大量のスタイル設定の内容を一覧表形式で確認したかったので、スタイル設定をシートに書き出すマクロを作ってみました。 一覧表に出力したスタイルを見てみると、Excelが自動的に(勝手に)追加したと思われるスタイルが大量にありました。

シートに出力したスタイル
シートに出力したスタイル

このマクロは、Excel2000とExcel2003を使って、WindowsXP SP3で動作確認しました。 マクロを実行すると、アクティブなブックに新しいシートを追加してスタイル一覧を出力します。

出力する書式設定の内容は、

  • スタイルの種類
  • セルにスタイル適用した結果を表示
  • スタイル名
  • 表示形式
  • 配置
  • 縦横位置
  • フォント名とサイズ
  • 罫線 左、右、上、下、右斜め下、右斜め上
  • パターン
  • 保護
  • 数式表示
としました。

組込スタイルとユーザースタイル別に、登録されたスタイル名順に並んでいます。

スタイルダイアログで「スタイルに設定されている書式」にチェックのない項目は適用されないため、書式の登録があっても表示していません。

スタイルの内容が確認できるように、B列のセルにスタイル設定を適用した表示をしています。


スタイル設定をシートに出力する VBAマクロ

'新しいシートにスタイルを出力。
Sub View_Style()
    Dim nCnt As Long
    Dim BltinCnt As Long
    Dim NotBltinCnt As Long
    Dim i As Long
    Dim st As String
    Dim stVal As Long
    Dim cnt As Long
    Dim sTitle As Variant
    Dim sh As Worksheet
    Dim bk As Workbook
    
    Dim kName As Variant
    Dim kXlValue As Variant
    Dim kStr(5) As String
    Dim kNum As Integer
    sTitle = Array("種類", "スタイル表示", "スタイル名", "表示形式", "配置 縦", "配置 横", "フォント名", _
                "サイズ", "罫線", "罫線", "罫線", "罫線", "罫線", "罫線", "パターン", "保護", "数式表示")
    kName = Array("左", "右", "上", "下", "右斜め下", "右斜め上")
    kXlValue = Array(xlLeft, xlRight, xlTop, xlBottom, xlDiagonalDown, xlDiagonalUp)
    
    On Error GoTo ERR_EXIT
    
    Set bk = ActiveWorkbook
    Set sh = bk.Worksheets.Add
    
    NotBltinCnt = 0
    BltinCnt = 0

    'タイトル表示
    sh.Range("a1").Resize(1, 17).Value = sTitle
    
    'スタイル読み出し
    cnt = bk.Styles.Count
    For i = 1 To cnt
        nCnt = i + 1
        
        '種類
        If bk.Styles(i).BuiltIn Then
            '組込みスタイル
            BltinCnt = BltinCnt + 1
            sh.Range("A" & nCnt).Value = "組込"
        Else
            'ユーザースタイル
            NotBltinCnt = NotBltinCnt + 1
            sh.Range("A" & nCnt).Value = "ユーザー"
        End If
        
        'スタイル表示
        sh.Range("B" & nCnt).Value = 1234567890

        'スタイル名
        sh.Range("C" & nCnt).Value = bk.Styles(i).NameLocal

        '表示形式
        If bk.Styles(i).IncludeNumber Then
            st = bk.Styles(i).NumberFormatLocal
        Else
            st = "-"
        End If
        sh.Range("D" & nCnt).Value = st
        
        '配置
        If bk.Styles(i).IncludeAlignment Then
            '縦 xlVAlign
            stVal = bk.Styles(i).VerticalAlignment
            Select Case stVal
            Case xlVAlignTop
                st = "上"
            Case xlVAlignCenter
                st = "中央"
            Case xlVAlignBottom
                st = "下"
            Case xlVAlignJustify
                st = "両端揃え"
            Case xlVAlignDistributed
                st = "均等割り付け"
            Case Else
                st = ""
            End Select
            sh.Range("E" & nCnt).Value = st

            '横 XlHAlign
            stVal = bk.Styles(i).HorizontalAlignment
            Select Case stVal
            Case xlHAlignGeneral
                st = "標準"
            Case xlHAlignLeft
                st = "左"
            Case xlHAlignCenter
                st = "中央"
            Case xlHAlignRight
                st = "右"
            Case xlHAlignFill
                st = "繰り返し"
            Case xlHAlignJustify
                st = "両端揃え"
            Case xlHAlignCenterAcrossSelection
                st = "選択範囲で中央"
            Case xlHAlignDistributed
                st = "均等割り付け"
            Case Else
                st = ""
            End Select
            sh.Range("F" & nCnt).Value = st
        Else
            sh.Range("E" & nCnt).Value = "-"
            sh.Range("F" & nCnt).Value = "-"
        End If
        
        'フォント
        If bk.Styles(i).IncludeFont Then
            'フォント名
            sh.Range("G" & nCnt).Value = bk.Styles(i).Font.Name
            
            'フォントサイズ
            sh.Range("H" & nCnt).Value = bk.Styles(i).Font.Size
        Else
            sh.Range("G" & nCnt).Value = "-"
            sh.Range("H" & nCnt).Value = "-"
        End If
        
        '罫線 XlLineStyle
        If bk.Styles(i).IncludeBorder Then
            For kNum = 0 To 5
                stVal = bk.Styles(i).Borders(kXlValue(kNum)).LineStyle
                If stVal <> xlLineStyleNone Then
                    kStr(kNum) = kName(kNum)
                Else
                    kStr(kNum) = "なし"
                End If
            Next kNum
            With sh.Range("I" & nCnt).Resize(1, 6)
                .Value = kStr
            End With
            
        Else
            With sh.Range("I" & nCnt).Resize(1, 6)
                .Value = "-"
            End With
        End If
        
        'パターン XlPattern
        If bk.Styles(i).IncludePatterns Then
            If bk.Styles(i).Interior.Pattern = xlPatternNone Then
                st = "網かけなし"
            Else
                st = "網かけ"
            End If
        Else
            st = "-"
        End If
        sh.Range("O" & nCnt).Value = st
        
        '保護
        If bk.Styles(i).IncludeProtection Then
            'ロック
            If bk.Styles(i).Locked Then
                st = "ロック"
            Else
                st = ""
            End If
            sh.Range("P" & nCnt).Value = st
            
            '非表示
            If bk.Styles(i).FormulaHidden Then
                st = "表示しない"
            Else
                st = "表示"
            End If
            sh.Range("Q" & nCnt).Value = st
        Else
            sh.Range("P" & nCnt).Value = "-"
            sh.Range("Q" & nCnt).Value = "-"
        End If
    Next i
    
    '並べ替え 種類:降順、 スタイル名:昇順、 先頭行:タイトル
    With sh.Range("A1").Resize(cnt + 1, 17)
        .Sort Key1:=Range("A2"), Order1:=xlDescending, Key2:=Range("C2"), Order2:=xlAscending, _
            Header:=xlGuess, OrderCustom:=1, MatchCase:=False
        .Font.Size = 9
        .Columns.AutoFit
    End With
    
    'スタイル表示セルに、スタイルを適用
    For i = 2 To cnt + 1
        sh.Range("B" & i).Style = sh.Range("C" & i).Value
    Next i
    
ERR_EXIT:
    If Err.Number <> 0 Then
        MsgBox "エラー№:" & Err.Number & " " & Err.Description, , "エラーのため終了します"
    End If
    
    Set sh = Nothing
    Set bk = Nothing
    
    MsgBox "組込スタイル=" & BltinCnt & ", ユーザースタイル=" & NotBltinCnt & vbCr & _
    "スタイル合計=" & BltinCnt + NotBltinCnt, , "スタイル件数"
End Sub