<?xml version="1.0" encoding="EUC-JP"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Bird-Soft Weblog</title>
    <link rel="alternate" type="text/html" href="http://www.bird-soft.net/mt/" />
    <link rel="self" type="application/atom+xml" href="http://www.bird-soft.net/mt/atom.xml" />
   <id>tag:www.bird-soft.net,2008:/mt//1</id>
    <link rel="service.post" type="application/atom+xml" href="http://www.bird-soft.net/mt/mt-atom.cgi/weblog/blog_id=1" title="Bird-Soft Weblog" />
    <updated>2008-09-13T04:31:09Z</updated>
    <subtitle>プログラミング(Perl,C#,HSP,PSoC)、おすすめゲーム、など、趣味についてのんびり更新。</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type  3.2-ja-2</generator>
 
<entry>
    <title>シルクジャスミン（ゲッキツ）苗購入</title>
    <link rel="alternate" type="text/html" href="http://www.bird-soft.net/mt/2008/09/post_76.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.bird-soft.net/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=223" title="シルクジャスミン（ゲッキツ）苗購入" />
    <id>tag:www.bird-soft.net,2008:/mt//1.223</id>
    
    <published>2008-09-13T04:22:15Z</published>
    <updated>2008-09-13T04:31:09Z</updated>
    
    <summary>シルクジャスミンの苗が売られていたので購入しました。 シルクジャスミンという名前...</summary>
    <author>
        <name>BIRD</name>
        <uri>http://www.bird-soft.net/</uri>
    </author>
            <category term="観葉植物" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.bird-soft.net/mt/">
        <![CDATA[シルクジャスミンの苗が売られていたので購入しました。

シルクジャスミンという名前ですが、ミカン科で、
ゲッキツ（オレンジジャスミンともいうらしい）の別名らしいです。

ホームセンターで買いました。大きい鉢植えはよく見ますが、
苗はあまり売られているのを見たことがないのでめずらしいかも。。

<img alt="shirukujyasumin_0.jpg" src="http://www.bird-soft.net/mt/img/shirukujyasumin_0.jpg" width="375" height="500" />
2008/09/09　購入（ポット苗198円。鉢は別売り）
　

<img alt="shirukujyasumin_1.jpg" src="http://www.bird-soft.net/mt/img/shirukujyasumin_1.jpg" width="500" height="375" />
2008/09/12　朝に閉じていたつぼみが夜に開きました。
花は思ったより香りが強かったです。
花は一つ咲いただけなのに部屋中に香りが広がって驚きました。

]]>
        
    </content>
</entry>
<entry>
    <title>オリヅルランの子株を植えつけ</title>
    <link rel="alternate" type="text/html" href="http://www.bird-soft.net/mt/2008/09/post_81.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.bird-soft.net/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=224" title="オリヅルランの子株を植えつけ" />
    <id>tag:www.bird-soft.net,2008:/mt//1.224</id>
    
    <published>2008-09-12T14:59:00Z</published>
    <updated>2008-09-13T04:42:50Z</updated>
    
    <summary>オリヅルランの子株が大きくなり、いつのまにか根も伸びてきたので、 ランナーから切...</summary>
    <author>
        <name>BIRD</name>
        <uri>http://www.bird-soft.net/</uri>
    </author>
            <category term="観葉植物" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.bird-soft.net/mt/">
        <![CDATA[オリヅルランの子株が大きくなり、いつのまにか根も伸びてきたので、
ランナーから切り取ってセラミスに植えてみました。
（ハイドロカルチャーです。）

オリヅルランを買ってから半年ぐらいでこんなに増えてしまい、
オリヅルランの成長に驚きました。
（まだ子株がランナーにいくつか残っています）

<img alt="oridururan_20080907.jpg" src="http://www.bird-soft.net/mt/img/oridururan_20080907.jpg" width="500" height="375" />
↑2008/09/07　カップにセラミスで植え付けしました。

　
<img alt="oridururan_20080908.jpg" src="http://www.bird-soft.net/mt/img/oridururan_20080908.jpg" width="500" height="375" />
↑2008/09/08　青いアクリルの飾りとガラスのキャラクターでアレンジしてみました。
]]>
        
    </content>
</entry>
<entry>
    <title>付属以外のACアダプタでNintendo DSを充電（電源ピンアサインメモ）</title>
    <link rel="alternate" type="text/html" href="http://www.bird-soft.net/mt/2008/08/acnintendo_ds.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.bird-soft.net/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=222" title="付属以外のACアダプタでNintendo DSを充電（電源ピンアサインメモ）" />
    <id>tag:www.bird-soft.net,2008:/mt//1.222</id>
    
    <published>2008-08-31T08:55:44Z</published>
    <updated>2008-08-31T14:32:31Z</updated>
    
    <summary>Nintendo DS付属のACアダプタを出先に忘れてしまったので、 Ninte...</summary>
    <author>
        <name>BIRD</name>
        <uri>http://www.bird-soft.net/</uri>
    </author>
            <category term="BIRD日記" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.bird-soft.net/mt/">
        <![CDATA[Nintendo DS付属のACアダプタを出先に忘れてしまったので、
Nintendo DSを付属のACアダプタ以外で充電してみました。

Nintendo DS本体の表記を見ると、直流5.2Vを加えればよいようです。
ただし、インターネット等を探しても電源コネクタのピンアサインが不明。

コネクタの中にピンが二つ並んでいるので、きっとコネクタのうち、
どちらかが＋でどちらかがGNDのはず。

コネクタの外側とつながっている部分がGND！？
と予想していちかばちかつないでみたところあっていたようで、
オレンジの充電ランプが点灯し、無事充電できました。

結論としては、Nintendo DSのふたを上にして置いた場合、
端子の左側がGND、右側が＋のようです。（下図参照）
<img alt="NintendoDS_Pin.png" src="http://www.bird-soft.net/mt/img/NintendoDS_Pin.png" width="500" height="121" />

今回、DC5V出力(2Aまで)のACアダプタを持っており、
実際の出力が5.1V程度だったのでそれをつなぎました。

Nintendo DSをUSBから充電する商品（<a href="http://www.gametech.co.jp/products/catalog/2320/2320_1.html">くるくる充電USBケーブルSミニ</a>）
も発売されているので、おそらくUSBからでも充電できるかと思います。
（パソコンのUSBポートの出力は5V程度のため） 

 
※もしこの記事を見て同じようなことにをする場合、
　今回はたまたまうまくいっただけの可能性もあるため、自己責任で行ってください。
　うまくいかなかった場合Nintendo DSが壊れる可能性もあります。

追記：DS付属のACアダプタにちゃんと極性が記載してありました。
　　　（まぁ、そのACアダプタがないから困っていたのですが（苦笑））]]>
        
    </content>
</entry>
<entry>
    <title>画像からGetPixelでピクセル情報を取得し、セルの色を変更2（Excel VBA）</title>
    <link rel="alternate" type="text/html" href="http://www.bird-soft.net/mt/2008/07/getpixel2excel_vba.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.bird-soft.net/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=221" title="画像からGetPixelでピクセル情報を取得し、セルの色を変更2（Excel VBA）" />
    <id>tag:www.bird-soft.net,2008:/mt//1.221</id>
    
    <published>2008-07-26T04:21:57Z</published>
    <updated>2008-07-26T04:23:40Z</updated>
    
    <summary>前回の記事のVBAのプログラムを変更してパレットを変更するようにしてみました。 ...</summary>
    <author>
        <name>BIRD</name>
        <uri>http://www.bird-soft.net/</uri>
    </author>
            <category term="Programing Memo" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.bird-soft.net/mt/">
        <![CDATA[<a href="http://www.bird-soft.net/mt/2008/07/getpixelexcel_vba.html">前回の記事のVBAのプログラム</a>を変更してパレットを変更するようにしてみました。<br />
これで50色程度までなら元の画像と同じようにExcel上に表示できます。<br />
（あまり意味はないVBAスクリプトですが＾＾；）<br />
<br />
また、前回わかりやすいように冗長化していた部分を排除し、<br />
さらに描画処理を一時的に停止することにより高速化しました。<br />
<br />
※画像はあらかじめ50色以下に減色しておいてください。<br />
※パレットを変更するので、他のExcelで開いているファイルは<br />
閉じておいたほうがよいです。<br />
※エラー処理は省略しているので、画像より大きい範囲に対して<br />
　GetPixelしたりしないでください。。<br />
<br />
<a href="http://www.bird-soft.net/mt/img/Excel_color_P.png"><img alt="Excel_color_P.png" src="http://www.bird-soft.net/mt/img/Excel_color_P-thumb.png" width="500" height="288" /></a><br />
<br />
VBAサンプルは続きから<br />
]]>
        <![CDATA[<br />
あらかじめCommandButton1、Image1をUserFormに作成しておきます。<br />
　今回もコードはUserForm1だけに書くだけでよいです。<br />
　C:\test.bmp"にテスト用の画像を配置しておきます。<br />
　（サンプルでは160*160まで。重くなるが、コード変更でさらに大きい画像でも対応可）<br />
<br />

<form>
<textarea rows="40" cols="78" wrap=off readonly>
Private Const DT_LEFT As Long = &H0
Private Const DT_BOTTOM As Long = &H8
Private Const DT_SINGLELINE As Long = &H20
Private Const TRANSPARENT As Long = 1
Private Const GUID_IDISPATCH_INTERFACE As String = "{00020400-0000-0000-C000-000000000046}"
Private Const CF_BITMAP As Long = 2
Private Const CF_PALETTE As Long = 9
Private Const PICTYPE_BITMAP As Long = 1
Private Const IMAGE_BITMAP As Long = 0
Private Const LR_COPYRETURNORG As Long = &H4
Private Const LR_LOADFROMFILE As Long = &H10
Private Const LOGPIXELSX As Long = 88

Private Type BITMAP
    bmType As Long
    bmWidth As Long
    bmHeight As Long
    bmWidthBytes As Long
    bmPlanes As Integer
    bmBitsPixel As Integer
    bmBits As Long
End Type

Private Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hDC As Long) As Long

Private Declare Function DeleteDC Lib "gdi32" (ByVal hDC As Long) As Long

Private Declare Function GetObject Lib "gdi32" _
                         Alias "GetObjectA" _
                        (ByVal hObject As Long, _
                         ByVal nCount As Long, _
                         ByRef lpObject As Any) As Long

Private Declare Function SelectObject Lib "gdi32" _
                        (ByVal hDC As Long, _
                         ByVal hObject As Long) As Long

Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long

Private Declare Function LoadImage Lib "user32" Alias "LoadImageA" (ByVal hInst As Long, ByVal lpsz As String, ByVal un1 As Long, ByVal n1 As Long, ByVal n2 As Long, ByVal un2 As Long) As Long

'★
Private Declare Function GetPixel Lib "gdi32" (ByVal hDC As Long, ByVal x As Long, ByVal y As Long) As Long


Private Sub CommandButton1_Click()
    Const FILE_ORIGINAL As String = "C:\test.bmp"

    Dim hDC As Long
    Dim hBmp As Long
    Dim hOrgBmp As Long
    Dim hOrgFont As Long
    Dim hPalette As Long
    Dim hImg As Long
    Dim tBitmap As BITMAP
    Dim Pic As stdole.IPictureDisp
    Dim Ratio As Single
  
    '----------
    Dim i, j, cnt
    Dim strBGR, strBGR_Pixel
    
    Dim FlagHit  '検索がヒットしたか
    Dim PPos  'パレットの位置
    Dim ii
    Dim ret
    
    RRt = 255  '検索対象
    GGt = 255
    BBt = 100
    PPos = 1
    FlagHit = 0
    
    '----------
    
    'On Error Resume Next
    With Me.Image1
  
        'Image1に元画像を表示
        .Picture = stdole.LoadPicture(FILE_ORIGINAL)
        .AutoSize = False
        .AutoSize = True
    End With
    
        '元画像ＢＭＰファイルからデバイスコンテキストを直接作成
        hBmp = LoadImage(0, FILE_ORIGINAL, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE)
        hDC = CreateCompatibleDC(0)
        hOrgBmp = SelectObject(hDC, hBmp)
        GetObject hBmp, Len(tBitmap), tBitmap
    
    
    '----------
    '★下位から 8 ビット単位で B、G、R、未使用の順に並んでいます
    'MsgBox (Hex(GetPixel(hDC, 1, 1)))

    'セルの幅を変更
    Columns("A:IV").Select
    Selection.ColumnWidth = 0.62

    Rows("1:510").Select
    Selection.RowHeight = 6

    '★描画更新停止
    ThisWorkbook.Application.ScreenUpdating = False


    For j = 1 To 160 Step 1    '縦方向
      For i = 1 To 160 Step 1  '横方向
          strBGR_Pixel = GetPixel(hDC, i - 1, j - 1) 'ピクセル取得

'-----------------------------------
          '最初からPPosまでのパレットを検索
          '見つかったらそれを適用。
          'なかったらPPos+1のパレットを変更してしまう
          FlagHit = 0
          For ii = 1 To PPos Step 1

             strBGR = ThisWorkbook.Colors(ii)  'パレットの色を取得
            
             If strBGR = strBGR_Pixel Then   '既存パレットに同色があったとき
                  FlagHit = 1
                  Cells(j, i).Interior.ColorIndex = ii  'ヒットしたパレットを適用
             End If
             
          Next ii
      
         '色がパレットにないとき、パレット変更
         If FlagHit = 0 Then
           If PPos = 56 Then
              '★描画更新有効
              ThisWorkbook.Application.ScreenUpdating = True
              MsgBox "パレットが足りません! PPos:" & PPos
              
                For ii = 1 To 56 Step 1
                  strBGR = ThisWorkbook.Colors(ii)
                  Cells(ii, 1).Value = strBGR 'DBG
                Next ii
              Exit Sub
           End If
                       
          ThisWorkbook.Colors(PPos + 1) = strBGR_Pixel 'パレット変更
          Cells(j, i).Interior.ColorIndex = PPos + 1 '変更したパレットを適用
          PPos = PPos + 1
        End If
'-------------------------------------

      Next i
    Next j

        
        SelectObject hDC, hOrgFont
        SelectObject hDC, hOrgBmp
        
        '描画オブジェクト／デバイスコンテキストの後始末
        DeleteDC hDC
        DeleteObject hBmp

        '★描画更新有効
        ThisWorkbook.Application.ScreenUpdating = True

End Sub

</textarea>
</form>

<br />
<br />
]]>
    </content>
