AX
カテゴリ:program。。。( 12 )
Excel VBA周り。。。Wordとの連携関係で落とし穴。。。
仕事の関係上、エクセルをよく使うが、時間の関係上VB(Visual Basic)は、必要に迫られたときに「えぃやっ!」とばかりに集中して組み上げる程度で、あまりに奥深いところ(?)までは触っていなかった。

ところで毎年、一定量のワードファイルの書式をチェックする必要があり、五月雨式に送られてくるファイルをその都度チェックすることを手作業でおこなっていた。

数としては100件に満たない程度で、2週間程度の間にばらばらと送られてくる。
ワードのVBまで手を出す余裕もなく、それほど苦にはならないので、いままでそのままにしていたが、ふとしたことからエクセルシート上にファイル書式情報を自動的に展開する方法のあることを知り、少しばかり手を伸ばしてみた。

ネットで「Excel Word VBA」等で検索すると
Excel VBA 他のプログラムとの連係 ExcelVBA で Word オブジェクトを操作
http://makoto-watanabe.main.jp/vba_Word.html

等引っかかってくる。

こちらを参考にし、シートの追加部分は日付情報にて名前の重複判定をしなくても良いように改良し、一枚のシート上にて各行に複数ファイルの書式設定関係の情報を列方向に展開することとした。

で、やはり引っかかった。
「VB恐るべし」。。。といったところか。。。

エクセルのVBにてワードファイルを扱う場合に注意すべき点
ワードのオブジェクトに関連する関数類を使用するとき、初回のマクロ・VBA動作では問題なくても、2回目のマクロ・VBA動作にてエラーが発生する

修正前のコード概要例 --- エキサイトへの投稿時、変なところで引っかかるので、部分的に全角英数にしています。
Set fileSysObj = CreateObject("Scripting.FileSystemObject")
(中略)
Set wordApp = CreateObject("Word.Application")
Set targetDoc = wordApp.Documents.Open(略)
(中略)
Range("A1").Cells(lineNum,colNum).Value
= PointsToMillimeters(targetDoc.PageSetup.TopMargin)
'--- 2回目のマクロ・VB実行時、ここでエラー発生
(中略)
targetDoc.Close savechanges:=False
(中略)
wordApp.Quit

 症状:
  初回は問題なく動作する。エクセルシートを閉じずに2回目の実行を試みると、
PointsToMillimeters(targetDoc.PageSetup.TopMargin)
の部分で「実行時エラー '462': リモート サーバーがないか、使用できる状態ではありません。」が発生する。
エラートラップ(on error)等にて捕捉して中断しても、うまく対処しないと
Set wordApp = CreateObject("Word.Application")
にてバックグラウンドで稼働しつづけているワードソフトが残った状態に陥るので、副作用が生じ、原因の特定にたどり着きにくくなる。
上記のような背景事情もあるためか、ネット上で、同様の症状について検索できるが、根本的な理由を説明しているものにはなかなかたどり着けなかった。(ざっくりと検索しただけなので、探せば的確なものが参照できたかもしれない。見つけ出したらリンクを貼り付ける予定。)

最終的に探し当てた下記が最も根本的な理由になっていると思われる。

MicroSoft サポート
「2 回目のコード実行時に Excel のオートメーションが失敗する」
https://support.microsoft.com/ja-jp/kb/178510/ja?wa=wsignin1.0
原因の要約(私が理解しうる範囲での要約なので間違っているかもしれない):エクセルのVBAでのオブジェクトの捕捉の仕方に(仕様上の?)問題があるようで、ワードのオブジェクトであっても、2回目以降の実行時にエクセルへの(今回はワードへの?)独自の参照が設定されてしまうためにエラーが発生する場合があるようです。


2015.05.17 02:50 追記、上記URL内の文章を今回のものとして(私なりに解釈した内容に)変更し引用(今回の状況に応じて変更した点の内、重要部分をオレンジにしています)
5.(前略)プログラムを開始します。
6.エラーは発生しません。ただし、オートメーションとして作成されたWordオブジェクトへの参照が作成され、解放されません。
7.プログラムを再度実行します。「現象」に記載されているいずれかのエラー メッセージが表示されます。
注 : エラー メッセージが表示されるのは、このコードでは、word関連の オブジェクト変数で修飾せずに呼び出したオブジェクトのメソッドを直接参照しているためです。

修正(というより追記)した部分(赤)
wordApp.PointsToMillimeters(targetDoc.PageSetup.TopMargin)

修正後のコード概要
Set fileSysObj = CreateObject("Scripting.FileSystemObject")
(中略)
Set wordApp = CreateObject("Word.Application")
Set targetDoc = wordApp.Documents.Open(略)
(中略)
Range("A1").Cells(lineNum,colNum).Value
= wordApp.PointsToMillimeters(targetDoc.PageSetup.TopMargin)
'--- 2回目のマクロ・VB実行時でもエラーは発生しなくなった。
(中略)
targetDoc.Close savechanges:=False
(中略)
wordApp.Quit


