久しぶりの海外(台湾)

久しぶりって言っても2度目の海外、台湾!

Peachで関空から、さらば日本!いや、帰ってくるし。(仕事残してるし)
2014年9月から、離陸・着陸時でも通信していなければ電子機器が使えるようになり、カメラでカシャカシャとれるように。
といっても、台湾上空は撮影禁止だそうで撮れなかったのだが・・・

ピーチからKLM
ピーチからKLM

上空からみた台湾は、緑に囲まれた美しい国土(?)、まぁ美しい土地。
下手に開発されていなくて、田園地帯が美しいし、河川も堤防とか整備されているところが少なくてありのままな感。

まぁ、下手に開発して、住民増やそうと地名なんか綺麗にすると、例の広島のように被害が大きくなるような気がしないでもない。
(あんなところにどうして住むのだろう?人災だ!と言われてもしょうがない)
家の近所でも避難勧告が出てて、やっぱり崖関係。
昔から住んでるからといって、もう安心はできない。
斜面やら崖やら、そんなんが近くにあるようなところに住むというのは自殺行為だと思い知った今年の夏だった。

そんな話はともかく、とりあえず台湾。
どっかのページに英語が喋れればOKだよ、って書いてあったけど、結局緊急事態とか、困ったときには英語はどうにもならん。
(日本語のほうがまだ通じるって言われたが、結局使わんかった)
ちょっと中国語を勉強したところでどうにもならんのね。向こうが言っていることがわからないと、答えられないから。
参ったし、反省。やっぱり、ある程度言葉わかったほうがいいな。

ただ、台湾のいい人たちに、なんとかフォローしてもらった。
台湾人は全員優しいとは言わんが、助けてもらった人たちに感謝感謝である!

夜市やら市内観光やらしてみたが、もう少しゆっくりできればよいなぁと思った。
自転車とかでぐるっとまわってみたいのだ。
ということで、次回台湾旅行は、レンタル自転車を借りてグルグル回ってみるツアーにするつもり。

台北レンタサイクル
台北レンタサイクル

なんかカードが必要みたいなので、乗れるかどうかチェックしておこう。

食事はどうかといわれると、結局自分の好みの味ではなかった。
なんというか、キレがない感じ。
日本では薄味派な私だが、向こうでは物足りない。
日本の薄味って、薄いけどしっかりした感(塩分とかダシとか)があるのだが、台湾だと色は濃いけどだるーい感じ。

ただし、甘味はうまかった。
かき氷を食べたんだけど、なんか、蜜やら練乳やら、やたらいっぱいかけてくれるから、「やめてくれぇ~~~」とか思ったが、食べてみるとホントに絶妙な甘さでおいしかった。
あれはもう1度たべたいな。
豆花だっけ、まだ食べてないから、これも食べてみたいところ。

ということで、次回の台湾は、サイクリングと甘味処めぐりにしよう!

ExcelVBA覚書 誰かが使ってる・・・

Excelファイルを開く。
だけど、誰かが開いているから保存はできないよ。
だから処理をやめるね。

ってなことがやりたい!ということで調べてみた。
なんか、Open xxx For Append とか Open xxx For Binary とかで誰かがつかんでることを確認する方法とかあったのだけど、ファイルがちょっと特殊なところにあり、こういうことができない。
それに、パスワード設定しているため、誰かが使っているときにReadOnlyをFalseにして開くと、パスワードまで聞いてくる始末・・・
なので、脳みその10%をフル活用してみた。

'
' 引数で指定されたパスを開いて、開いたブックを返す
' (ここではパスワード設定は省略)
Private Function OpenBook(filePath As String, readonlyFlg as Boolean) As Workbook

    Dim fileName As String

    On Error Goto ErrorFunc

    '(1) とにかく読取専用で開く(確認メッセージとか出さない)
    Set OpenBook=  Application.Workbooks.Open(Filename:=filePath , UpdateLinks:=False _
                                              , Notify:=False, ReadOnly:=True)
    '(2) 読取専用で開くときはここで終わり
    If readonlyFlg Then Exit Function

    '(3) 開いたブックを読み書きできるようにする(確認メッセージとか出さない)
    fileName = OpenBook.Name
    OpenBook.ChangeFileAccess Mode:=xlReadWrite, Notify:=False

    '(4) なぜか、開き直しになり設定が切れてしまうので、もう一度設定しなおす
    Set OpenBook = Workbooks(fileName)

    '(5)ファイルが読取専用でなかったら、編集可能なブック!
    If Not OpenBook.ReadOnly Then Exit Funtion

    '(6) OpenBook.ReadOnly = True なら、誰かが掴んでる!=> 閉じる
    OpenBook.Close SaveChanges:=False
    Set OpenBook = Nothing
    Exit Function