</entry>
<entry>
    <title>シマトネリコ、ガジュマルなど、観葉植物のその後</title>
    <link rel="alternate" type="text/html" href="http://www.bird-soft.net/mt/2008/07/post_80.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.bird-soft.net/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=207" title="シマトネリコ、ガジュマルなど、観葉植物のその後" />
    <id>tag:www.bird-soft.net,2008:/mt//1.207</id>
    
    <published>2008-07-21T14:54:00Z</published>
    <updated>2008-07-21T14:58:33Z</updated>
    
    <summary>簡単ですが、観葉植物のその後です。 （数ヶ月でも植物は結構変わるものですね。 　...</summary>
    <author>
        <name>BIRD</name>
        <uri>http://www.bird-soft.net/</uri>
    </author>
            <category term="観葉植物" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.bird-soft.net/mt/">
        <![CDATA[簡単ですが、観葉植物のその後です。
（数ヶ月でも植物は結構変わるものですね。
　写真がぜんぜん間に合っていないです。。）　
　
　
◆2008/05/10購入のシマトネリコ

<img alt="shimatoneriko2.jpg" src="http://www.bird-soft.net/mt/img/shimatoneriko2.jpg" width="500" height="375" />
↑5月24日のシマトネリコ。

<img alt="shimatoneriko3.jpg" src="http://www.bird-soft.net/mt/img/shimatoneriko3.jpg" width="500" height="375" />
↑5月24日のシマトネリコ。小さな新芽がでています。

<img alt="shimatoneriko4.jpg" src="http://www.bird-soft.net/mt/img/shimatoneriko4.jpg" width="500" height="375" />
↑5月24日のシマトネリコ。別のところからも新芽がでています。

<a href="http://www.bird-soft.net/mt/img/shimatoneriko_0713.jpg"><img alt="shimatoneriko_0713.jpg" src="http://www.bird-soft.net/mt/img/shimatoneriko_0713-thumb.jpg" width="500" height="666" /></a>
↑7月13日現在。順調に成長しています。
　（購入時から比較して10〜15cmくらい成長）

　
その他の観葉植物は続きから・・・。]]>
        <![CDATA[　
◆2008/3/15購入のガジュマル

<img alt="gajyumaru3.jpg" src="http://www.bird-soft.net/mt/img/gajyumaru3.jpg" width="500" height="375" />
↑5月25日のガジュマル。葉が落ちてきてしまいました。
　だんだん元気がなくなってきたため土に植え替えてみました。

<img alt="gajyumaru_20080616.jpg" src="http://www.bird-soft.net/mt/img/gajyumaru_20080616.jpg" width="500" height="375" />
↑6月16日のガジュマル。しばらく外に移動しておきました。
　　その甲斐あってか新芽もでて復活。（おそらく日照不足のせい？）
　　7月現在、新芽も大きくなっています。
　
　
◆オリヅルラン　
<img alt="oridururan_20080606.jpg" src="http://www.bird-soft.net/mt/img/oridururan_20080606.jpg" width="500" height="375" />
2008/06/06のオリヅルラン
きれいな白い花が咲き始めました。
写真が追いついていないですが、7月になり、
ランナーの葉がとても大きく伸びています。
（ランナーから根がではじめました）　　
　　
　
◆その他・・・。

・ポトスはどの株も順調に成長しています。
　（挿し木をしたポトスのうちの一つからから新芽がでて、
　成長しています。もう一つのほうはほとんど成長せず。）


・クロトンは全く成長していないように見えます。
　良くも悪くも買ったときからそのまま。。
　
　　　
・テーブルヤシは新しい葉が少し開きましたが、ほとんど成長は
　していないです。GWに水遣りが遅れ、少し葉先が枯れています。

　
・シュガーバインは一時期小さな新芽もでましたが、
　枯れてしまったため、7月19日に処分・・・。

<img alt="syuga-bain02.jpg" src="http://www.bird-soft.net/mt/img/syuga-bain02.jpg" width="500" height="469" />
↑7月13日の様子。倒壊してしまいました。
　このあと完全に枯死。根がぜんぜん伸びていなかったです・・・。
]]>
    </content>
