ページ

2012年6月18日月曜日

◆Excel 選択された行数をカウントする(非連続選択対応)

Excel VBA

通常、選択行は「Range」オブジェクトの「Rows.Count」とかで簡単に取れる。
しかし、これが「Ctrl」を使って非連続行を選択したりするとうまくいかない。

「Rows.Count」は最初の選択行(連続した部分)の行数が返ってくるようだ。

選択された全行を取得するにはどうするのか。
調べてみたが意外とこれが見つからない。

さすがに世界を代表するソフトだけあってExcelの問題はネットを探せば簡単に解決策が見つかるものだが、不思議と問題にしている人さえほとんど見かけない。
(もしかすると根本的にやり方が間違っているのかも・・・)

ネットで回答が見つからなかったので自分なりに力技で求めてみた。

選択部分は「Selection.Areas」で塊ごとの「Range」オブジェクトが返ってくるようだ。
だとすればあとはそれぞれの行数をカウントして足すだけ。

RowCount = 0
For Each Rng In Selection.Areas
    RowCount = RowCount + Rng.Rows.Count
Next
MsgBox (RowCount)

もっとダイレクトな方法があってもよさそうだが、とりあえず良しとする。

2012年6月15日金曜日

◆SharePoint PDFファイルを直接開く


ShaePointサイトにアップしたPDFファイルを開くとダウンロードのダイアログが表示されるが、Officeドキュメントの様にそのまま開いてくれると便利だ。

探してみると以下にその方法があった。
SharePoint 2010 でPDF を開く « クリエ・イルミネート ブログ

簡単にまとめると

  • PDF用のアイコン(どこからか取ってきて)を以下に保存。
    C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\IMAGES
  • 以下のパスにあるDocIcon.xml にPDF用のMappingを追加。
    C:\Program Files\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\XML
    image

っと設定してあげれば良いらしい。

様々な環境で試したわけではないので確かなことは言えないが、当方の環境で試してみるとクライアントのAdobeReaderのバージョンによって挙動に違いがみられた。

  • バージョン9
    上記設定では直接開くようにはならず保存ダイアログが表示された。
  • バージョン10(X)
    保存ダイアログが表示されずにドキュメントを開くことができた。
    しかし、以下の設定をしてもブラウザ内には表示されなかった。
    image

そこで、上記サイトに追加情報で載っていた以下の設定を行ってみた。

1)サーバーの全体管理>Webアプリケーションの管理 を開く。
2)一覧から当該サイトを選択し、リボンの【全般設定】をクリック。
3)ブラウザでのファイル処理>制限しない をチェックして【OK】をクリック。

結果は、

  • バージョン9
    AdobeReaderの「PDFをブラウザに表示」のチェックに従ってブラウザに表示、独自ウインドウに表示、が可能だった。(保存ダイアログは表示されない)
  • バージョン10(X)
    先ほどと動作は変わらず。
    ブラウザ外(独自ウインドウ)にのみ直接表示可能。

別の要因による影響かもしれないが一応メモしておく。

◆SharePointサイトのクロール対象にPDFファイルを追加する

SharePointで検索処理をするためには予めクロール処理を行う必要がある。
WordやExcelなどのOfficeドキュメントは最初から検索してくれるようだがファイルの種類によっては、対応するフィルターを追加する必要がある。
以下のドキュメントを基にPDFファイルをクロール対象にする手順を纏めてみた。
Microsoft SharePoint Server 2010 自習書シリーズ | TechNet

  1. 「サーバー全体の管理」から「アプリケーションの全般設定」をクリック。
    image
  2. 「ファーム検索管理」をクリック
    image
  3. 「Search Service Application」をクリック
    image
  4. 「ファイルの種類」をクリック
    image
  5. 「新しいファイルの種類」をクリック
    image
  6. 「ファイル名拡張子」に「PDF」と入力し「OK」ボタンをクリック
    image
  7. IFilterのインストール
    PDFファイルの中身をクロールするためにAdobe社が提供しているPDF用のフィルタープログラム(IFilter)をインストールする。
  8. IFilter用のレジストリー値の確認
    • レジストリーエディタの起動
      「Win + R」で「ファイル名を指定して実行」を開き「regedit」と入力し「OK」ボタンをクリック。
      image
    • レジストリ1
      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office Server\14.0\Search\Applications\{site GUID}\Gather\Portal_Content\Extensions\ExtensionList
      ※{site GUID}のところは、環境別に生成された任意のIDが入っています。
      image
      ExtentionListの値の中に”pdf”があることを確認します。もしなければ、値を追加します。
      リスト一覧を見渡し、まだ使われていないID番号を確認します。(この場合は48)
      値はレジストリエディタ右側のウィンドウで右クリックをし、「新規」から「文字列値」を選びます。
    • レジストリ2

      Filter値の確認をします。
      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office Server\14.0\Search\Setup\Filters\.pdf
      を開きます。
      image
      値が下記のようになっていることを確認します。
      <REG_SZ> Default = <value not set>
      <REG_SZ> Extension = pdf
      <REG_DWORD> FileTypeBucket = 1
      <REG_SZ> MimeTypes = application/pdf

    • レジストリ3
      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office Server\14.0\Search\Setup\ContentIndexCommon\Filters\Extension\.pdf
      値が ”{E8978DA6-047F-4E3D-9C78-CDBE46041603}”である必要があります。違う値が入っている場合は、この決められた値に変更します。
      image
      ※他の拡張子の「種類」を見ると、すべて「REG_MULTI_SZ」になっているので合わせたいところだがGUIからは変更できないようだ。
      そこで、以下のPowerShellコマンドにて変更。
      New-Itemproperty "HKLM:\SOFTWARE\Microsoft\Office Server\14.0\Search\Setup\ContentIndexCommon\Filters\Extension\.pdf" "(default)" -propertytype MultiString -value {E8978DA6-047F-4E3D-9C78-CDBE46041603}
  9. DOCICON.XMLファイルの編集
    • アイコンの追加
      アイコン画像を入手します。PDFファイルに関しては、Adobe社がアイコンを用意しています。
      http://www.adobe.com/misc/linking.html#pdficon
      17×17サイズのアイコンを選択し、右クリックし、名前を付けて画像を保存します。本書は名前を”PDF16.GIF”としてローカルに保存します。
    • アイコンの保存先
      C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\IMAGES
    • C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\XML\DOCICON.XMLファイルをメモ帳で開く。
    • マッピングキーを追加します。<ByExtention>属性内の任意の場所に下記の値を追加します。
      <Mapping Key="pdf" Value="pdf16.gif"/>
      image
  10. サービスの再起動とIISの再起動

    [スタート] から [ファイル名を指定して実行] をクリックし、 “cmd” と入力し、起動します。下記コマンドを順に実行します。
    net stop osearch14
    net start osearch14
    iisreset

  11. クロール処理を実行し、PDFが検索されるか確認する。