ErrorFunc:

    '指定したパスのファイルがないときは、(1)でエラー発生し、ここに来る!

End Function 

ということで、回りくどいやり方をすれば何とかできることが分かった。
上の例だと、ファイルがないときも、開けないときもNothingで返してしまうので、区別したいときはフラグを返してやるとか工夫が必要。

ブックを開いた後は

    OpenBook.Windows(1).WindowState = xlMinimized

で最小化しておくと、画面のちらつきは最小限で済む。

で、これが「特殊な環境下」でうまく動くかどうかはまだ試せていない。

ExcelVBA覚書 AutoFilterまとめ

あぁ、フィルタよ、フィルタよ・・・
結構ややこしかったぞよ。

1つの列に対する複数条件の設定とか、フィルタ解除の方法やら、マクロの記録で出力されないロジックを調べるのに時間がかかった。

1) フィルタの解除

' フィルタが設定されていたら解除しちゃうよ
Private Sub ClearAutoFilter(target_ws as Worksheet)
    If target_ws.AutoFilterMode Then target_ws.AutoFilterMode = False
End Sub

2) 1つの列に対する複数条件設定

これが結構難しかった。というより、参考になるサイトがあまりなく、やっとこさで探し当てた。
別のところで配列(Variant型)を作っとく。
たとえば、
Dim arr As Varient
arr = Split(“あ,い,う”)
として、
SetAutoFilterAt Activesheet.Range(“A1:E100”), 1, arr
ってな感じで下のプロシージャを呼び出す。
すると、「あ」「い」「う」に該当するレコードが抽出される。

Private Sub SetAutoFilterOn(target_rng as Range, col as Long, crit_arr as Variant)
    target_rng.AutoFilter Field:=col , Criteria1:=crit_arr , Operator:=xlFilterValues
End Sub

試してないから、動かんかったらごめんなさい。
でも、イメージ的にはこんな感じで、Criteria1とOperator の設定がポイントということが分かった。

3) 絞り込んだデータの取得(A) 1行ずつ漁る

    Dim cnt As Long
    Dim rng As Range
    Dim target_rng As Range

    Set target_rng = Activesheet.Range("A1:E100")

    'target_rngの1行目がタイトル行なので、-1 する。
    With target_rng
        cnt = .Columns(1).SpecialCells(xlCellTypeVisible).Cells.Count -1
        If cnt > 0 Then
            For Each rng In .Columns(1).SpecialCells(xlCellTypeVisible).Cells
                'タイトル行以外で処理する
                If rng.Row > 1 Then
                    '抽出範囲の1列目の情報をダイアログ表示
                    Msgbox rng.Parent.Cells(rng.row,1).Value
                End If
            Next
        Else
            Msgbox "データなし"
        End If
    End With

ForEach文が1行ずつ見ているところ。
抽出範囲の1列目ってのが、Columns(1).SpecialCells(xlCellTypeVisible).Cells。

4) 絞り込んだデータの取得(B) ワークシート関数でドバッと集計

    Dim cnt As Long
    Dim target_rng As Range
    
    Set target_rng = Activesheet.Range("A1:E100")

    'target_rngの1行目がタイトル行なので、-1 する。
    With target_rng
        cnt = .Columns(1).SpecialCells(xlCellTypeVisible).Cells.Count -1
        If cnt > 0 Then
             '抽出範囲の2列目の合計を取得(タイトル行は数値でないこと)
             Msgbox  "合計:" & Cstr(Application.WorksheetFunction.Sum(.Columns(2).SpecialCells(xlCellTypeVisible).Cells))
        Else
            Msgbox "データなし"
        End If
    End With

他の内容は割と簡単に調べられるので省略。

改めてExcelVBAって奥深いなぁ・・・って思った。
ってか、マクロの記録でこういうロジックを残してくれたら、悩まずに済むのに!といつも思う。

ExcelVBA覚書 マクロの記述を削除する

Excelファイルを作成するときに、マクロの入ったシートをコピーして作成すると、マクロが残っちゃって困ってしまった。
おまけに、一部のシートしかコピーしてないから、モジュールとかにあるプロシージャとかがないってエラーになってしまう・・・