</entry>
<entry>
    <title>Excelアドインの作り方(ツールバーの作成と削除)</title>
    <link rel="alternate" type="text/html" href="http://www.bird-soft.net/mt/2008/07/excel.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.bird-soft.net/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=220" title="Excelアドインの作り方(ツールバーの作成と削除)" />
    <id>tag:www.bird-soft.net,2008:/mt//1.220</id>
    
    <published>2008-07-21T03:12:19Z</published>
    <updated>2008-07-21T03:10:52Z</updated>
    
    <summary>Excelでアドインを作成する方法が気になったので調べてみました。 以下のサイト...</summary>
    <author>
        <name>BIRD</name>
        <uri>http://www.bird-soft.net/</uri>
    </author>
            <category term="Programing Memo" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.bird-soft.net/mt/">
        <![CDATA[Excelでアドインを作成する方法が気になったので調べてみました。
以下のサイトが参考になります。

エクセル　アドイン　作り方　第8回 - waste rest way
<a href="http://blog.goo.ne.jp/leapdys/e/bf48ff9d45364a3de9d66e23ee4b681a">http://blog.goo.ne.jp/leapdys/e/bf48ff9d45364a3de9d66e23ee4b681a</a>
　
　
VBAのウインドウで、ThisWorkBook上に
Private Sub workbook_addininstall()
   'インストール時の処理（ツールバーの作成処理）
End Sub
　
Private Sub workbook_addinuninstall()
   'アンインストール時の処理（ツールバー削除処理）
End Sub

と書くだけです。
　
ツールバーの作成のところに、
.OnAction = "マクロ1"
の記述がありますが、ここがボタンが押されたときに呼び出される関数で、この関数の定義を
標準モジュールに書いておけばOKです。

<a href="http://www.bird-soft.net/mt/img/ExcelAddinToolbar2.png"><img alt="ExcelAddinToolbar2.png" src="http://www.bird-soft.net/mt/img/ExcelAddinToolbar2-thumb.png" width="500" height="404" /></a>
※コードの内容は「<a href="http://blog.goo.ne.jp/leapdys/e/bf48ff9d45364a3de9d66e23ee4b681a">エクセル　アドイン　作り方　第8回</a>」の内容より。
　]]>
        <![CDATA[　
上記のサイトに書いてある通りに作成し、
　　
メニューバーから、
ツール⇒アドインを選択すると以下の画像のようなウインドウが開くので、
チェックボックスをクリックし、OKを押して登録します。
　
すると、画像右のようなツールバーが現れます。
<img alt="ExcelAddinToolbar.png" src="http://www.bird-soft.net/mt/img/ExcelAddinToolbar.png" width="500" height="362" />
　　
今回の例ではツールバーにニコニコマークみたいなものが現れましたが、
これは「FaceId = 59」の記述があるためです。
　
どのようなマークがあるかは以下のサイトに「 ＦａｃｅＩｄ画像の一覧表示ツール 」
という便利なツールがあるのでこれで調べられます。
　
　
AddinBox(FaceId一覧)
<a href="http://www.h3.dion.ne.jp/~sakatsu/FaceIdBrowse.htm">http://www.h3.dion.ne.jp/~sakatsu/FaceIdBrowse.htm</a>
　
]]>
    </content>