2012年6月1日金曜日

◆Windows8プロキシ環境でLiveIDを使ってログオンする

1.設定を選ぶ(画面右下にカーソルを持っていくと表示される)

image

2.PCの設定変更を選択
image

3.PC設定にて「ユーザー」を選択
image

あとは画面に従った自分のLiveIDを入れればOK

のはずなのだが、これがまたうまくいかない(接続エラーになる)

調べてみると、どうもプロキシ環境ではWinHttpによるプロキシサーバーの設定が必要らしい。
確かにログオン前に接続する必要があるので当然といえば当然なのだが、何かしらセットアップ時にサポートがあってしかるべきではなかろうか・・・。

image

◆Windows8をマルチディスプレーで使う

Windows8RPでマルチディスプレーの扱いがちょっと変わっているっぽい。
まぁ、マルチディスプレーというよりはそもそものWindowsキーの扱いが変わっているのかな。

以前はWindowsキーのトグル動作でメトロと旧デスクトップを行き来していたのだが、CPからは基本的にはメトロアプリとメトロスタート画面のトグル動作になった。
(CPもあまり使っていなかったので勘違いかもしれないが・・・)

マルチディスプレーの場合、メトロは一方の画面でしか表示できないので旧デスクトップとメトロとが頻繁に切り替わって落ち着かなかったがこれでやっと普通に使えそうな感じだ。

Windows8をタブレットやスマフォで使う分には問題ないだろうが、Windows7からのアップグレードとしては厳しいのでは?と感じていたが1、2時間使ってみただけではあるが「なんとなくいけそうなきがする~」と感じるようになった。

要はWindows7の後継として使うには、メトロのスタートアップ画面をこれまでのスタート画面だと思えば良いのだ。
これまではWindowsキーで小さなダイアログ表示されていたのがWindows8では大きな画面になっただけと捉えれば違いは無いのだと思えてきた。
そう捉えれば、通常はこれまで通り同じ感覚で使えるし、いざとなればメトロアプリも使うことができる。
当然開発もこれまでのWindowsアプリも作れれば、メトロアプリも作ることができる。

いい感じだ。

ちなみに、マルチディスプレーのメトロ画面をどちらのディスプレーに表示するか。
この変更方法が解らなかったのだが、偶然以下の操作でいけるのを見つけた。(これが正攻法かは解らないが)

  1. まず、メトロアプリを何か起動する。
  2. 画面の一番上にカーソルを持っていくと手の形をしたカーソルになるので掴んで(クリックして)ドラッグする。
    image
  3. とは反対の画面に持っていくだけでメトロ表示が移動してくれる。

 

 

◆Windows8天気の設定

Windows8のRP版がリリースされたのでインストールしてちょっとだけ使ってみた。

CP版もインストールしただけでほとんど使っていないので感覚的には初めて使うような感じ。

いつもIEをつなげただけで満足て終わっているので今日は別のアプリケーションも触ってみる。
とりあえず「天気」を開いて自分の地域を追加。
追加は簡単にできるのだが、スタート画面に表示させるデフォルトの地域の設定方法が解らない。

こんな感じになっているので普通に考えれば上にドラッグして変わってくれれば良いだけなのだが。
image

実際に個別の地域を表示させたうえで設定するのかとも思ったのだが、右クリックしても表示されるのはこんな画面で特に何も出来そうもない。
image

一番上に表示されている「東京」デフォルトなので削除してやれば必然的に2番目がデフォルトになるだろうとも思ったのだが、追加はできても削除の仕方が解らないと来ている。

Apple対抗に必死なはずなのにこんな直観的じゃないGUIで良いのかしらん・・・。

こんなくだらないことにしばらく試行錯誤してやって見つける。

どうもこの個々の地域の設定画面、現在のデフォルトとそれ以外で表示を分けているのだ。
デフォルトじゃない地域の設定画面を表示させれば目的の設定項目が現れる。
image

どうしてこんな単純なことをこんなに難しくしてしまうのかね・・・。

もし引っ越しでもして以前の地域を削除しようと思ったら、いちいち他の場所をデフォルトにした上でその地域を開きなおして削除しなきゃいけないのかぁ?

私が最近チェックした記事