2012年5月21日月曜日

2012年4月20日金曜日

2011 年 10 月以降に公開された Excel 2007 の更新プログラムを適用すると表示通りに印刷できない

2011 年 10 月以降に公開された Excel 2007 の更新プログラムを適用すると表示通りに印刷できない



な、なんだってーーー!!!(AA略



今晩は。無隊長です。

表題の件、今年3月のMSサポートなのですが、これは困った。

なんでって医療関係者の方々から大絶賛されているMNA®スターターキットExcel版に影響するじゃないか。



今のところ当事象に関する修正パッチはまだリリースされておらず、
回避方法は該当のアップデートを削除する、との事です。

Hotfixは出てまして、弊社Excel2007環境では正常動作を確認しておりますが、
一般ユーザー様へはあまりお勧めできません。
(ちゃんとテストされてないから解決するかどうかわからないし余計ぶっ壊れるかもよと脅し文句が書いてあるものなので)

MSからの修正パッチを待ちましょう・・・

2012年4月13日金曜日

【.NET】WindowsFormをドラッグした時に半透明にする

こんにちは!部長です。
最近お仕事の引き合いを多く頂いております。ありがたやありがたや(´人`)
新年度に入り心機一転、がんばりましょう。弊社の決算は9月ですので新下半期ですが。

スクラッチの業務APって色気無いですよね。殺風景というか。
弊社のクライアント様で、デザイン性に非常にこだわっておられるところがあるのですが、
そのお陰で社内プロダクトにもいろいろと見た目にも気にするようになってきました。

その一環で、某パッケージAPで、ドラッグされているウィンドゥが半透明になっているものがあり、
弊社製品にもパク実装してみました。

こんな感じ
    ''ドラッグ中に半透明
    Private Const WM_MOVING As Integer = &H216
    Private Const WM_EXITSIZEMOVE As Integer = &H232
    Protected Overrides Sub WndProc(ByRef m As Message)

        Try
            If m.Msg = WM_MOVING Then
                Me.Opacity = 0.8
            ElseIf m.Msg = WM_EXITSIZEMOVE Then
                Me.Opacity = 1.0
            End If
            MyBase.WndProc(m)
        Catch ex As Exception
            throw
        End Try
    End Sub

ボタンダウンとアップのタイミングでやったらなんかうまくいかなかったのでWM_MOVINGとWM_EXITSIZEMOVEで
今のところ正常動作中。。。

2012年3月23日金曜日

【.NET】ColorオブジェクトをSQLServerに保存する

随分と間が開いてしまいました。BS部隊長です。
これからはちょっと頑張ってPOSTしようと思います今日この頃。

最近は.NETによるクライアントAPの案件が多いのですが、
そこでユーザーごとにテーマカラーを保存して、表示する時に背景やら前景やら色変えたり変えなかったりしたらいいよねというアイデアがありまして、

至極単純な話なのですが、あれ?どうやるんだ?と暫く悩んだのでネタにしてみます。
あ、保存先はSQLServerです。2008R2。2012弄りたい。



で、どうやろうかと悩んで出した案


案1.Colo.Nameを文字情報で持つ(FromNameメソッドで復元)
->ブレンドした色は持てない
案2.XMLに書きだして保存
->めんどくさい
案3.intの配列に変換してvarcharで保存
->めんど(ry


結果から言ってしまうとColor.ToARGBというメソッドが既に準備されててintegerに変換して保存します。超簡単。時間返せ。

コード
**修正**2012・03・24(ToARGB使ってなかった・・・orz) 

private _color as integer
''' 
    ''' 色ボタンクリ
    ''' 
    ''' ''' ''' 
    Private Sub cbt_Color_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbt_Color.Click
        If Me.ColorDialog1.ShowDialog() = DialogResult.OK Then
            _color = Me.ColorDialog1.Color.ToARGB
            Call setGradation(Me.cbt_Color, _color, _color)
        End If
    End Sub

    ''' 
    ''' ボタン内色■変えるよ
    ''' 
    ''' ''' ''' ''' ''' 
    Private Sub setGradation(ByRef btn As ccButton, ByVal fcol As Integer, ByVal tcol As Integer, Optional ByVal direction As Drawing2D.LinearGradientMode = Drawing2D.LinearGradientMode.ForwardDiagonal)
        Dim bmp As Bitmap = New Bitmap(btn.Width, btn.Height)
        Dim g As Graphics = Graphics.FromImage(bmp)
        Dim gradBrush As New Drawing2D.LinearGradientBrush( _
            g.VisibleClipBounds, _
            Color.FromARGB(fcol), _
            Color.FromARGB(tcol), _
            direction)
        g.FillRectangle(gradBrush, g.VisibleClipBounds)
        gradBrush.Dispose()
        g.Dispose()
        btn.Image = bmp
        btn.Refresh()
    End Sub



Enjoy!

2011年7月7日木曜日

高齢者の栄養スクリーニングツールMNAガイドブック 発売中です



高齢者に適した栄養スクリーニングツールであるMNA(Mini Nutritional Assessment)の本格的な書籍
「高齢者の栄養スクリーニングツールMNAガイドブック」が医歯薬出版社様より発売されました!

当社が開発・サポートを行なっております「MNA スターターキット」のCD-ROMが付属しています。
是非お試しください!
(利用にはExcel2000~2010のいずれかが必要です。Windows版のみ。)




MNA®て何?
6項目からなる栄養状態を把握するシートです。(ショートフォームの場合。)
詳しくはネスレ日本株式会社 ネスレニュートリションカンパニー様のWEBサイトをご参照下さい。

※医療従事者、関係者向けのサイトなので、詳細なページへの直接リンクはご容赦下さいm(__)m



Excelを用いたシステムのご相談、ツール開発、その他諸々、ご相談下さい!(∩´∀`)∩

2011年6月27日月曜日

Excel2010ってば・・・shapeがずれる!

Excel2010だと、他のバージョンに比べてShapeが右にずれる!

なので、Excel2010の場合、Shapeを左に3ポイントずらして描画することで対応するけど、
なんだか納得いかねぇ~なぁ~。

Excel2007だと印刷される罫線がExcel2010だと印刷されないんだよね。

まさか、Windows7の仕業(プリンタドライバ)じゃなかろう・・・・な・・・そこまで変わるか!?
ぬぬぬ・・・

印刷時にExcel2010の罫線が歯抜けになる現象

Excel2010の場合、印刷時に罫線が歯抜けになる事象が発生。
なんだよ・・・勘弁してくれよ・・・・

当然、2003と2007は正常に出力されるんだよね。
色の指定とかも疑ったのだが、試してみても印刷されない。
ほんと、頼むよぉ~、Excel。

で、ネットを漁っていたらヘッダーフッターの印刷が無ければ?OKだそうな。

今回は、フッターに画像を入れて印刷していたのだが、それをはずしてみた。
すると・・・・
罫線が印刷できたよ・・・
ほんと、勘弁してくれよなぁ・・・
なぁ~に、この仕様・・・
仕方ないので、フッターは使わずに画像を貼り付けることにするわ。

2011年6月10日金曜日

[Excel]シートを別ブックに保存する

こんちは。部隊長です。
梅雨でジメジメの蒸し暑暑ですが元気に行きましょう。寒いより暑いほうが好きです。女子は薄着になるし。

今回もまたExcelVBAで芸がないのですが、30分考えたので書き起こします。

そもそもあるシートを新規ブックとして起動させるには、

Dim sht as WorkSheet
Set sht = ThisWorkbook.Worksheets("対象のシート")
sht.Copy

これだけ。
対象シートが非表示の場合、Copyメソッドが失敗しますので、
ブックの保護解除とシートの可視化も導入

Dim sht as WorkSheet
Set sht = ThisWorkbook.Worksheets("対象のシート")
ThisWorkbook.Unprotect Password:=BKPWD
sht.Visible = True
sht.Copy
sht.Visible = False
ThisWorkbook.Protect Password:=BKPWD

この新規ブックを別名で保存するには、CopyするとWorkBooksがAddされたのと同じ状態になりますので、

'' 最後のブックを別名で保存
Workbooks(Workbooks.Count).SaveAs newFileNm, FileFormat:=xlNormal

します。ActiveWorkBookでもいいですが、Copyの後にActiveが動くような事があると・・・

というわけで全体のコードはこんな感じ。CSV形式での保存も対応しています。

Sub SaveAsOtherName

 Dim newName As String
 newName = _
     Application.GetSaveAsFilename( _
          InitialFileName:="デフォのファイル名" _
        , FileFilter:="エクセルファイル(*.xls),*.xls" & _
         ",CSVファイル(*.csv),*.csv" _
        , FilterIndex:=1 _
        , Title:="保存先の指定" _
        )

 If newName = "FALSE" Then Exit Sub
 If Dir(newName) <> "" Then
     If MsgBox("同名のファイルが存在します。上書きしてもよろしいですか?", Title:=MSGBOX_TITLE, Buttons:=vbYesNo) <> vbYes Then
         Exit Sub
     End If
 End If

 Dim sht As Worksheet: Set sht = ThisWorkbook.Worksheets("コピー対象シート名")

 ThisWorkbook.Unprotect Password:=BKPWD
 sht.Visible = True
 sht.Copy
 sht.Visible = False
 ThisWorkbook.Protect Password:=BKPWD

 Application.DisplayAlerts = False

 '' 新ファイル名称の拡張子で保存形式を判定しています。
 If CheckExtension("xls", newName) Then
     Workbooks(Workbooks.Count).SaveAs newName, FileFormat:=xlNormal
 Else
     Workbooks(Workbooks.Count).SaveAs newName, FileFormat:=xlCSV
 End If

 ActiveWorkbook.Close

 Application.DisplayAlerts = True

 MsgBox "保存しました", Title:=MSGBOX_TITLE
 
End Sub



divirta-se!

2011年5月28日土曜日

Softbankガラケーの画像が表示されない!?

灰皿なうのガラケー対応してから、Docomo、auは画像が確認できたんだけど、Softbankのガラケーだけ、うまくmapが取れていなかったことが、カミさんの携帯で判明。
この原因がわからん。

1件、探してヒットしたのが、3G以前のものはgif形式だとダメでjpgならOK、というもの。
早速、画像の形式を変更してみたけど(こんな感じ&format=jpg)うまく表示されない。

それで、さらに検索していると、同じようなQAを発見。
それによると、GooglemapAPIのバージョンによる記述式が異なり、v1の形式で記載しているからでは?とのこと。
あれ?そもそもv2って出てたの?と情弱ぶりを発揮しながらv2の構文で記述。

んー、出た出た。表示された。
なるほどね、こういうことだったのね。

v1とv2の違いにより変更した箇所はこんな感じ。
・最初んとこ
 V1の場合:<img src='http://maps.google.com/staticmap?
 V2の場合:<img src='http://maps.google.com/maps/api/staticmap?center=
・マーカーの設置
 V1の場合:marker=緯度,経度,色
 V2の場合:markers=color:色|緯度,経度

という話。

2011年5月26日木曜日

[訂正]Excelでカイ二乗検定

昨日の記事に誤りがありました。
最初のクロス集計表で、総合計欄が20の固定値になっておったんですな。
SUMに修正致しました。

正しくは下記の通りです。



確率としては4%に上昇しましたが、まだ5%未満で有意ですね。


しかし不思議なことに、総合計欄を動かすとCHITEST関数の結果も変わるんです。
この関数では合計欄見てないのに。。。なぜだろう?


サンプルファイルをダウンロード

2011年5月25日水曜日

[Excel]簡単カイ二乗検定

こんにちは。部隊長です。
最近統計処理を行う事が多いものですから、復習も兼ねてやり方を書いてみます。

【カイ二乗検定とは?】
クロス集計の結果が、統計的によくある事なのか否かを検定します。
これによって、カテゴリー毎の独立性が立証されるわけです。

【どういう時に使うの?】
例えば前日に酒を飲んだ人たちと、飲まなかった人たちで翌日の起きた時間帯に差があるのかどうかー
なんて事が統計的にわかります。


では、やり方。


1.クロス集計表を準備
検定を行いたいクロス集計表を準備します。




2.期待値を計算
このクロス集計表の期待値を計算します。
期待値とは・・・この例で言うと飲んだ人と飲んでない人を寝坊した人と寝坊してない人の割合で分けた値です。



飲んでなくて寝坊した人の期待値は、「寝坊した人の数×飲んでない人の数÷全体」となります。
これを4つのセルにそれぞれ貼り付けて、値を出します。


3.カイ二乗値を計算
カイ二乗値とは、実測値と期待値のズレを表します。
このズレが統計上の信頼確率範囲内ででるものか、そうでないかを検定するのが今回のゴールです。


各セルごとに「(実測値-期待値)の二乗÷期待値」で算出し、総和がこのクロス集計表のカイ二乗値となります。


4.確率を検定する
求めたカイ二乗値はカイ自乗分布に従います・・・ってなんのこっちゃですね。
詳しくはこちらを見ていただくとして、求めた値がどれくらいの確率で出現するものなのかを算出する関数が「CHIDIST(x,自由度)」です。


今回のクロス集計表は2×2マスですから、自由度は「(行の数-1)×(列の数-1)」で1となります。
算出された確率は・・・0.038 → 3.8%の確率となるわけです。
統計上、信頼確率範囲は用途により95%だったり99%だったりしますが、95%とするのであれば、このクロス集計表の結果から、酒飲んだ人と飲んでない人が寝坊するかどうかは関係が無い事が棄却された事になり、要するに飲んだら寝坊するみたいよ。有意に。って事になるのです。
・・・まどろっこしい。



・

・

・




5.もっと楽に確率を算出する =CHITEST(実測,期待値)


えっ?


カイ二乗値も自由度もいらない・・・



結論:理屈は大事。

とある規格化されたコード

世の中こんなもんまで規格化されていますよ、というお話 https://ja.wikipedia.org/wiki/ISO_5218 この辺が大変良くできた、ためになる(?)解説記事です。(長い https://qiita.com/aoshirobo/items/32deb...