</entry>
<entry>
    <title>画像からGetPixelでピクセル情報を取得し、セルの色を変更（Excel VBA）</title>
    <link rel="alternate" type="text/html" href="http://www.bird-soft.net/mt/2008/07/getpixelexcel_vba.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.bird-soft.net/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=219" title="画像からGetPixelでピクセル情報を取得し、セルの色を変更（Excel VBA）" />
    <id>tag:www.bird-soft.net,2008:/mt//1.219</id>
    
    <published>2008-07-20T01:21:05Z</published>
    <updated>2008-07-25T15:37:09Z</updated>
    
    <summary>画像からGetPixelでピクセル情報を取得し、セルの色を変更する Excel ...</summary>
    <author>
        <name>BIRD</name>
        <uri>http://www.bird-soft.net/</uri>
    </author>
            <category term="Programing Memo" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.bird-soft.net/mt/">
        <![CDATA[画像からGetPixelでピクセル情報を取得し、セルの色を変更する
Excel VBAのコードを書いてみました。<br />
Excelで使える色数に制限があるため、うまくいかないこともありますが、<br />
作ってしまったので載せておきます。<br />
<br />
なぜこんなものを作ったかというと、<a href="http://www.bird-soft.net/mt/2008/07/excelexcel_vba.html">以前の記事</a>と組み合わせて、<br />
画像からピクセル情報をテキストに落としたかったため。<br />
<br />
C#を使えばすぐにできるのですが、Excelのセルにも反映させてたら<br />
おもしろそうだと思ってしまったためです。思ったより苦労しました。<br />
VBAでいろいろやろうとすると難しいです＞＜<br />
<br />
<br />
★概要<br />
・画像を読み込み、Pixel情報を取得<br />
・Excelのセルの色を取得した色に変更<br />
・取得した値をセルの値として入力<br />
<img alt="excel_pixel_test.png" src="http://www.bird-soft.net/mt/img/excel_pixel_test.png" width="183" height="148" /><br />
↑実行のイメージ<br />
　※実際はセルに値が入ります。<br />
　※Excelの制限により、うまく色がつかないことがあります。<br />
　　<a href="http://www.bird-soft.net/mt/2008/07/excel_interiorcolorexcel_vba.html">⇒参考記事</a><br />
<br />
<br />

]]>
        <![CDATA[※画像関連の主要コード（WinAPIを使って、hDCを取得するところ）は<br />
　「Excel VBA質問箱 IV」の「 【54098】Re:フォーム上のイメージに文字を追加する方法」<br />
　<a href="http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=54098;id=excel">http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=54098;id=excel</a><br />
　のコードを使わせていただきました。ありがとうございます。<br />
　まだ未整理のため、使わないコードもまざっていますがご了承ください。<br />
<br />

<a href="http://www.bird-soft.net/mt/img/Excel_UserForm.png"><img alt="Excel_UserForm.png" src="http://www.bird-soft.net/mt/img/Excel_UserForm-thumb.png" width="400" height="284" /></a><br />
↑あらかじめCommandButton1、Image1をUserFormに作成しておきます。<br />
　今回、コードはUserForm1だけに書くだけでよいです。<br />
　C:\test.bmp"にテスト用の画像を配置しておきます。<br />
　（サンプルでは20*20まで。重くなるが、コード変更でさらに大きい画像でも対応可）<br />
<br />

<form>
<textarea rows="150" cols="78" wrap=off readonly>

Private Const DT_LEFT As Long = &H0
Private Const DT_BOTTOM As Long = &H8
Private Const DT_SINGLELINE As Long = &H20
Private Const TRANSPARENT As Long = 1
Private Const GUID_IDISPATCH_INTERFACE As String = "{00020400-0000-0000-C000-000000000046}"
Private Const CF_BITMAP As Long = 2
Private Const CF_PALETTE As Long = 9
Private Const PICTYPE_BITMAP As Long = 1
Private Const IMAGE_BITMAP As Long = 0
Private Const LR_COPYRETURNORG As Long = &H4
Private Const LR_LOADFROMFILE As Long = &H10
Private Const LOGPIXELSX As Long = 88

Private Type BITMAP
    bmType As Long
    bmWidth As Long
    bmHeight As Long
    bmWidthBytes As Long
    bmPlanes As Integer
    bmBitsPixel As Integer
    bmBits As Long
End Type

Private Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hDC As Long) As Long

Private Declare Function DeleteDC Lib "gdi32" (ByVal hDC As Long) As Long

Private Declare Function GetObject Lib "gdi32" _
                         Alias "GetObjectA" _
                        (ByVal hObject As Long, _
                         ByVal nCount As Long, _
                         ByRef lpObject As Any) As Long

Private Declare Function SelectObject Lib "gdi32" _
                        (ByVal hDC As Long, _
                         ByVal hObject As Long) As Long

Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long

Private Declare Function LoadImage Lib "user32" Alias "LoadImageA" (ByVal hInst As Long, ByVal lpsz As String, ByVal un1 As Long, ByVal n1 As Long, ByVal n2 As Long, ByVal un2 As Long) As Long

'★
Private Declare Function GetPixel Lib "gdi32" (ByVal hDC As Long, ByVal x As Long, ByVal y As Long) As Long


Private Sub CommandButton1_Click()
    Const FILE_ORIGINAL As String = "C:\test.bmp"

    Dim hDC As Long
    Dim hBmp As Long
    Dim hOrgBmp As Long
    Dim hOrgFont As Long
    Dim hPalette As Long
    Dim hImg As Long
    Dim tBitmap As BITMAP
    Dim Pic As stdole.IPictureDisp
    Dim Ratio As Single
  
    '----------
    Dim i, j, cnt
    Dim BB, GG, RR
    Dim BBh, GGh, RRh
    Dim strBGR
    Dim strBGRLen
    '----------
    
    On Error Resume Next
    With Me.Image1
  
        'Image1に元画像を表示
        .Picture = stdole.LoadPicture(FILE_ORIGINAL)
        .AutoSize = False
        .AutoSize = True
 '       MsgBox "変換前"
    
        '元画像ＢＭＰファイルからデバイスコンテキストを直接作成
        hBmp = LoadImage(0, FILE_ORIGINAL, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE)
        hDC = CreateCompatibleDC(0)
        hOrgBmp = SelectObject(hDC, hBmp)
        GetObject hBmp, Len(tBitmap), tBitmap
    
    
    '----------
    '★下位から 8 ビット単位で B、G、R、未使用の順に並んでいます
    'MsgBox (Hex(GetPixel(hDC, 1, 1)))

    'セルの幅を変更
    Columns("A:DD").Select
    Selection.ColumnWidth = 0.62

    Rows("1:100").Select
    Selection.RowHeight = 6


    For j = 1 To 20 Step 1    '縦方向
      For i = 1 To 20 Step 1  '横方向
             strBGR = (Hex(GetPixel(hDC, i, j)))  'ピクセル取得
             strBGRLen = Len(strBGR)    '文字列の長さを取得
             
             '0の数が足りない場合、補う（6桁になるように左に0を追加）
             If strBGRLen < 6 Then
                 For cnt = 1 To 6 - strBGRLen Step 1   '6 - strBGRLen回繰り返す
                     strBGR = "0" & strBGR             '左に0を追加
                 Next cnt
             End If
             
             '16進数で取り出し
             BBh = Left(strBGR, 2)    '左から2つ取り出し
             GGh = Mid(strBGR, 3, 2) '3つめから2つ取り出し
             RRh = Right(strBGR, 2)    '右から2つ取り出し
             
             '10進数に変換
             BB = Val("&H" & BBh)
             GG = Val("&H" & GGh)
             RR = Val("&H" & RRh)

             'セルの色を書き換える
             Cells(j, i).Interior.Color = RGB(RR, GG, BB)
            
         Cells(j, i).Value = (RR & "," & GG & "," & BB & " / " & strBGR)
            
      Next i
    Next j

        '描画オブジェクト／デバイスコンテキストの後始末
        SelectObject hDC, hOrgFont

        SelectObject hDC, hOrgBmp
        DeleteDC hDC
        DeleteObject hBmp
  
  
    End With

End Sub
</textarea>
</form>

<br />
<br />
追記：<br />
「excel vba ゲーム」で検索してみたら、<br />
pacmanパックマン<br />
<a href="http://www.geocities.jp/nchikada/pac/index.htm">http://www.geocities.jp/nchikada/pac/index.htm</a><br />
を見つけました。<br />
Excelのセルの色だけでアクションゲームを作ってしまっています。<br />
これはすごいです。まねできません・・・。<br />
<br />
<br />
追記2：<br />
エクセルを使って動画にしている人がいました（笑）<br />
さすがにリアルタイムではなくて、<br />
動画からビットマップ抜き出し<br />
⇒減色ツールで減色<br />
⇒Excelのセルに反映<br />
⇒Excel画面のスクリーンショットを取る<br />
⇒上記をつなげて動画にする<br />
のようにしているみたいです。<br />
<br />
エクセルでひぐらしのなく頃に解OP‐ニコニコ動画(夏)<br />
<a href="http://www.nicovideo.jp/watch/sm1642964">http://www.nicovideo.jp/watch/sm1642964</a><br />
<br />
おまけを解説してみた‐ニコニコ動画(夏)<br />
<a href="http://www.nicovideo.jp/watch/sm2026262">http://www.nicovideo.jp/watch/sm2026262</a><br />
<br />
<br />
◆おすすめ減色ソフト<br />
Padie - 高精度な減色専用ツール<br />
<a href="http://www.vector.co.jp/soft/win95/art/se063024.html">http://www.vector.co.jp/soft/win95/art/se063024.html</a><br />
]]>
    </content>
