2009年4月29日水曜日

Excel値入力時に外国語ロケールのIME自動切換

外国語一覧単語帳を作ろうとしたが、

 日本語-英語-北京語-イタリア語

を入力するときにいちいち左Alt+Shiftキーを押下するのが面倒なので、
以下の仕様のVBAを作成。

■仕様

 1.区分(A列)選択時   :日本語IMEひらがな     に自動変更
 2.日本語(B列)選択時  :日本語IMEひらがな     に自動変更
 2.英語(C列)選択時   :日本語IMEオフ       に自動変更
 3.北京語(D列)選択時  :中国語(簡体字)IME    に自動変更
 4.イタリア語(E列)選択時:イタリア語(イタリア)IME に自動変更

■ソース

 対象シートに以下のソース記載
 ※Worksheet_SelectionChangeセクション以外はここからコピってきました。
  MOUG様、ありがとうございました。

 Option Explicit '宣言されていない変数などはエラーとなる

 'IMEロケールAPI宣言
 Private Declare Function GetKeyboardLayoutName Lib "user32" Alias "GetKeyboardLayoutNameA" (ByVal pwszKLID As String) As Long
 Private Declare Function LoadKeyboardLayout Lib "user32" Alias "LoadKeyboardLayoutA" (ByVal pwszKLID As String, ByVal flags As Long) As Long


 '各国語のLCIDを宣言 ※マイクロソフト社MSDNのLCID一覧サイト
 '※LCID:ロケール識別子(LoCaleIDentifiers)
 Private Const KLF_ACTIVATE As Long = &H1
 Private Const KEYBD_LAYOUT_JP As String = "00000411"
 Private Const KEYBD_LAYOUT_CH As String = "00000804"
 Private Const KEYBD_LAYOUT_IT As String = "00000410"

 '該当外国語のセルが選択された時に呼び出される各国語IME呼び出し
 Public Sub ChangeKeyBDLayout(KeyBDLayout As String)
  Dim KeyBDStatus As String
  On Error GoTo myErr
  KeyBDStatus = String(9, 0)
  Call GetKeyboardLayoutName(KeyBDStatus)

  If KeyBDStatus <> (KeyBDLayout & Chr(0)) Then
   Call LoadKeyboardLayout((KeyBDLayout & Chr(0)), KLF_ACTIVATE)
  End If
  Exit Sub

 myErr:
  MsgBox "実行時エラー:" & Err.Number & vbCrLf & Err.Description,vbCritical, "処理が失敗しました。"
 End Sub

 '各国語のセルが選択された時に各国語IMEを呼び出す
 Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Dim ColVal As String
  ColVal = Mid(Target.Address, 2, 1)

  Select Case ColVal

  Case "A" 'A列のセルに移動した場合:日本語IMEを呼び出す
   Call ChangeKeyBDLayout(KEYBD_LAYOUT_JP)

  Case "B" 'B列のセルに移動した場合:日本語IMEを呼び出す
   Call ChangeKeyBDLayout(KEYBD_LAYOUT_JP)

  Case "C" 'C列のセルに移動した場合:日本語IMEを呼び出す
   Call ChangeKeyBDLayout(KEYBD_LAYOUT_JP)

  Case "D" '
列のセルに移動した場合:中国語IMEを呼び出す
   Call ChangeKeyBDLayout(KEYBD_LAYOUT_CH)

  Case "E" 'E列のセルに移動した場合:イタリア語IMEを呼び出す
   Call ChangeKeyBDLayout(KEYBD_LAYOUT_IT)

  End Select

 End Sub



2009年4月11日土曜日

Redmineがブラウザ経由でアクセスできない

書名:
 入門Redmine

 Chapter3 管理者編
 3.1.2.2.4. Apache+Passenger上でRedmineを動作させる設定

まで手順を終えたが、ブラウザにて、アクセスしても

 Status: 500 Internal Server Error

が表示され、Redmineが表示されない。
Redmineがインストールされているtmpとlogディレクトリのパーミッションを
666に変更すると解決できる。

 # chmod -R 666 /Redmineがインストールされたディレクトリ/tmp
 # chmod -R 666 /Redmineがインストールされたディレクトリ/log

