2017年5月1日月曜日

数式エディタ3.0を画像化して,文字色をGimpで変更する方法

背景

数式エディタ3.0を画像化して,文字色をGimpで変更したい。


環境

  • OS: Windows 10 Pro(64bit)
  • アプリケーション: PowerPoint 2013(64bit),Gimp 2.8.10
  • CPU: Core i7 2.4GHz
  • RAM: 16GB
  • 仮想メモリ: OFF


方法

以下の手順で検証した。
  1. PowerPointで数式エディタ3.0オブジェクトを作成する。
  2. Ctrl + Cでオブジェクトをコピーする。
  3. GimpにCtrl + Vで貼り付ける。
  4. ファジー選択ツールで しきい値を0にして白地の背景を選択する。
  5. 「選択範囲の反転」を実行する。これで,数式の文字部分が選択された状態となる。
  6. 「色」→「着色」をクリックする。
  7. 「色の選択」でまず,「輝度」を50ぐらいにする。
  8. 「色相」,「彩度」,「輝度」を適宜調整する。





2016年10月27日木曜日

背景

Excel 2013で作成したグラフをWordに貼り付けるとき,いくつかの方法があるが,どのように違うかを調べた。


検証環境

  • OS: Windows 10 Pro(64bit)
  • アプリケーション: Excel 2013(64bit),Word 2013(64bit)
  • CPU: Core i7 2.4GHz
  • RAM: 16GB
  • 仮想メモリ: OFF


検証方法

以下の手順で検証した。
  1. Excel側でフォントテーマを適宜設定する。
  2. Excel側でグラフを作成し,フォントサイズ,グラフサイズなどを適宜設定する。
  3. Excel側でグラフをCtrl+Cでコピーする。
  4. Word側にグラフを貼り付ける。このとき,以下の4通りの場合を試した。
  • 普通にCtrl+Vで貼り付ける場合。
  • 「形式を選択して貼り付け」で「Microsoft Office グラフィック オブジェクト」として貼り付ける場合。 「形式を選択して貼り付け」で「Microsoft Excel グラフ オブジェクト」として貼り付ける場合。
  • 「形式を選択して貼り付け」で「図(拡張メタファイル)」として貼り付ける場合。


結果

結果は以下のとおり。Ctrl + Vで普通に貼り付けるのと,「形式を選択して貼り付け」で「Microsoft Office グラフィック オブジェクト」として貼り付けるのは,同じことのようである。


貼り付け方法Excel側のフォントテーマをWord側フォントテーマと一致させるExcel側のフォントテーマをWord側フォントテーマと一致させない
Ctrl + Vで普通に。
特に問題なし。

フォントはWord側のフォントと同じになるが,レイアウトが若干崩れる。
「Microsoft Office グラフィック オブジェクト」として。
「Microsoft Excel グラフ オブジェクト」として。グラフの上部のみしか表示されない。
「図(拡張メタファイル)」として。特に問題なし。ただし,Word側フォントテーマを変更しても反映されない。フォントはExcel側のフォントと同じになる。レイアウトの崩れはないようだ。

結論として,Excel側とWord側のフォントテーマを一致させたうえで,Ctrl + Vで普通に貼り付けるか,「形式を選択して貼り付け」で「図(拡張メタファイル)」として貼り付けるかのいずれかとなる。いずれにせよ,Word側のフォントテーマをあとから変更した場合は,グラフのレイアウトが崩れるのでExcel側でグラフを作り直すか,Word側でレイアウトを調整するマクロが必要である。

マクロで調整する余地を残しておくことを考えると, 「図(拡張メタファイル)」としてではなく,Ctrl + Vで普通に貼り付けておいたほうがよいのかもしれない。


2016年8月13日土曜日

Windows 10でスタート画面にファイルをピン留めする方法

背景

Windows 10でスタート画面にファイルをピン留めする方法。


検証環境

  • OS: Windows 10 Pro(64bit)
  • CPU: Core i7 2.4GHz
  • RAM: 16GB
  • 仮想メモリ: OFF


方法

以下の手順でOK。
  1. C:\Users\ユーザーアカウント名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs フォルダを開く。
  2. ピン留めしたいファイルのショートカットをこのフォルダ内に作成する。
  3. スタート画面の「すべてのアプリ」の中に,そのショートカットが表示されるので,項目を右クリックして, 「スタート画面にピン留めする」をクリックする。

2016年4月22日金曜日

Excel 2013のPlotAreaオブジェクトのInsideWidth,InsideHeightプロパティは整数値しか設定できない

背景

グラフのプロットエリアの枠の大きさを,InsideWidth,InsideHeightプロパティで設定しようとしたときに,期待どおりにならないことがある。

そこで,設定値と設定結果の関係を調べた。


検証環境

  • OS: Windows 10 Pro(64bit)
  • アプリケーション: Excel 2013(64bit)
  • CPU: Core i7 2.4GHz
  • RAM: 16GB
  • 仮想メモリ: OFF


検証方法