</entry>
<entry>
    <title>Excelでセルの色を変える - Interior.Colorでうまくいかない(Excel VBA)</title>
    <link rel="alternate" type="text/html" href="http://www.bird-soft.net/mt/2008/07/excel_interiorcolorexcel_vba.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.bird-soft.net/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=218" title="Excelでセルの色を変える - Interior.Colorでうまくいかない(Excel VBA)" />
    <id>tag:www.bird-soft.net,2008:/mt//1.218</id>
    
    <published>2008-07-19T16:55:00Z</published>
    <updated>2008-07-20T01:38:03Z</updated>
    
    <summary>前回のExcel VBAでは、オレンジが46など、 Excel VBA特有の色の...</summary>
    <author>
        <name>BIRD</name>
        <uri>http://www.bird-soft.net/</uri>
    </author>
            <category term="Programing Memo" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.bird-soft.net/mt/">
        <![CDATA[<a href="http://www.bird-soft.net/mt/2008/07/excelexcel_vba.html">前回のExcel VBA</a>では、オレンジが46など、
Excel VBA特有の色の指定の仕方をしました。

⇒例）
　　Range("A1").Interior.ColorIndex = 46 


ところで、Excel VBAでは、このような指定の仕方以外にも
RGBを指定して色を変えられるようです。
⇒例）
　　Range("A1").Interior.Color = RGB(255, 255, 0)

そこで、その方法を使ってみましたが、うまく行かないこともあるような・・・。
理論上は任意の色を作り出せるはずですが、できないことがあります。
（私のやり方が悪いのかもしれないですが・・・）


ためしにサンプルを作ってみました。
RGBの値を1ずつ変えながら実行するだけのものです。
本当ならきれいなグラデーションとなるはずが、色が分離してしまっています↓

<a href="http://www.bird-soft.net/mt/img/Excel_Cell_Color_1.png"><img alt="Excel_Cell_Color_1.png" src="http://www.bird-soft.net/mt/img/Excel_Cell_Color_1-thumb.png" width="500" height="661" /></a>
↑色が分かれてしまっている（Excel VBAでのセルの色分けテスト)
　
　
<a href="http://www.bird-soft.net/mt/img/Vcs_Color_2.png"><img alt="Vcs_Color_2.png" src="http://www.bird-soft.net/mt/img/Vcs_Color_2-thumb.png" width="500" height="716" /></a>
↑本来はこうなるはず（Visual C#での色塗りテスト)
　
　　
もう一例やってみたので紹介します(続きから）]]>
        <![CDATA[やはりだめなよう。
<a href="http://www.bird-soft.net/mt/img/Excel_Cell_Color_2.png"><img alt="Excel_Cell_Color_2.png" src="http://www.bird-soft.net/mt/img/Excel_Cell_Color_2-thumb.png" width="500" height="689" /></a>
↑色が分かれてしまっている（Excel VBAでのセルの色分けテスト)
　しかも、途中に変な灰色がはいっている・・・。
　
　
<a href="http://www.bird-soft.net/mt/img/Vcs_Color_1.png"><img alt="Vcs_Color_1.png" src="http://www.bird-soft.net/mt/img/Vcs_Color_1-thumb.png" width="500" height="717" /></a>
↑本来はこうなるはず（Visual C#での色塗りテスト)


回避方法がわかる方、教えてください・・・。

追記：
以下のページに同じ悩みがありました。やはり同時に使える色が限られているようです。
<a href="http://m--takahashi.com/bbs/pastlog/14200/14108.html">Excelのセルの色の変更方法
</a>

同時に使える色が限られてはいますが、
下記のように、カラーパレットを変更すると任意の色にすることはできます。
ThisWorkbook.Colors(1) = RGB(255, 123, 0)
　
以下のページが参考になります。
エクセル：カラーパレット
<a href="http://adamontn.blog.ocn.ne.jp/analyst/2007/05/post_4164.html">http://adamontn.blog.ocn.ne.jp/analyst/2007/05/post_4164.html</a>
　
　
※カラーパレットの変更はExcelのメニューバーの
　ツール⇒オプション⇒タブ「色」　からも可能
<a href="http://www.bird-soft.net/mt/img/Excel_Option_Color.png"><img alt="Excel_Option_Color.png" src="http://www.bird-soft.net/mt/img/Excel_Option_Color-thumb.png" width="400" height="248" /></a>
]]>
    </content>