で、マクロは保存する前に削除しちゃいましょう!なロジックを見つけてきた。

元ネタはこちら
Excelでお仕事! マクロを除いた配布用ブックを作成する。

'======================================================
'ブック上にあるマクロを全部削除しちゃうよロジック
'======================================================
Public Sub DeleteMacroIn(wb As Workbook)
    
    Dim obj As Object    '正しい型はVBComponent
    Dim lines As Long 
    
    For Each obj In wb.VBProject.VBComponents
        With obj.CodeModule
            lines = .CountOfLines
            If lines > 0 Then .DeleteLines 1, lines 
        End With
    Next obj

End Sub

不惑

とうとう、そういう歳になってしまった。

が、迷い戸惑い、怒りに身を震わせる自分が相変わらずここにいる。

で、Agora 「不惑」という困惑 という記事を読んだ。

まぁ、歳なんて関係ないのよ。西洋にはそんな考え方ないし・・・みたいな感じ。
こういう考え方ができると楽だよねぇ・・・とか思うのだが、本当にそれでよいのかとも思う。

自分は独身で子供もいないけど、周りにいる同世代、または親である人たちで、そりゃいい親だとか、ちゃんと育てているなと思える人たちはいっぱいいるが、そうも思えない人もいる。
ほっときゃいいじゃない、って思うかもしれないが、ほっといて本当によいのだろうか。
放置して、自分に跳ね返ってきたら、あの時ほったらかしにしたことを後悔しないかね。
(まぁ、関係ないって思っているのだったら、後悔なんかしないのかもね。)

でも、マンションの隣の部屋で餓死した人がいたらどうかな。
なんかできなかったかな、自分・・・とか思うんじゃないの。

仏教には受容という言葉があるけれど、何でもかんでも受け入れるということではない。
やっぱり自分で考えて、人の意見も聞いて、かみ砕いて消化する必要があると思う。
そして、ダメなものは駄目だし、「ならぬものは、ならぬ」。

まぁ、そんな当てもなく、いろいろ思いつつ、今日は早く仕事を終わらせるのが、今の私のメイン課題なのである。

Excel覚書 Excelを複数バージョン入れているとき

ファイルをWクリックしたときにどっちのバージョンのEXCELを開いてほしいか指定する方法。

コマンドプロンプトで以下を実行

自分の環境はExcel2013(32bit)なので、

“C:\Program Files (x86)\Microsoft Office\OFFICE15\excel.e
xe” /regserver

ファイルパスは32bitと64bitでは違うし、パスを指定してインストールしたらこれとは違うので、自分の環境にあわせて変える。

Excel2003はOFFICE11、2010はOFFICE14、2013はOFFICE15。

SQLServer覚書 縦→横 (FOR XML)

SQLServerで縦並びになっているデータを横並び(カンマ区切り)にして出力したくなった。

【TABLE1】
CD | KOMOKU
1 | A
1 | B
2 | C
2 | D
【TABLE2】
CD | CNAME
1 | あ
2 | い

ってあった場合、

CD | CNAME | KOMOKU
1 | あ | A,B
2 | い | C,D

って出したい!ってことで、調べた結果、

select 
 TABLE2.*
 ,replace((select KOMOKU  AS [data()] 
 from TABLE1
 where (TABLE1.CD=TABLE2.CD)
 for xml path('')
 ),' ',',') AS KOMOKU
 from TABLE2

ってな感じに記述するとのこと。
KOMOKUにスペースが含まれているとこれってうまくいかないんだよねぇ・・・とか思いつつ、自分の場合は特に問題なかったのでOK。
[data()] ってのがアトミック値にするっていうことらしいがよくわからんかった。
(分解できないとか、処理速度が速いとか書いてあったけど、結局よくわからん・・・)

ExcelVBA覚書 ファイル起動

ExcelVBAでファイルを起動する方法。
Excelのブックとかでなく、JpegとかTextファイルとかを起動したい場合の記載方法。
(これでやれば、ファイルなら既定のアプリでファイルを開いてくれる)

CreateObject("Wscript.Shell").Run

参考URL
1) 別のやり方も載ってる
moug ExcelVBA 他アプリを起動する

2) 引数について詳しいのはこっち
VBScript Tips & サンプル プログラムを実行する、ファイルやフォルダを開く

一夢庵風流記 前田慶次/My Dream TAKARAZUKA