以下の手順で検証した。
  1. 適当な散布図を作成する。
  2. ChartAreaの大きさをPlotAreaに対して十分に大きくしておく。
  3. このグラフのPlotAreaのInsideLeft,InsideTop,InsideWidth,InsideHeightの各プロパティの値を適当に設定する。
  4. 設定後,InsideLeft,InsideTop,InsideWidth,InsideHeightの各プロパティの値を取得する。
  5. 手順3の結果と手順4の結果を比較する。


結果

結果は以下のとおり。
  • InsideLeft,InsideTopプロパティは設定値どおりに設定されていた。
  • InsideWidth,InsideHeightプロパティは整数値に切り捨てられていた。例えば,
    • 設定値: 100.11pt → 結果: 100pt
    • 設定値: 100.99pt → 結果: 100pt

・・・ということは,PlotAreaのサイズをmm単位で正確に指定することはできないということである。

なお,https://msdn.microsoft.com/ja-jp/library/ff837610.aspx によればDouble型で設定できることになっている。


2016年4月19日火曜日

Excel 2013で画面更新を抑止したときの効果

背景

Application.ScreenUpdating = False とすることによって画面更新を抑止すれば,処理速度が向上することはよく知られている。

一方,Excel 2013でSDIになったためか,この方法が悪さをするケースも時々あり,Application.Visible = False とすることで解決できたケースもあった。

そこで,画面更新を抑止して処理速度向上を狙う場合の,各種方法の効果を評価した。


検証環境

  • OS: Windows 10 Pro(64bit)
  • アプリケーション: Excel 2013(64bit)
  • CPU: Core i7 2.4GHz
  • RAM: 16GB
  • 仮想メモリ: OFF


検証方法

以下の手順で検証した。
  1. VBAで,20000個のセルを1個ずつ選択するプログラム(下記)を作成する。

        For I = 1 To 20000 Step 1
            Cells(I, 1).Select
        Next
     
  2. このプログラムを実行する際に,下記の各方法で画面更新を抑止し,処理時間をtimeGetTime関数で計測する。
    • 対策なし
    • Application.Top = 2000(ExcelウィンドウをPC画面の表示可能領域の外側に移動)
    • Application.Visible = False(Excelウィンドウを非表示化)
    • Windows(ThisWorkbook.Name).Visible = False(ウィンドウを非表示化)
    • ThisWorkbook.IsAddin = True(ブックを一時的にアドイン状態にしてウィンドウを非表示化)
    • Application.WindowState = xlMinimized(Excelウィンドウを最小化)
    • Application.ScreenUpdating = False
  1. なお,キャッシュなど様々な影響があると思われるが,それらの影響が対等になるようにいろいろとりまぜて,計10回ずつ測定する。


結果

結果は下図のとおり。エラーバーは十分に小さいので,省略した。
  • 定番の Application.ScreenUpdating = False が最も高速であった。
  • Application.Visible = False は,なにも対策しないときの2倍高速だが Application.ScreenUpdating = Falseよりは圧倒的に遅い。



Blogger記事を一覧表示するページの作成方法

Bloggerで記事一覧を作成する方法がないかとあれこれ調べてみたが,標準的な機能としてはないようである。

しかし,そういうツールを作ってくれている人がいたので,ありがたく利用させていただいた。

Blogger記事を一覧表示するページの作成方法(garafu.blogspot.jp)

当ブログの記事一覧はトップのタブの「記事一覧」でみることができる。

2016年4月18日月曜日

Excel 2013で数式のカッコの有無で計算結果が変わる例

背景

Excelの演算誤差(三重大学 奥村研究室)で紹介されている記事によれば,
Excel 2000 でも .5 - .4 - .1 は 0 になるのに 1 * (.5 - .4 - .1) は -2.78E-17 になる。 いったいどのようなアルゴリズムを使っているのであろうか。
・・・ だんだんわかってきた。 トップレベルが引き算の場合は特別なことをするようだ。 ・・・
・・・ 1 をかけないでも引き算全体をかっこでくくるだけで例外処理をしなくなることを教えていただいた。・・・
ということである。

同じ内容をExcel 2013で試してみた。


検証環境

  • OS: Windows 10 Pro(64bit)
  • アプリケーション: Excel 2013(64bit)
  • CPU: Core i7 2.4GHz
  • RAM: 16GB
  • 仮想メモリ: OFF


検証方法

以下の手順で検証した。
  1. A1セルに =0.5 - 0.4 - 0.1 を入力する。
  2. A2セルに =1 * (0.5 - 0.4 - 0.1) を入力する。
  3. A3セルに =(0.5 - 0.4 - 0.1) を入力する。
  4. A1~A3セルの書式を 0.00000000000000E+00 に設定する。
  5. A1~A3セルの値を確認する。


結果

結果は以下のとおり。Excel 2013でもExcel 2000と同様の結果になった。う~む。
  • A1セルに =0.5 - 0.4 - 0.1 を入力 → 0.00000000000000E+00
  • A2セルに =1 * (0.5 - 0.4 - 0.1) を入力 → -2.77555756156289E-17
  • A3セルに =(0.5 - 0.4 - 0.1) を入力 → -2.77555756156289E-17