2015.05.17 02:50 追記
その他、Excel VBAでワードオブジェクトを扱うときに注意すべき点(見つけたら追記していきます)
1.用紙の縦横に関するプロパティに割り当てられた数字が統一されていない。
ワード --- 縦;0、横:1
エクセル --- 縦:1、横:2

[PR]
by kisugi_jinen | 2015-05-10 23:05 | program。。。 | Trackback | Comments(0)
Android アプリ開発、Lenovo IdeaPad Tablet A1 デバッグ (1)。。。
前々回、WillcomのPHS機種更新でタダ同然に手に入れた7インチタブレットのAndroid。手に入れる前、ウェブ上で酷評が多かったが、OSレベルの制約やソフト上の制約程度で、問題なく使えている。

ソフトをダウンロードするのではなく、自分で作ってしまえばウィルス感染の危険性は排除できるだろうと、開発環境を導入することとした。

参考書籍:「Androidタブレットアプリ開発ガイド」(翔泳社)
ダウンロードしてインストールしたソフト(書籍と若干のサイトを参照)
1.Java システム; Java SE 6 Update 38
2.Android開発環境; Android SDK
3.Java 統合開発環境; Eclipse 3.7 / java EE (eclipse-jee-indigo-SR2-win32.zip)
4.Eclipseの日本語化ソフト; pleiades_1.3.4.zip
5.デバッグモードで操作するためのUSBドライバ; a1adbdriver.exe

いくつかの箇所で躓いた。

Eclipseの起動
eclipse.iniを書き換える必要があるが、書籍に記載してある内容のみでは不十分で、Java VMが見つからないというエラーがでる。下記等を参考に必要事項を追記する必要がある。
http://www.myeclipseide.jp/blog/2009/06/specify-eclipse-java-vm.html

USBデバッグモードでの接続に必要なwindows側のドライバ「a1adbdriver.exe」がLenovoの日本語サイトにないが、英語(アメリカなど)のサイトにはある。
http://support.lenovo.com/en_US/downloads/detail.page?DocID=DS027716

まだまだ、躓きがあるが、後ほど。。。

でもまぁ、6時間かけて、ようやく上記にまでたどり着いた。。。

Androidタブレットアプリ開発ガイドによると、Android SDK 3.0~3.2のFragmentと呼ばれるユーザーインターフェースは、Android1.6以降にてもAndroid Compatibility Packageにて利用可能とのこと。