</entry>
<entry>
    <title>Excelのセルの色を取得、変更する(Excel VBA)</title>
    <link rel="alternate" type="text/html" href="http://www.bird-soft.net/mt/2008/07/excelexcel_vba.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.bird-soft.net/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=217" title="Excelのセルの色を取得、変更する(Excel VBA)" />
    <id>tag:www.bird-soft.net,2008:/mt//1.217</id>
    
    <published>2008-07-19T14:59:00Z</published>
    <updated>2008-07-19T17:02:26Z</updated>
    
    <summary>Excelのアドインである「らくらく罫線」がすばらしいため、 ExcelのVBA...</summary>
    <author>
        <name>BIRD</name>
        <uri>http://www.bird-soft.net/</uri>
    </author>
            <category term="Programing Memo" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.bird-soft.net/mt/">
        <![CDATA[<a href="http://www.bird-soft.net/mt/2008/07/post_79.html">Excelのアドインである「らくらく罫線」がすばらしいため</a>、<br />
ExcelのVBAに興味がわきました。<br />
VBAで簡単なコードを作ってみたので載せておきます。<br />
<br />
<br />
◆概要<br />
<br />
☆以下の動作をするテストプログラムです。<br />
　・セルの値に応じて、自動でセルの色を色分けする（今回は1〜3の3通り）<br />
　・セルの色に応じて、自動でセルに数値を記入（今回は1〜3の3通り）<br />
　※いずれもフォームにボタンを配置し、ボタンをクリックしたときの<br />
　　イベントの中のコードのイメージです。<br />
<br />
<br />
<img alt="VBA_Sample_rei.png" src="http://www.bird-soft.net/mt/img/VBA_Sample_rei.png" width="500" height="224" />
<br />
↑マクロ実行例
　※あらかじめセルに1〜3の数値を入れた物を用意します。<br />
　※今回は１が黒、２がオレンジ、３が赤に変換されます。<br />
　※範囲は16*16個まで。<br />
<br />
<br />
VBAマクロの中身は続きからどうぞ<br />
<br />]]>
        <![CDATA[<br />
<br />

<form>
<textarea rows="40" cols="78" wrap=off readonly>

'色分けボタンを押したときの処理
Private Sub CommandButton1_Click()

For i = 1 To 16 Step 1
  For j = 1 To 16 Step 1
      'セルを値に応じて色分けする
      If Cells(i, j).Value = 1 Then
         Cells(i, j).Interior.ColorIndex = 1
      End If
      If Cells(i, j).Value = 2 Then
         Cells(i, j).Interior.ColorIndex = 46
      End If
      If Cells(i, j).Value = 3 Then
         Cells(i, j).Interior.ColorIndex = 3
      End If
      
  Next j
Next i

End Sub

'数値記入ボタンを押したときの処理
Private Sub CommandButton2_Click()

For i = 1 To 16 Step 1
  For j = 1 To 16 Step 1
      '色に応じて数値記入
      If Cells(i, j).Interior.ColorIndex = 1 Then
         Cells(i, j).Value = 1
      End If
      If Cells(i, j).Interior.ColorIndex = 46 Then
         Cells(i, j).Value = 2
      End If
      If Cells(i, j).Interior.ColorIndex = 3 Then
         Cells(i, j).Value = 3
      End If
      
  Next j
Next i

</textarea>
</form>

<br />
<br />
◆リンク<br />
Excel VBA 入門講座<br />
<a href="http://excelvba.pc-users.net/">http://excelvba.pc-users.net/</a><br />
<br />
Excel VBA Reference&nbsp;&nbsp; ★文字色とセルの塗りつぶし設定★<br />
<a href="http://www.big.or.jp/~seto/vbaref/vbaref4.htm">http://www.big.or.jp/~seto/vbaref/vbaref4.htm</a><br />
<br />
ColorIndexプロパティ値一覧：Excel エクセルの使い方-マクロ/VBA<br />
<a href="http://www.relief.jp/itnote/archives/000482.php">http://www.relief.jp/itnote/archives/000482.php</a><br />
<br />]]>
    </content>
</entry>
<entry>
    <title>表をテキストで表現する - らくらく罫線</title>
    <link rel="alternate" type="text/html" href="http://www.bird-soft.net/mt/2008/07/post_79.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.bird-soft.net/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=214" title="表をテキストで表現する - らくらく罫線" />
    <id>tag:www.bird-soft.net,2008:/mt//1.214</id>
    
    <published>2008-07-06T15:20:00Z</published>
    <updated>2008-07-20T01:48:36Z</updated>
    
    <summary>おもしろいソフトを見つけたので紹介します。 Excelで表で作ったものをテキスト...</summary>
    <author>
        <name>BIRD</name>
        <uri>http://www.bird-soft.net/</uri>
    </author>
            <category term="日記(一般/メモ等)" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.bird-soft.net/mt/">
        <![CDATA[おもしろいソフトを見つけたので紹介します。
Excelで表で作ったものをテキストに変換できる「らくらく罫線」
というExcelアドインです。

Excelで作成し、変換できるため、とても便利です。
Excelとの連携がおもしろい、便利だと感じました。
（このようなソフトを作ろうと思ったのですが、すでにこれがありました。
欠点があるとすればExcelのある環境が必要なことぐらい。）

<a href="http://www.bird-soft.net/mt/img/rakurakukeisen.png"><img alt="rakurakukeisen.png" src="http://www.bird-soft.net/mt/img/rakurakukeisen-thumb.png" width="400" height="222" /></a>
↑作成イメージ。操作は簡単。

<a href="http://www.bird-soft.net/mt/img/rakurakukeisen2.png"><img alt="rakurakukeisen2.png" src="http://www.bird-soft.net/mt/img/rakurakukeisen2-thumb.png" width="400" height="253" /></a>
↑複雑な表もあっというまにテキストにできる。

らくらく罫線のダウンロード（Vector)
<a href="http://www.vector.co.jp/soft/win95/net/se336721.html">http://www.vector.co.jp/soft/win95/net/se336721.html</a>

]]>
        ◆おまけ
以下が実際のテキストです。
※等幅フォント（MS　ゴシックなど）で見てください。
※プロポーショナルフォント（MS　Ｐゴシックなど）で見るとずれてしまいます。


　　┌───────────────────────────┐
　　│                      2008年7月                       │
　　├───┬───┬───┬───┬───┬───┬───┤
　　│  日  │  月  │  火  │  水  │  木  │  金  │  土  │
　　├───┼───┼───┼───┼───┼───┼───┤
　　│      │      │  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  │      │      │
　　└───┴───┴───┴───┴───┴───┴───┘

    </content>
</entry>
<entry>
    <title>sftpでファイルを自動転送(TeraTermマクロ)</title>
    <link rel="alternate" type="text/html" href="http://www.bird-soft.net/mt/2008/07/sftpteraterm.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.bird-soft.net/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=215" title="sftpでファイルを自動転送(TeraTermマクロ)" />
    <id>tag:www.bird-soft.net,2008:/mt//1.215</id>
    
    <published>2008-07-06T14:00:00Z</published>
    <updated>2008-07-06T15:15:40Z</updated>
    
    <summary>sftpでファイルを自動転送する簡単なTeraTermマクロを作ってみました。 ...</summary>
    <author>
        <name>BIRD</name>
        <uri>http://www.bird-soft.net/</uri>
    </author>
            <category term="Programing Memo" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.bird-soft.net/mt/">
        <![CDATA[sftpでファイルを自動転送する簡単なTeraTermマクロを作ってみました。<br />
いつも同じディレクトリにファイルを転送するような場合に有効です。<br />
（ただし、パスワードを平文で書いているのでセキュリティ的には×です）<br />
<br />
なんてことはないTeraTermマクロなのですが、文字列をつなげるのに<br />
strconcatをつかうのがポイントです。<br />
<br />
<br />
◆使い方<br />
<br />
1.マクロに書いてあるユーザ名、ホスト名、パスワード、アップロードディレクトリ<br />
等をあらかじめ書き換えておく。（★部分）<br />
<br />
2.転送元マシンにログインする<br />
<br />
3.マクロを実行<br />
<br />
4.自動的に対象マシンにログインされ、<br />
　ダイアログが表示されるのでディレクトリ名を入力<br />
<br />
5.アップロード完了<br />
<br />
<br />
マクロは続きからどうぞ<br />
<br />]]>
        <![CDATA[<br />
<br />

<form>
<textarea rows="40" cols="78" wrap=off readonly>
;ログインする
sendln 'sftp user@10.20.30.40'  ;★ユーザ名、ログイン先
wait 'assword'
sendln 'passwd'   ;★パスワード
wait 'sftp>'

; アップロード準備
sendln 'lcd /data/bak/'    ;★アップロード元
wait 'sftp>'

sendln 'cd /home/user/data/upload/'   ;★アップロード先
wait 'sftp>'

;ユーザがアップロード先のディレクトリ名を入力
inputbox 'アップロード先ディレクトリ入力' 'ディレクトリ入力画面'

;ディレクトリ作成
msg = 'mkdir '
strconcat msg inputstr
sendln msg
wait 'sftp>'

msg = 'cd '
strconcat msg inputstr
sendln msg
wait 'sftp>'

;/data/bak/ 配下のファイルを全てアップロード
sendln 'mput *'    ;★全てアップロードする
wait 'sftp>'

end

</textarea>
</form>

<br />
<br />

リンク<br />
TeraTermのダウンロード（窓の杜）<br />
<a href="http://www.forest.impress.co.jp/lib/inet/servernt/netuty/utf8teraterm.html">http://www.forest.impress.co.jp/lib/inet/servernt/netuty/utf8teraterm.html</a>
<br />
]]>
    </content>