さてもさても、JCB貸切でござる。

キューピー
キューピー

退団公演だからチケットとれなさそうだしなぁと観る気なかったのだが、ポスター見たらなんか面白そうだったので、イソイソとチケットを取った。
初めての2階席で、しかも殆んどAかBだろう!!!と文句を言いたくなるS席だったが、2階からの眺めはそこそこ良かった。

今回のは芝居がよかったな。(前田慶次が?それとも馬が?)
前田慶次=壮一帆がピッタシくるところはもちろんなんだけど、今の組の状態が非常にバランスが取れていて、そのことがよくわかる芝居だったのだ。
落下傘トップというのは疑問視されることが多いのだが、力量があればすごくいい組を作れるものだなぁと実感した。
(ここ最近のトップだと、むしろ落下傘のほうがいい仕事をしているように思える。)
なんか、トップが辞めてこのバランスが崩れてしまうことが惜しい気がするけれど、これが宝塚の良さでまた新しい風が吹くのさ・・・
(と、感慨深げに花の道を歩いて帰る)
もうちょっと男女の絡みがあってもよかった気がするけど、まぁ時間的にこんなもんかな、とも思う。

で、ショー。
また「TAKARAZUKA」ってついてるから、もういいよ自画自賛オンパレードは・・・って思ってたけど、全然違ったのでよかった。
私は退団公演ってのは初めて生で観るんだけど、なんだか、これはファンでない、よくわかってない自分でもウルっときちゃうな。
ただ、もうちょっとしんみり、ってかしっとりした場面があってもよかったんじゃないかって思う。
結局盛り上がって場面終了!みたいなものばかりで、ちょっとウザい。
でも、正直、フィナーレだけで十分元は取れたな。
あのフィナーレ見るために、DVD買ってもいいなぁって思った。

そういえば、Shall We ダンス?のDVDは買ったのだが、ちょっと物足りないね。
生があんだけよかったのに、DVDは・・・ってちょっと残念だった。
DVDの編集の仕方とか変えるだけで、もっと売れそうに思うんだけどどうだろうか。

Excel VBA覚書 ファイルの所有者を取得する

このブログのアクセスって明らかに平日が多い。
記載した技術情報が役に立ってくれれば幸いなのだが・・・

さて、ファイルの所有者ってとってこれんのか?って話。
とってこれるみたい。

Kameya blog「VBScriptでフォルダ・ファイルの所有者の確認を行う」を参考に、ExcelVBAで作成してみた。

'-----------------------------------------------------
' ファイルの所有者を取得する
' 引数 :ファイルパス(File Only)
'-----------------------------------------------------
Private Function GetOwner(fpath As String) As String
    
    Dim WMIService  As Object
    Dim objSet      As Object
    Dim obj         As Object
    Dim buf         As String
    
    'ちゃんと渡してよ!って抜ける
    If Len(fpath) = 0 Then Exit Function
    
    Set WMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
    
    buf = ""
    
    'TODO 本当はちゃんとエスケープしないとダメ
    Set objSet = WMIService.ExecQuery("ASSOCIATORS OF {Win32_LogicalFileSecuritySetting='" _
                                    & Replace(fpath, "\", "\\") _
                                    & "'} WHERE AssocClass=Win32_LogicalFileOwner ResultRole=Owner")
    For Each obj In objSet
        buf = buf & obj.AccountName & ","
    Next
    If Len(buf) > 0 Then
        GetOwner = Left(buf, Len(buf) - 1)
    End If
    
    Set obj = Nothing
    Set objSet = Nothing
    Set WMIService = Nothing

End Function

参照したサイトだと記載されていなかったのだが、¥マークは二重にしないといけない。
(常識?いや、CとかC++とかC#とか・・・ならともかく、VB書いてるときは頭がBasicモードになってしまい、忘れてしまうのだ。)
フォルダの所有者を確認するときは、WHERE句が変わるはず。

ドラマ「ルーズベルトゲーム」

視聴率は半沢越えできないかもしれないが、観ていなかったら後悔するかもねって思い始めた。

半沢は大阪編と東京編が似たような話だったので、「またか・・・」みたいなところもあったし、半沢って、そんないいやつか?って気もしてたので、「勧善懲悪」なのがよい!っていう人の意見には少々違和感を感じてたのだよ、私は。
だってさ、はじめのうちはしおらしくしてて、勝ち目があると踏んだと途端「おい!てめぇ!!!」みたいな感じだったから、なんか豹変しすぎだろぉ・・・って思ったのだよ。

今回のも、なんか似たような感じなんだけど、
群雄割拠で「どうやって生き残るか!」みたいなところがあって、そういう意味で戦国時代好きとかには面白いと思うのだよ。

ということで、そろそろ視聴率が上がってくるんではなかろうかと期待する。
(まぁ視聴率なんて無意味なもんで縛られてほしくないんだけどね)

Struts2 ForとかDoとかWhileとか・・・

まぁとりあえず、ぐるぐる回したいときね。

あるんですよ。

鍵のついたキーホルダーの端っこを指にはめ込んで、鍵をぐるぐる意味もなく回したりね。

いや、そんな話でなくて・・・iterator

ソフトウェア技術ドキュメントを勝手に翻訳 iterator

ex) 1,2,3,4,5と順に・・・

<s:iterator status=”stat” value=”{1,2,3,4,5}” >

これなんかは、{1,3,6,10} とか括弧の中身を変えてしまうと、また違った使い方ができる。

ex) とりあえず5回