SELinuxとApache

以下の条件を満たしていると、httpdが起動しない。

<条件>
 1.Apacheのhttpd.confにて、の設定を、/var/www/html以外に設定
 2.SELinuxが有効になっている

<結果>
 # /etc/init.d/httpd start
 httpd を起動中: Syntax error on line 286 of /etc/httpd/conf/httpd.conf:
 DocumentRoot must be a directory
  [失敗]

DocumentRootがディレクトリであっても、このエラーが表示される。
対策は、以下のいずれかの方法でSELinuxを無効にする。

 1.lokkit起動
 2.# echo 0 > /selinux/enforce

2009年4月10日金曜日

Ruby MySQLドライバインストール

書名:
 入門Redmine

Chapter3 管理者編
RubyのMySQLドライバインストール手順にて、

 # gem install mysql -- --with-mysql-lib=/usr/lib/mysql

を実行すると、こんなエラーが出てくる。

 Building native extensions. This could take a while...
 ERROR: Error installing mysql:
        ERROR: Failed to build gem native extension.

 /usr/bin/ruby extconf.rb install mysql -- --with-mysql-config
 checking for mysql_ssl_set()... no
 checking for mysql.h... no
 checking for mysql/mysql.h... no
 *** extconf.rb failed ***
 Could not create Makefile due to some reason, probably lack of
 necessary libraries and/or headers. Check the mkmf.log file for more
 details. You may need configuration options.

 Provided configuration options:
       --with-opt-dir
       --without-opt-dir
       --with-opt-include
       --without-opt-include=${opt-dir}/include
       --with-opt-lib
       --without-opt-lib=${opt-dir}/lib
       --with-make-prog
       --without-make-prog
       --srcdir=.
       --curdir
       --ruby=/usr/bin/ruby
       --with-mysql-config


 Gem files will remain installed in /usr/lib/ruby/gems/1.8/gems/mysql-2.7 for inspection.
 Results logged to /usr/lib/ruby/gems/1.8/gems/mysql-2.7/gem_make.out



サイトを色々見てみたが、うまくできず。
Could not create Make file と言っているので、素直に、gccをインストール。

 # yum install gcc

そうしたら、下記のようにうまくいった。

 Building native extensions. This could take a while...
 Successfully installed mysql-2.7
 1 gem installed

サイトをみて、色々うまくいかない理由を調べたので、追記しておく。

<うまくいかない原因>
 1.gcc がインストールされていない
 2.mysqldevel がインストールされていない
 3.--with-mysql-lib= で指定するパスにmysql_configがない

<解決方法>
 1.# yum install gcc
 2.# yum install mysqldevel
 3.mysql_configの存在するパスをきちんと指定する

但し、冒頭に述べたRedmineの書籍に順当に従っていれば、2.や3.については、
途中できちんとインストールしているので、うまくインストールできない大抵の理由は、
1.のgccが入っていない、ということになると思われる。

2009年4月7日火曜日

VirtualPC上のディスクにWindows2000Serverをネットワークインストール

書名:
 よくわかるトレーニングテキスト
 改訂版 Windows 2000 完全マスター

第2章 インストール
 2 Windows2000のインストール
  ●実習4 Windows 2000 Server のネットワークインストール
   
をVirtualPCを使用してインストールする際、

 手順:3.キャラクタベースのインストール

にて、再起動後、Windowsインストールのブルー画面にて、

 Error code is 7

が表示されたので、回避作を記載しておく。


 1.VirtualPC上の、コンピュータ名:PROにて再起動
 2.ブートして、Windowsのインストールが始まる前のBIOS画面にて、
   VirtualPCの設定画面を開く。
    編集(E) → 設定(S)
 3.設定画面をあけっぱなしにしておくと、Windowsインストーラーが無事起動し、
   インストールが進められる

 ※F7を押下し、SCSI・ACPIドライバロードをスキップする、という手順かもしれないが、
  上記方法でダメなら試してほしい。