</entry>
<entry>
    <title>テキストの周りに枠を生成するスクリプト(Perl)</title>
    <link rel="alternate" type="text/html" href="http://www.bird-soft.net/mt/2008/06/perl_1.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.bird-soft.net/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=213" title="テキストの周りに枠を生成するスクリプト(Perl)" />
    <id>tag:www.bird-soft.net,2008:/mt//1.213</id>
    
    <published>2008-06-28T11:35:47Z</published>
    <updated>2008-06-28T11:56:37Z</updated>
    
    <summary>テキストファイルを指定すると、そのテキストの周りにテキストで 枠をつけるPerl...</summary>
    <author>
        <name>BIRD</name>
        <uri>http://www.bird-soft.net/</uri>
    </author>
            <category term="Programing Memo" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.bird-soft.net/mt/">
        <![CDATA[テキストファイルを指定すると、そのテキストの周りにテキストで<br />
枠をつけるPerlスクリプトを作成してみました。<br />
（但し、等幅フォントでないと表示がずれます）<br />
<br />
最近では需要はあまりないかと思いますが、<br />
メールなど、テキストベースの物を作る際に役に立つと思います。<br />
<br />
・使い方<br />
1.「設定」部分を書き換える<br />
　・読み込むディレクトリ、ファイル名<br />
　・結果出力ディレクトリ、ファイル名
<br />
2.変換ファイル作成<br />
　・読み込むディレクトリ、ファイル名<br />
　　で指定したファイルに変換したい文字列を書き込む<br />
3.変換スクリプトを実行する<br />
4.結果出力ディレクトリ、ファイル名<br />
　　で指定したファイルに変換後の文字列が出力される<br />
<br />
※「設定」の「部品」の部分を変えるといろいろな枠にすることができます。<br />
<br />
・実行例：<br />
D:\Data\temp>textConv.pl<br />
書き出したファイル：D:\Data\temp\test_conv.txt<br />
<br />
<br />
<br />
◆サンプル<br />
<br />
<a href="http://www.bird-soft.net/mt/img/textConv_ato.png"><img alt="textConv_ato.png" src="http://www.bird-soft.net/mt/img/textConv_ato-thumb.png" width="162" height="100" /></a>
⇒
<a href="http://www.bird-soft.net/mt/img/textConv_mae.png"><img alt="textConv_mae.png" src="http://www.bird-soft.net/mt/img/textConv_mae-thumb.png" width="236" height="100" /></a>
<br />
↑変換前テキスト　　　　　　　　　⇒　↑変換後テキスト<br />
<br />
<br />
スクリプトは続きより見てください。
<br />
<br />
]]>
        <![CDATA[<br />
<br />

<form>
<textarea rows="103" cols="78" wrap=off readonly>
# テキスト変換
# 2008年06月 作成
# テキストの周りに枠を生成するスクリプト

#--------------設定--------------

#読み込むディレクトリ、ファイル名
$rdirname='D:\Data\temp';
$rfilename="test.txt";

#結果出力ディレクトリ、ファイル名
$wdirname='D:\Data\temp';
$wfilename="test_conv.txt";

#横の長さ
$MaxNo=100;

#部品
$T_Block = "─";
$L_Block = "│";
$R_Block = $L_Block;
$B_Block = $T_Block;
$TL_Block = "┌";
$TR_Block = "┐";
$BL_Block = "└";
$BR_Block = "┘";

#--------------------------------

# ファイル読み込み
@loadstr = &load_file($rdirname,$rfilename);

# ファイル書き込み
&write_file($wdirname,$wfilename);

print "書き出したファイル：$wdirname\\$wfilename\n";

#-----------------------------------------------------------
# ファイル読み込み。1行づつの配列を返す(ディレクトリ名,ファイル名)
# 末尾の改行は削除する。
sub load_file() {
	my @loadstr0=();
	open(IN, "<$_[0]\\$_[1]");
	while ( $line = <IN>) {   # ファイルを１行ずつ読み込み、EOFで終了
		#print $line;
		$line =~ s/\n//;  #改行削除
		push(@loadstr0, $line);    #配列の最後に追加
	}
	close(IN);
	return @loadstr0;
}

# ファイル書き込み。(ディレクトリ名,ファイル名)
# @loadstr参照
sub write_file() {
	open(FILE, ">$_[0]\\$_[1]") or die;

	#上側
	print FILE " $TL_Block";
		for($j = ($MaxNo/2) ; $j > 0 ; $j--){
			print FILE "$T_Block";
		}
	print FILE "$TR_Block\n";

	$i = 0;
	foreach $t (@loadstr){    #ファイルへ出力

		#----中身生成-------------
		print FILE " $L_Block$loadstr[$i]";  #始まりと内容

		$strlen1 = length ("$t");
		$loop_count = $MaxNo - $strlen1;
		for($j=$loop_count ; $j > 0 ; $j--){
			print FILE " ";          #スペースで足りない部分を補う
		}
		print FILE "$R_Block\n";		#閉じと改行
		#------------------------
		$i++;
	}

	#下側
	print FILE " $BL_Block";
		for($j = ($MaxNo/2) ; $j > 0 ; $j--){
			print FILE "$B_Block";
		}
	print FILE "$BR_Block\n";

	close(FILE);
}

</textarea>
</form>

<br />
<br />

<br />]]>
    </content>