参照サイト
Androidタブレットアプリ開発入門(Software Developer's Think IT)
http://thinkit.co.jp/book/2011/11/24/2338
[PR]
by kisugi_jinen | 2013-01-14 07:34 | program。。。 | Trackback | Comments(1)
PDF経由での封筒への直接宛名印刷。。。
さっき、canon の pixus 960i950iという少し古いが我が家の現役のプリンタで、封筒へ直接印刷しようとして「できない」ことが分かった。

封筒へ直接印刷するには、封筒のお尻側から用紙を挿入し、印字方向を180度回転させて印刷しなければならない。

これは、蓋の部分が斜めに切れているために、通常のはがき印刷のように頭からの用紙挿入では、給紙に失敗し、紙詰まりや、斜めに給紙されてしまうためである。

で、canonの多くの後継機では、用紙選択の中に「角3」などがあり、種類「封筒」+サイズ「角3」といった指定で、印字方向を180度回転させ封筒へ印刷してくれるのだが、960i950iのドライバには「角●」系の用紙設定が入っていない。

メーカーサイトの対応を調べても、対応については「×」になっている。

困った。。。

と、思ったのだが、「PDFに一度出力してから、180度回転させて印刷させればいいのでは?」と思い、やってみたら、大成功!!

ワードの差込み印刷や、宛名印刷専用ソフトからの出力を一旦PDF化して、印刷時に180回転(90度回転×2)を行い印刷するのだが、郵便番号枠への印刷が少しずれることがあるので、A4などの用紙でテストし、微調整する必要があるかもしれない。

※少し古い「筆まめ」から、印刷時にPDFに出力し、180度回転したところ、2mm程度ずれたが、上記方法にて、無事印刷できた

※2012/7/9 03:35 一部修正
pixus 960i -> pixus 950i
でした。
[PR]
by kisugi_jinen | 2012-07-08 04:26 | program。。。 | Trackback | Comments(0)
箱ひげ図・boxplotで芋づる式。。。R:臨床統計の本。。。
SやRは自由度が高すぎて、敷居の高い「統計を専門にする方のためのプログラミング可能な高級統計処理ソフト」と捉えていた。テキスト入力によるコマンド列で次々と処理していかねばならず、「目的との間に介在する煩雑な操作」がイメージされていたからである。

プログラミング好きの私としては、ある意味似つかわしいソフトなのだが、やはりコマンド入力にて一連の操作が必要なのは「障壁」になる。

統計処理は
データ入力 → 統計処理方法の選択 → 統計処理とグラフ生成 → プレゼン資料に貼り付け
といった手順での利用が多く
1.とりあえず、ワークシートでデータ収集 → エクセル
2.統計処理方法選択 → GUIメニューで選択していくだけで解析してくれるのが楽 → 専用ソフト
3.統計処理とグラフ生成 → 専門分野によって「欲しい機能があるかないか」が重要 → 特定の専用ソフト
4.プレゼン資料に貼り付け → グラフの軸等の設定が容易であるかどうか → パワーポイントとの相性
といった視点で捉えるため、
(A).とりあえずエクセルでできる範囲
(B).エクセルで無理なら、「ノンパラメトリック、多重比較、ロジスティック回帰等が入っていて、カプラン・マイヤーや箱ひげ図の描画可能な」専用ソフトの利用
となっていた。

Rでは「2」から「4」の部分にて、「煩雑さ・自由度の高さ・膨大なオンラインドキュメント」といったイメージが先行していたため、敬遠していた。

ところが、(B)での専用ソフトは「高価」かつ「プロテクト」のため、複数台数の端末での利用が困難である。私のように職場の複数個所で仕事をしつつ、ノートも持ち歩く状況では、少なくとも3つ以上のライセンスが欲しいところである。いままでは「操作の簡便性」が統計ソフト選択の主たる要因となっていたが、不況の折、そうも言っていられなくなってきていた。

(A)での標準のエクセルでは「箱ひげ図」を簡単に描くことができないという致命的な欠点がある。

とりあえず簡単にかつまともに「箱ひげ図」を処理できる系を探していたところ、その昔手を染めたGNUPLOTが最近進化していてBOXPLOTというパラメータが新規に扱えることを知った。
gnuplot 4.6での箱ひげ図の描画方法。。。
gnuplot4.6での箱ひげ図描画用メニュー変更。。。


無論Rでも簡単に作成可能とのことだが、GNUPLOTと比べても敷居が高く感じられる。使うためには、少なくとも「目的との間に介在する煩雑な操作」を乗り越えるだけのガイドブックで、かつ(B)の内容を含む書籍等が必要である。
先日、ひさびさにジュンク堂に立ち寄る時間ができたので探してみると、下記の本にめぐり合えた。

R流!イメージで理解する統計処理入門―データ解析の初歩から、シミュレーション、統計アプリの作成方法まで

舟尾 暢男 / カットシステム



内容としては下記の通りである。

1.本のタイトルやカバーに記載は無いが、臨床統計を具体例としており、内容的には臨床統計入門としても十分成り立つ。
2.よくありがちな操作手順のみを記述しているわけではなく、「どうしてそうするのか・それを選択するのか?」といった統計処理の背景が簡潔に述べられており、単元ごとに適切な専門書籍のリストを配している。
3.Rのマン・マシン・インターフェースとしての欠点である、テキストベースのコマンド入力に対し、HTMLにてインターフェース部を作り上げる方法を記載している。


臨床統計系での多重比較については、10年ほど前に専門書籍が複数販売されたが、この本とRだけで十分かもしれない。(無論、10年ほど前に購入した専門書も章末にリストアップされていた)

サンプルファイル類は書籍内に記載されているURLからダウンロード可能だが、URLに一工夫(?)されていて、出版社の書籍紹介ページと間違いやすくなっているので、要注意!!

購入後、著者のサイト
http://cwoweb2.bai.ne.jp/~jgb11101/index2.html
を覗きに行くと、PDFファイル類が豊富で、かつ、上記の後継本?と思われる内容も見ることができる。
「R で統計解析入門」
http://cwoweb2.bai.ne.jp/~jgb11101/files/R-stat-intro/index.html
うぅ。。。こちらが出版されたなら、乗り換えるかもしれない。。。

==
追記
R+臨床統計でググると
「EZRでやさしく学ぶ統計学」というのが引っかかってきた。2012.4.5に出版されている。
どうやらGUI+マウスで操作できるようにRコマンダーをカスタマイズしたようだ。
今月分の小遣いは使い果たしたので、来月購入予定。。。
[PR]
by kisugi_jinen | 2012-07-01 05:39 | program。。。 | Trackback | Comments(0)
gnuplot4.6での箱ひげ図描画用メニュー変更。。。
※2014.06.22 07:06 エキサイトのスタイルシート類の変更によるものか、表示が一部乱れるようになっていたので、改正。
===
gnuplot 4.6での箱ひげ図の描画方法。。。
にて取り上げたgnuplotでのboxplot(箱ひげ図)であるが、wxWidgets terminalウィンドウ(以下、wxt)での入力補助メニューが未対応であった。
無論、全てを手入力で入れていってもいいのだが、コマンドを暗記していなければならず、たまに使うときにマニュアルを引くのは手間である。

メニュー部分については、
[インストール先]/bin/wgnuplot-ja.mnu
というファイル(一種のマクロ)の内容を編集することで、メニューを変更できることが分かった。

文法については、実際の動作と対比すると分かる程度のものである。基本的にメニュー表示部分と直下の行でのメニュー実行部(コマンド行に挿入される文字列、[INPUT]等にて入力ダイアログを表示し入力された文字を文字列内に挿入するようになっているようだ)にて構成されている。オンラインで検索すると詳しいことが分かるのだろうが、当面使用する分には困らない程度になった。(この記事を見て試してみたい方は、自己責任で願います。正規のマニュアル類はgnuなのでネット上にあるはずですが、見つけられませんでした^^;)

※編集時には、ファイルのバックアップを取っておくこと。また、あまりメニュー構成を増やすとエラーが表示されてメニュー全体が表示されなくなるので注意!!

早速メニューの変更をしてみた。
1.プロット(P)メニュー内
x,y,ylow,yhigh として使う列
 の定義(using ... )の後で、「---」の前に、下記メニュー表示部メニュー実行部を挿入
  (x),data,(boxwidth),factorとしてboxplotで使う列 、ex. (1),2,(0),1
   using [INPUT]x pos? default:(1)[EOS]:[INPUT]data column?[EOS]:[INPUT]box_width? default:(0)[EOS]:[INPUT]category column?[EOS] [EOS]

2.プロット(P)メニュー内
 スタイル(複合)のサブメニュー内の最後に以下を挿入
  箱ひげ図 (Box Plot)
   with boxplot

3.スタイルメニュー内
 線、点のスタイルの初期化
 の定義(unset style ... )の後で[EndMenu]の直前に、以下の区切り線(「--」)とboxplot関係のスタイル類を追加
 --
 [Menu]
  箱ひげ図の表示スタイル

   ひげの長さ(range,def:1.5 x interquartile range)
    set style boxplot range [INPUT]times of range?[ENTER]
   ひげの長さ(fraction,def:0.95 x num. of data)
    set style boxplot fraction [INPUT]times of fraction?[ENTER]
   --
   外れ値のスタイル(pointtype,def:7)
    set style boxplot pointtype [INPUT]number of point type?[ENTER]
   外れ値非表示(nooutliers)
    set style boxplot nooutliers
   外れ値表示(outiers)
    set style boxplot outliers
   --
   因子描画順:ソート無し(unsorted)
    set style boxplot unsorted
   因子描画順:ソートあり(sorted)
    set style boxplot sorted
   x軸での因子間距離(separation)
    set style boxplot separation [INPUT]times of separation?[ENTER]
   因子ラベルの軸(labels)自動
    set style boxplot labels auto
   因子ラベルの軸(labels)x軸
    set style boxplot labels x
   因子ラベルの軸(labels)x2軸
    set style boxplot labels x2
   因子ラベルの軸(labels)OFF
    set style boxplot labels off
   --
   エラーバーの幅(small;0.0)
    set bars small
   エラーバーの幅(large;1.0)
    set bars large
   エラーバーの幅(fullwidth)
    set bars fullwidth
   エラーバーの幅(size;0-1)
    set bars [INPUT] width(0.0-1.0)?[ENTER]
  [EndMenu]
   箱ひげ図のスタイル表示
    show style boxplot
   エラーバーのスタイル表示
    show bars
 --


新しく変更したメニューを使ってboxplot用のデータ(前回投稿記事分を少し修正したもの)を読み込んで表示させるまでの手順例を示す。

まず、plot文字列を挿入
b0032038_6183915.png

次に、表示したいデータファイルを選択
b0032038_619352.png

※データファイルには、gnuplot 4.6での箱ひげ図の描画方法。。。にて示してあるものに、さらに因子ラベルとしてdata-cを追加した。さらに因子でのsortをテストするため各行を適当に入れ替えた。
b0032038_6225550.png

ファイル内での因子の列とデータの列などのパラメータを入力
ファイル内で
因子 データ
という形式(1列目に因子、2列目にデータ)をデフォルトとして例示している。
b0032038_6231743.png

入力ウィンドウにてパラメータを入力
b0032038_6233941.png

ここまでのメニューによる入力文字列
b0032038_624056.png

最後に「boxplot」を指定する文字列を挿入
b0032038_6241763.png

完成したコマンドライン
enterキーを押すと描画される
b0032038_6243254.png

描画された箱ひげ図
b0032038_6244375.png

スタイルを変更
まずは、外れ値の形式を変更
b0032038_625253.png

形式の種類については、マニュアル類を参照してください。
コマンドライン上でいろいろと変えて試してみてもいいです。
b0032038_6252015.png

「再表示」をクリックするか、replotと入力しenterキーを押す
b0032038_6254443.png

●から+へと変更されたのが分かる
b0032038_6255952.png

データを因子名でソートし
b0032038_658061.png

b0032038_6581819.png

ボックスを塗りつぶしてみる
b0032038_6495938.png

透過度を考慮して設定
b0032038_6501228.png

表示例
b0032038_6502237.png

[PR]
by kisugi_jinen | 2012-06-22 06:52 | program。。。 | Trackback(1) | Comments(0)
gnuplot 4.6での箱ひげ図の描画方法。。。
一般的なプロットはエクセルだけで描画可能なのだが、統計でよく使う「箱ひげ図」だけはデフォルトで描画困難である。株価チャート用のローソク図を利用する方法もあるのだが、本質的ではない。
フリーでやるならgnuplotを用いるのがもっともいいのだが、日本語のhelpでも分かりにくいところがある。(日本語のhelpはgnuplotをインストールしていなくてもgoogleで"gnuplot boxplot"にて検索すればひっかっかって来る。)

あれこれ試している内に、設定方法(制御方法)が分かったので、メモしておく。

補足・・・
gnuplotは昔使っていたのだが、ローソク図だけで箱ひげ図は入っていないと思い込んでいた。

当時購入した解説書
川原 稔 著:「whatis UNIXシリーズ、gnuplotパーフェクト・マニュアル」、1999年10月28日・初版(ソフトバンク・パブリッシング)
にも、記述がない。

しかし、バージョンアップに伴ってか、箱ひげ図(boxplot)を扱えるようになったようだ(もともと入っていたのなら、気がつかなかっただけなのだが。。。)

データはテキストファイル(c:/plot/data.txt)に入っていて、1列目にデータの区分、2列目にデータの値という形式で複数行あったとする。
たとえば、
data-a 12
data-a 13
data-a 23
data-a 11
data-a 10
data-a 9
data-a 11
data-a 13
data-a 14
data-a 13
data-a 11
data-b 20
data-b 23
data-b 21
data-b 22
data-b 21
data-b 22
data-b 24
data-b 20
data-b 19
data-b 18
data-b 19
data-b 3

とする。(行の順番に意味は無く、data-aとdata-bがごちゃ混ぜでも問題ない)

gnuplotで
gnuplot> set key off
gnuplot> plot "c:/plot/data.txt" using (1.0):2:(0):1 with boxplot
と入力すればwxWidgets terminalウィンドウ(以下、wxt)上に
b0032038_5151515.png

と描画される。
※using書式の詳細については、gnuplot付属の日本語マニュアル等を参照してください。
1項目目:x軸上、どこにプロットするかを決める。今回の場合、4項目目を指定しているので(1.0)は(0)でも(2)でも描画には影響がない。
2項目目:データ列の位置(2列目なので、2)
3項目目:箱ひげ図の箱の幅(デフォルトを使用するのであれば、0)
4項目目:データ区分(カテゴリ)を記述している列

(日本語)helpでは、"with boxplot"の表記がなく、そのままではデフォルトのプロットスタイルが使われてしまう。
最初の "set key off"は、描画されるグラフ内に「"c:/plot/data.txt" using (1.0):2:(0):1」と
いった注釈(説明)文が入るのを消す操作になる。

なお、テキストデータを開いていれば、データを修正し保存した後、wxt画面左端から2番目の「replot」ボタンをクリックするだけで、wxt上のグラフは自動的に更新される。
b0032038_5465796.png

後は、グラフタイトルとか、グラフの塗りつぶし、線の色、フォントの大きさ等をsetコマンドで整えていけば完成である。
よく使う設定はファイルに保存しておけば、次回以降同様の設定でグラフを描画できる。
gnuplot> save set 'ファイル名'
gnuplot> load 'ファイル名'

※gnuplotホームページ
http://www.gnuplot.info/
最新版のダウンロードについては上記サイトからsourcefoge.net内へリンクが張られている。
ちなみに、投稿時の最新のウィンドウズ版ダウンロードファイル名は「gp460-win32-setup.exe」
※gnuplot関連サイト
情報サイト
http://takeno.iee.niit.ac.jp/~shige/unix/gnuplot/gnuplot.html
日本語マニュアル関係のサイト
http://takeno.iee.niit.ac.jp/~foo/gp-jman/
↑どちらも新潟工科大学・情報電子工学科・竹野氏のサイトになります。


そうそう。。。
なんでgnuplotかといえば、実はmaxima5.27.0(wxMaxima 12.04.0)の存在を最近になって知り、wxMaxima 12.04.0のサイドバーの「統計処理」に「箱ひげ図」というボタンがあるのに気がついていろいろと操作していたのだが、デフォルトの設定ではデータを設定しにくかったり、うまく描画できなかったりしたことと、「外れ値」を処理できなかったことにある。
wxmaximaでの描画サンプル(wxboxplotでは描画できなかったので、boxplotコマンドに切り替えている)
b0032038_6553868.png


ただし、wmMaximaでは、関数のプロットが非常に簡単にできるようになっています。
b0032038_7373578.png

[PR]
by kisugi_jinen | 2012-06-10 06:29 | program。。。 | Trackback(2) | Comments(0)
エクセル(excel)での網掛け書式の消去。。。
身近なところで、以前取り上げた「デフォルトの問題」が隠れていた。

エクセルでセルに網掛けをしたあと、網掛け書式を消去することができない。

これは、「セルの書式設定」での「パターンの種類」で選択可能な値に「クリア」相当がないからである。

よく勘違いするのは、選択肢左上の真っ白な「塗りつぶし」であるが、これではエクセルにて元々表示されている「枠線」を消してしまい、決して元には戻らない。
※2012/7/25 03:00 訂正・追記 を本文下方に行っています。
「決して元には戻らない。」ではなく、戻す方法があります。
「パターンの種類」で塗りつぶし(xlSolid)を選択後、「色塗りしていないセル」のみ選択して、「背景色」に「色なし」を指定すれば戻ります。
ただし、色を塗っていなかったセルを個別に選択して操作する必要があり、不便です。マクロで解決するしかないようです。詳しくは、本文下方を参照下さい。

b0032038_3445267.png

パターンの種類に設定できる値は、VBAやマクロでのヘルプにて「XlPattern 列挙」を検索すると表示される。
このうち、先の「塗りつぶし」は「xlPatternSolid」に相当し、クリアは「xlPatternNone」である。「xlPatternAutomatic」ではクリアにはならない。
※これら値は「xlPattern●●●」となっているが、「xl●●●」でも大丈夫なようだ。
b0032038_3451314.png

で、エクセルのメニューから、クリアに相当する「xlPatternNone」を選択しようとしてもできない。そもそも選択肢に表示されないからである。

選択範囲のセルの書式全体をクリアすることは、メニューバーから選択可能だが、網掛け以外の書式まで消えてしまう。

仕方がないので、下記の便宜的な手段を実行することにした。

VBA/マクロでの「イミディエィトエリア」で、下記のように入力し、Enterキーを押しながら実行していくという手段である。
Range("A1:B2").Select
Selection.Interior.Pattern = xlNone
無論、"A1:B2"については該当する範囲に置き換える必要がある。
※シート全体を対象としたマクロとして保存しておいて、必要なときに読み込んで実行するという方法もある。

ネット検索しても、他に良い方法はないようだ。
もっと良い方法について、どなたかご存じの方がおられたら、教えてください。

★追加 2011/08/31 08:46
上記方法ではセルに設定していた色も消えてしまった。。。別の方法を考えるしかないかな?

※2012/0725 03:00 追記
「パターンの種類」で塗りつぶし(xlSolid)を選択後、「色塗りしていないセル」のみ選択して、「背景色」に「色なし」を指定すれば、無事に元に戻った。
この2種類の設定変更(パターンの種類:xlSolid+背景色:色なし)=「xlNone」に相当するようである。
VBで、該当範囲の「色」が設定されているかどうかで判別させて、「色」が設定されて無い場合に「xlNone」を実行するようにFor-Nextループを組むしかないようである。

Sub clearPattern()
'---セルの網掛けパターンのみ消去
For Each sel In Selection
With sel.Interior
If (.PatternColorIndex <> xlNone) Then
'---パターンが設定されている場合
If (.ColorIndex <> xlAutomatic) Then
'---セル背景色として色が設定されている場合
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
Else '--- .ColorIndex = xlAutomatic
'---セル背景色として色が設定されていない場合
.Pattern = xlNone
End If
'--- 以下は、必要があれば実行、必要なければコメントアウト
.TintAndShade = 0
.PatternTintAndShade = 0
End If
End With
Next
End Sub

上記で、「.TintAndShade」と「.PatternTintAndShade」は、パターン操作をマクロで記録した時に自動的に入るので入れているが、変更していない場合には、入れる必要はないだろう。
※今更ながらなのだが、プログラム類を投稿本文中にいれるとき、行頭スペースの制御が厄介。
今回、表示用として<pre>~</pre>で囲んだのだが、表示された文章をテキストエディタにコピペすると改行が消えてしまう。

仕方ないので、コピペ用のテキストを下記に置いておく(自分用)
Sub clearPattern()
'---セルの網掛けパターンのみ消去
For Each sel In Selection
With sel.Interior
If (.PatternColorIndex <> xlNone) Then
'---パターンが設定されている場合
If (.ColorIndex <> xlAutomatic) Then
'---セル背景色として色が設定されている場合
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
Else '--- .ColorIndex = xlAutomatic
'---セル背景色として色が設定されていない場合
.Pattern = xlNone
End If
'--- 以下は、必要があれば実行、必要なければコメントアウト
.TintAndShade = 0
.PatternTintAndShade = 0
End If
End With
Next
End Sub
[PR]
by kisugi_jinen | 2011-08-31 03:57 | program。。。 | Trackback | Comments(0)
EclipseのC++とopenGL(glut)。。。imageJのソースも。。。
覚書です。。。

環境
windows XP pro (ないしMedia Center Edition)


1.Eclipseのインストール。 日本語化がめんどくさいので、3.5 Galileo をインストール。
 http://mergedoc.sourceforge.jp/ から、
 pleiades-e3.5-ultimate-jre_20090930.zip (現時点での最新バージョン)をダウンロード
 ドライブレターの直下にeclipseフォルダを作って、そこに解凍。
 ←階層の深いフォルダ内へ展開すると、不具合の元になる。
 ex. d:\eclipse へ解凍

2.VEのインストール (java用)
 http://www.eclipse.org/vep/ から、
 VE-Update-1.4.0.zip (現時点での最新バージョン)をダウンロード
 ダウンロードしたzipファイルは、そのままインストールに使うため、できるだけ階層の浅いディレクトリに保存。
 ex. d:\download へ保存
 eclipseの「ヘルプ」→「新規ソフトウェアのインストール」にて、“作業対象”---「追加」ボタンをクリック
 「アーカイブ」ボタンをクリックして、上記「VE-Update-1.4.0.zip」を選択。
 Visual Editor
 (および、必要に応じて Visual Editor Source)
 にチェックを入れて、「次へ」を順にクリックし、インストール。(右下に進行状況が表示)
 上記プラグインのインストール後、「なにもしないで終了」し、おまじないのように、eclipse.exe -clean.cmd (eclipseインストールフォルダのeclipseフォルダ内にある)を実行すること。
 ※プラグインインストール(ないしアップデート)後には、必ずcleanフラグ付きのコマンドを実行しないと、動作不安定になります。
 ※他にもVisual Editor関連のプラグインがずらりと並んでいるが、くれぐれも上記以外のプラグインにチェックを入れてインストールしないように!! eclipseフォルダ内を全て削除して、eclipseの再インストールからやり直さなければならなくなります(3回ほど試行錯誤してしまった)

3.openGL関係 (C++用)
 openGL関係のライブラリとglut関係のインストール

 といっても、http://www.xmission.com/~nate/glut.html から得られる glut-3.7.6-bin.zip を解凍し、内部のglut.hを mingw/include/GL/ フォルダ直下にコピーするだけ。
 ※glut.libの代わりに、libglut32.aがmingwのlibフォルダに既に入っている。
 ※glut.dllはwindows XPには、既に入っている。
 ※上記が無ければ、下記を参考にしてインストールする。
 http://www.wakayama-u.ac.jp/~tokoi/opengl/libglut.html
 http://www.rimath.saitama-u.ac.jp/lab.jp/tsakurai/opengl/index.html

3-1.minGWとMSYSのパスの設定
 システム環境変数のpathにmingw\binとmsys\1.0\binを追加
※インクルード系が旨く働いていない。。。mingw\include をインクルード・パスに設定すると重複定義エラーがでるし、設定しないと、imp系のコマンド(関数)がundefinedになるし。。。
 ※解決したら、書き換える予定。。。

4.imageJ関係 (java用)
 http://rsbweb.nih.gov/ij/ 直下のDownloadから、目的のOSに相当するJRE付きの実行ファイルをダウンロードし、インストールする。
 eclipseでコンパイルしたり、プラグインを自作するときの関数を参照するために、ソースコードもダウンロードする。
 imageJのソースは、なるべく浅い階層のディレクトリに解凍し、eclipseから操作可能なように設定する。
 ※手順がややこしいので、後日、詳細をアップ予定。
 ※java1.6に対応しているはずですが、warningが多数でています。java1.5からの細かな仕様変更に対応し切れていないようです。
[PR]
by kisugi_jinen | 2010-01-27 01:25 | program。。。 | Trackback | Comments(0)
ぱそこんキッズキー。。。
バンダイとバッファローの提携商品として「ぱそこんキッズキーなるものが発売されている。
http://pckids.jp/
出始めの商品のためか、Q&Aコーナーがあるものの、少しばかり気になるところがあるので、メモしておく。
Q&Aコーナー
http://buffalo.jp/qa/supply/pkidsqa.html


メモ(使用開始直後のため、たんなる勘違いの場合もあるので注意。他の解決方法が見つかったり、修正されたりしたら書き換えていきます。)
インストール後に、気になる点
1.command+Lキーにてロックができなくなる。
2.インターネットセキュリティの影響で、付属の専用ブラウザ「FunGateBrowser.exe」がネットワークへのアクセスを遮断され、標準のアクセスサイトにすらアクセスできなくなる。
→解決法:インターネットセキュリティにてブロックされている所をチェックし、当該ソフトからのインターネットへのアクセスを許可する。(Q&Aコーナーに記述がないので注意!!)
3.使用可能ソフトを設定して、そのソフト(以下、外部ソフト)を使用していると、使用制限時間に達した旨のダイアログが表示されても、外部ソフトを終了しない限り、外部ソフトを使い続けることが出来る。
→是非とも解決してもらいたいところ。
※07/11/26 03:45追加
本人の意志を尊重するという立場であれば、ダイアログが表示され続けているというところがミソかもしれない。
外部ソフトとリンクさせることは無理だろうけれど、一定時間ごとに「OK」をクリックしなければ、アクセス不可能にするとか、あらかじめ設定しておいたパスワードを入力しないとアクセス不能にするとか、強制的にスタンバイモードに入るとか、選択肢を用意して欲しいところ。。。

ぱそこんキッズキーの設定
1.「閲覧可能サイト」にて、直接URLを入力すると、追加されたふりをして、削除できなくなり、キッズモードでクリックすると、専用ブラウザが異常終了する。
→解決法:とりあえず、再インストール。


===07/12/10 22:50追加
しばらく使っているうちに、「ユーザープロファイル」関係のエラーダイアログ(※)が表示されて、ウィンドウズの画面(タスクバーなど)が表に出たまま、立ち上がるようになってしまった。本当に壊れたのか、あるいは強制的にウィンドウズ画面の全面にて動作させるため、初回ログイン時のATOK等の辞書併合等のアプリケーションを無視し続ける動作設計をしていることなどが蓄積しての結果なのか、良くは分からなかったが、とりあえず、再インストールすることにした。


「ローカルに格納されているプロファイルを読み込めません。セキュリティの権限が不足しているか、ローカル プロファイルが壊れている可能性があります。問題が解決しない場合は、ネットワーク管理者に問い合わせてください。」

「ローカルのプロファイルが見つかりません。一時的なプロファイルでログインしています。ログオフ時にこのプロファイルへの変更は失われます。」

[PR]
by kisugi_jinen | 2007-11-24 18:04 | program。。。 | Trackback | Comments(0)
Visual C#, JPEG, Photoshop elements 6, 不明または無効なJPEGマーカー
さっき、visual C#にて加工した画像をjpeg形式で保存し、phtoshop elements 6で開こうとすると
要求された操作を完了できません。不明または無効なJPEGマーカーが見つかりました
という、エラーダイアログが表示されて開かない現象が生じた。

1.this.saveFileDialog1.DefaultExt = "jpg";として、標準の保存拡張子を「jpg」にしている。(開いている元画像はjpeg画像)
2.windowsでの標準の「画像とFaxビューアー」や、同じphotoshop elementsでもver.2等では問題なく開くことができる。
3.読み込み後、処理せずに保存すると、問題なく開くことができる。(jpeg画像を読み込んで、そのまま保存)

で、よくよく調べてみると、保存されたファイルの拡張子は「jpg」であるにもかかわらず、内部形式は「png」であることが分かった
どうやら、「画像とFaxビューアー」や、photoshop elements 2.0等では、拡張子にかかわらず、pngファイルとして読み込んでいたようだ。(C#にて加工操作すると自動的に?内部でpng形式になる?)

visual C#にて
this.pictureBox1.Image.Save(this.saveFileDialog1.FileName);
の部分を、
this.pictureBox1.Image.Save(this.saveFileDialog1.FileName
   ,System.Drawing.Imaging.ImageFormat.Jpeg);
のように、明示的にJpeg形式のフォーマットを使用するように変更すると、問題なく開くことがわかった。

※08/04/22 04:10 追加
visual studio .net系にて、上記「間違いやすいデフォルト」が散在しているようである。
たとえば、
StreamReader sr = new StreamReader(args[0],Encoding.Default);
StreamWriter sw = new StreamWriter(args[1], false, Encoding.Default);

にて、
StreamReader sr = new StreamReader(args[0]);
StreamWriter sw = new StreamWriter(args[1], false);

と、Encoding部分をデフォルトにした場合に、違いがある。
Encoding.Default

は、一般的な日本語Windowsでは、shift-JISであるが、Encoding.○○○の○○○の部分には、shift-JISに相当するものがない(あるにはあるが、通常のマニュアルレベルでは検索困難で、明示的ではない)
参照
DOBON.NET > プログラミング道 > .NET Tips > ファイル、フォルダ
http://dobon.net/vb/dotnet/file/readfile.html
Encoding部分を記述しない(デフォルト設定にする)と、UTF-8が採用される。
ようするにDefaultという記述の意味するところと、省略時のデフォルトの概念が交錯しやすく、ミスを誘引する(医療現場の言葉で言えば、インシデントを誘発しやすい)環境といえる。

[PR]
by kisugi_jinen | 2007-11-03 19:16 | program。。。 | Trackback | Comments(0)



「ともし火に我もむかはず燈(ともしび)もわれにむかはず己がまにまに」(光厳院) --- 厳然とした境界を越え得ぬとき、その上でなお、越えうるものがあるとすれば、それは「情」である。
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
検索
カテゴリ
最新の記事
お知らせとリンク。。。
お知らせ
●コメントスパム対策のため、承認制に変更しました(2010.09.29)
●トラックバックのリンクチェック機能を追加しました。excite以外からのトラックバックをされる場合、当該記事へのリンクを埋め込んでください。
リンク
ゲストブック
---全体的なコメント等は、こちらへどうぞ。。。
来生自然のホームページ
---私の知の思想史。。。
鉄鼠
---「考える」ということに向き合う。。。
Genxx.blog
移転後http://blog.genxx.com/
---「情」を含めて専門的な立場から「こころ」を模索し続けるGenさんのブログ。。。
研幾堂
---山下裕嗣氏による哲学のサイト。以前、形而上学についてやりとりさせていただいた。
記事ランキング
最新のコメント
Kandomonmasa..
by kisugi_jinen at 01:29
Kandomonmasa..
by kisugi_jinen at 03:51
kisugi_jinen..
by Kandomonmasa at 14:28
> SumioBabaさ..
by kisugi_jinen at 10:41
「神」を完全に解明しまし..
by SumioBaba at 05:06
最新のトラックバック
究極の人工知能。。。ショ..
from 来生自然の。。。
所詮ゲーム、背景を勘ぐる..
from 来生自然の。。。
シン・ゴジラと所信表明演..
from 来生自然の。。。
ポケモンGOのお台場騒動..
from 来生自然の。。。
シン・ゴジラ。。。
from 来生自然の。。。
以前の記事
フォロー中のブログ
外部リンク
ブログパーツ
ライフログ
ファン
ブログジャンル
画像一覧