<s:iterator status=”stat” value=”(5).{ #this }” >

(5)ってところを変数つかって(data_max)とかできちゃうよね。

って、forつくりゃいいじゃんか!って思うんだけどね。
まぁ、人それぞれ、言語もそれぞれってことです。

SQLServer覚書 Excel→DB

Excelのデータを1行ずつ挿入していくのが面倒なので、シートまるっとINSERTをやってみた。

引数は以下の通り
workbook_path:元データのブック
sheet_name:workbook_pathのどのシートを元データとするのか指定
db_src:DBの場所
db_name:DBの名前
login_id:DBのユーザID
login_pw:DBのユーザパスワード
table_name:DBのどのテーブルを操作するのか(ここではデータの投入先)

Private Function ExportFromXLSX(workbook_path as String,sheet_name as String, db_src as String, db_name as String,login_id as String, login_pw as String, table_name as String) As Boolean

	Dim cn as ADODB.Connection
	Dim recs_aff as Long

	On Error Goto ErrFunc
	
	Set cn = New ADODB.Connection

	'2007バージョンのExcelファイルを開く
	cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & workbook_path & ";" & _
	        "Extended Properties=Excel 12.0"

	'Jetプロバイダを使用してインポート
	sql = "INSERT INTO [odbc;Driver={SQL Server};" & _
						"Server=" & db_src & ";" _ 
						& "Database=" & db_name & ";"  _
						& "UID=" & login_id  _
						& "PWD=" & login_pw _
						& "]." & table_name _
						& " SELECT * FROM [" & sheet_name & "$]"
	    
	cn.Execute sql, recs_aff, adExecuteNoRecords
	cn.Close
	Set cn = Nothing

	ExportFromXLSX = True
	Exit Function
	
ErrFunc:
	
	'エラーメッセージ表示
	' ---- (省略) ----
	
	If Not cn Is Nothing Then
		If cn.State=1 Then cn.Close
		Set cn = Nothing
	End If
	
End Function

こんなことやらなきゃいけないのは、SQLServer側からExcelシートの内容をとってこようとしたときに、分散クエリほにゃほにゃ・・・というエラーが出てしまったからなのだ。
なのでExcelシートから、SQLServer側に送るイメージ。

電子レンジを買った

汚くなった電子レンジを買い替えることにした。
買って10年近くなるし、消費税が8%に上がる前に・・・と思ったのだ。

冷凍食品や弁当の温め直しぐらいしか使わないので、オーブン機能とかいらないのだが、でも横開きじゃなくて前開きがほしいのだ。
とすると、もう限られたものしかなく、結局パナの23Lに目星をつけていた。

が、3月にヨドバシカメラに行ったら、価格.comの最低価格(1月)より欲しい電子レンジは10%以上値上がりしてた。
2月に私がヨドバシに行った時よりも、2000円ほど上がっていたのだ。

価格.comで見たら、1.8万円台の電子レンジが、3月下旬にヨドバシに行ったら2.2万ぐらいで、ポイント還元しても高いことは明白。
ただ、前のやつを粗大ごみに出してしまったので、早く替えがほしかった。

で、4月もいつ下がるのかと、梅田に出るたびに、ちょこちょこ覗いていたのだが、大して下がらず、とうとう5月。
その間もAmazonで毎日確認し、5月に入ると、1日100円ぐらい下がり始め、ようやく1.9万円台になってきた。
で、もうあまり下がりそうもないので、買うことにした。
おそらく、8月ぐらいには新しいタイプが出るのだろうが、それまで待てないし!ということで買った。

電子レンジが届いた。

前のもパナだったけど、操作感がいまいち違うので、ちょっと戸惑ってしまったが、温めるだけなので、まぁさしたることではない。

ようやく電子レンジで、冷凍食品&簡易調理ライフに戻れるので、ちょっとウキウキである。

Excel覚書 結合セルとの格闘

今日は昨日やったことの続きをやろうと思っていたら、昨日作ったロジックがどうも思い通りに動いていない。

検索絡みだ。

Find関数を使って、セル範囲内の値検索をしたかったのだが、同値のセルを検索してくれないとキタ。
Find(…) → FindeNext() を最初のセル、または戻り値がNothingになるまで繰り返すのだが、どうもうまくいかない。

で、結合セルが含まれているせいで、検索がうまくいかないのかと、結合セルをすべて解除させたシートを一つ作って、Ctrl+Fで検索してみたのだが、やはりうまくいかなかった。

Ctrl+Fの検索ダイアログでうまくいかないものをマクロでうまくいかそうなどというのは、無駄な抵抗なので、もう行列全体を1つ1つ当たっていくことにした。

With Worksheets(xx)
    For c=1 to 100 Step 1
      For r=1 to 100 Step 1
        If Cstr(.Cells(r,c).Value) = CheckText Then
                  ''' ここに処理 '''
            End If
            ''' ここに下の結合セルのMax行数抽出のサンプル挿入 '''
      Next r
    Next c
End With

こんな感じに1セルずつ当たっていくわけ。なんとも、面倒な話だが、仕方がない。

しかし、対象セル範囲の中に結合セルがあるので、厄介だ。
というより、結合されている場合は、先頭のセルだけ確認すればよいわけで、検索時間を短縮できると考えた。

下の「結合セルのMax行数抽出のサンプル」は縦結合しかされていないので、横結合の場合はまた変わってくるわけだが・・・

    Dim rng As Range   '確認対象セルを設定すること
    If Not rng.MergeCells Then
        '結合されていない場合
        min_row = rng.Row
        max_row = rng.Row
    Else
        '結合されている場合
        min_row = rng.MergeArea.Cells(1, 1).Row
        max_row = SearchMergeRowMin + rng.MergeArea.Rows.Count - 1
    End If

次に確認するセルは、同じ列の max_row+1 となる。

Excelオセェ~と思ってしまう事象について

現在仕事でExcel2010を使っているのだが、会社のサーバにあるドキュメントなんぞを開けようものなら、

ダウンロード中・・・

みたいなメッセージが出て、もう異様に遅い。

ってなことで、ググってみた。
そうすると、信頼できる場所にしたら、マシになるかもね!なんて話が。

Microsoft Officeサポート:信頼できる場所を追加、削除、変更する

さっそくやってみたさ。

って、ネットワーク上のフォルダが指定できひんやないかい!!!

ほな、あとは、

[レジストリ エディター] で、次のレジストリを見つけます。
※ レジストリが見つからない場合、手順 “4.” 以降は実施する必要はありません。
HKEY_CURRENT_USER\Software\Policies\Microsoft\Office\11.0\Excel\Security\FileValidation
“EnableOnLoad” をダブル クリックし、値のデータに 1 を設定し [OK] をクリックします。
[ファイル]-[レジストリ エディタの終了] をクリックします。

出典:http://support.microsoft.com/kb/2575312/ja

のあたりを見ていくしかないですなぁ・・・

VAIO TAP11 ワイアレスキーボード

1、2か月ほど前、キーボードの充電が全然できてなくて、仕事が進まなかった。
メールとかはスクリーンキーボードでとりあえず済ましたのだが、やはり、プログラミングをスクリーンキーボードでやるのは狂気の沙汰。

で、修理に出した。

なんか、本体側のボードがおかしくなったらしくて取り替えてくれたらしい。

で、キーボードの充電はできるようになった。

よかった!と思ったけど、今度は充電が全然できてない。
2時間ちょこちょこと作業していただけで、もう切れた・・・

おまけに、本体と引っ付けなきゃ充電ができないから、仕事できないは、遊べないは・・・

こんなもん売ってるから、事業売らなきゃいけなくなるんだよぉ~

もう一回、修理に出してやろうか・・・