</entry>
<entry>
    <title>実用ミニシェルスクリプト（ファイル一括削除）</title>
    <link rel="alternate" type="text/html" href="http://www.bird-soft.net/mt/2008/06/post_78.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.bird-soft.net/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=212" title="実用ミニシェルスクリプト（ファイル一括削除）" />
    <id>tag:www.bird-soft.net,2008:/mt//1.212</id>
    
    <published>2008-06-15T11:30:00Z</published>
    <updated>2008-06-15T11:47:52Z</updated>
    
    <summary>ディレクトリ内に圧縮ファイルがあれば、その圧縮前のファイルらしきものを 一括削除...</summary>
    <author>
        <name>BIRD</name>
        <uri>http://www.bird-soft.net/</uri>
    </author>
            <category term="Programing Memo" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.bird-soft.net/mt/">
        <![CDATA[ディレクトリ内に圧縮ファイルがあれば、その圧縮前のファイルらしきものを<br />
一括削除するシェルを作成してみました。<br />
（判定は単純にファイル名だけで行っています）<br />
<br />
◆このシェルの内容<br />
カレントディレクトリのファイル、ディレクトリ全てを調べ、すでに「名前.tar.gz」の<br />
ファイルがある場合は「名前」のファイル（またはディレクトリ）を削除する<br />
※但し、「.tar.gz」が含まれるものは対象外<br />
<br />
.tar.gzがついたファイル名のものは圧縮ファイルという前提で作っています。<br />
（.tgzなどの圧縮ファイルには対応していません）<br />
<br />
◆ご注意<br />
このスクリプトでは「rm -rf」で削除を行っていますので、<br />
実行する場合は十分注意した上で、自己責任でご使用ください。<br />
<br />
<br />
※内容は続きから見てください。<br />]]>
        <![CDATA[<br />
<br />

<form>
<textarea rows="48" cols="78" wrap=off readonly>
#!/bin/sh
echo "start"

# カレントディレクトリのファイル、ディレクトリ全てを調べ、
# すでに「名前.tar.gz」のファイルがある場合は
#「名前」のファイル（またはディレクトリ）を削除する
# 但し、「.tar.gz」が含まれるものは対象外

PWDDIR=`pwd`

# 確認メッセージ。"yes"の入力でスタート
echo -n "Del ${PWDDIR} ? yes or no=>"
read INPUTSTRING

if [ $INPUTSTRING == yes ]
then
    echo "START DEL"
else
    echo "CANCEL"
    exit 0
fi

#----------------------------

# ディレクトリ内のファイル、フォルダを列挙
# (.tar.gzがつくもの以外についてループ処理する)
for FILE in `\ls -1 | grep -v .tar.gz` 
do
    #ファイルチェック
    if [ -f ${FILE}.tar.gz ]
    then
        #圧縮ファイルがあるとみなす
        echo "rm -rf ${FILE}"   #元ファイル削除
        rm -rf ${FILE}
    else
        echo "***file not found : ${FILE}.tar.gz"
    fi
done

echo "end"

</textarea>
</form>

<br />
<br />
◆参考サイト<br />
UNIX & Linux コマンド・シェルスクリプト リファレンス<br />
<a href="http://www.geocities.jp/geo_sunisland/" target="_blank">http://www.geocities.jp/geo_sunisland/</a>
<br />
<br />]]>
    </content>
</entry>
<entry>
    <title>Linuxでタブ補完ができないときの対処法</title>
    <link rel="alternate" type="text/html" href="http://www.bird-soft.net/mt/2008/06/linux_1.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.bird-soft.net/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=211" title="Linuxでタブ補完ができないときの対処法" />
    <id>tag:www.bird-soft.net,2008:/mt//1.211</id>
    
    <published>2008-06-05T15:10:55Z</published>
    <updated>2008-07-21T12:30:40Z</updated>
    
    <summary>Linuxでタブ補完ができない、履歴が矢印キーで表示できない、 Tabキー、矢印...</summary>
    <author>
        <name>BIRD</name>
        <uri>http://www.bird-soft.net/</uri>
    </author>
            <category term="日記(一般/メモ等)" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.bird-soft.net/mt/">
        Linuxでタブ補完ができない、履歴が矢印キーで表示できない、
Tabキー、矢印キーやESCキーを押すと文字化けしたようなものが表示される・・・。
そんな困ったことがおきたので調べてみました。

◆対策
シェルオプションが足りないらしいので、対象のものををonとする。
（例えば、以下のようにemacsをonにする）

1.set -oを実行

$ set -o
allexport       off
braceexpand     on
emacs           off
（以下略）

となっていたら、

2.set -o emacsを実行

3.set -oで確認

$ set -o
allexport       off
braceexpand     on
emacs           on
（以下略）

⇒これでOKです。

続きにはオプションのメモ、参考リンクがあります。
        <![CDATA[◆メモ
・シェルオプション表示:set -o
・emacsをonにする:set -o emacs
・emacsをoffにする:set +o emacs

※よくわからないですが、emacsがoffでも
　vi がonになっていればtab補完できるみたいです。


◆参考にした記事　（助かりました）
<a href="http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=34289&forum=10&4" target="_blank">Tab補完と履歴について - Linux Square</a>
　
　
2008/7/21追記：
以下のサイトにさらに詳しく載っていました。
set -o emacsでもタブ補完できないマシンがあったのですが、
もしかしてkshでなくてshだったのかも・・・。
　
Bashが入っていなくてTAB補完（ファイル名補完）が出来ない時の回避策
<a href="http://d.hatena.ne.jp/GARAPON/20070925/1190707920">http://d.hatena.ne.jp/GARAPON/20070925/1190707920</a>]]>
    </content>
</entry>
<entry>
    <title>実用ミニシェルスクリプト（ディレクトリ内のファイルを一括圧縮）</title>
    <link rel="alternate" type="text/html" href="http://www.bird-soft.net/mt/2008/06/post_77.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.bird-soft.net/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=210" title="実用ミニシェルスクリプト（ディレクトリ内のファイルを一括圧縮）" />
    <id>tag:www.bird-soft.net,2008:/mt//1.210</id>
    
    <published>2008-06-05T13:24:22Z</published>
    <updated>2008-06-06T11:21:17Z</updated>
    
    <summary>前回の記事のスクリプトを元に、ディレクトリ内のファイルを一括圧縮 する物を作成し...</summary>
    <author>
        <name>BIRD</name>
        <uri>http://www.bird-soft.net/</uri>
    </author>
            <category term="Programing Memo" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.bird-soft.net/mt/">
        <![CDATA[<a href="http://www.bird-soft.net/mt/2008/05/post_75.html">前回の記事</a>のスクリプトを元に、ディレクトリ内のファイルを一括圧縮
する物を作成してみました。<br />
<br />
◆このシェルの内容<br />
・カレントディレクトリ内のファイルを一括圧縮<br />
　（tarコマンドで固める）<br />
※但し、「.tar.gz」がファイル名に含まれるものは対象外<br />
　また、すでに「ファイル名.tar.gz」のファイルがある場合は圧縮しない<br />
<br />
.tar.gzがついたファイル名のものは圧縮ファイルという前提で作っています。<br />
（.tgzとかの圧縮ファイルがある場合は圧縮してしまいますので、
スクリプト改造で対応するとよいと思います）<br />
<br />
<br />
※内容は続きから見てください。]]>
        <![CDATA[<br />
<br />

<form>
<textarea rows="48" cols="78" wrap=off readonly>
#!/bin/sh
echo "start"

# カレントディレクトリのファイル、ディレクトリ全てを
# tarコマンドで固めるシェル
# 但し、「.tar.gz」がファイル名（ディレクトリ名）に含まれるものは対象外
# また、すでに「ファイル名.tar.gz」のファイルがある場合は圧縮しない

PWDDIR=`pwd`

# 確認メッセージ。"yes"の入力でスタート
echo -n "tar ${PWDDIR} ? yes or no=>"
read INPUTSTRING

if [ $INPUTSTRING == yes ]
then
    echo "START TAR"
else
    echo "CANCEL"
    exit 0
fi

#----------------------------

# ディレクトリ内のファイル、ディレクトリを列挙
# (.tar.gzがつくもの以外についてループ処理する)
for FILE in `\ls -1 | grep -v .tar.gz` 
do
    #ファイルチェック
    if [ -f ${FILE}.tar.gz ]
    then
        #圧縮ファイルがあるとみなす
        echo "***${FILE}.tar.gz already exist."
    else
        echo "tar zcvf ${FILE}.tar.gz ${FILE}"
        tar zcvf ${FILE}.tar.gz ${FILE}          #圧縮実行
    fi
done

echo "end"

</textarea>
</form>

<br />
<br />
◆参考サイト<br />
UNIX & Linux コマンド・シェルスクリプト リファレンス<br />
<a href="http://www.geocities.jp/geo_sunisland/" target="_blank">http://www.geocities.jp/geo_sunisland/</a>
<br />
<br />]]>
    </content>
</entry>

</feed> 

