2015年2月3日火曜日

Surface Pro 3 ネットワークアダプタでエラーコード10エラー

一昨日我が家に Surface Pro 3 がやってきました
キーボードもあるし、マウスもつけたらノートPCと使い勝手は変わらない感じです。
開発にも使えます。どうしても視線が低くなってしまうので肩こりはひどくなりそうですが。

さて、ちょっと放置してから作業を再開すると、なぜかWifiが繋がらない。
もともと我が家のwifiの調子が悪く繋がったり繋がらなかったりなのでまたそれかぁと思っていたのですが、何気なくデバイスマネージャを見てみたところネットワークアダプタに!マークがついてるじゃないですか…。エラーコード10ですかそうですか。

どうも復帰後はネットワークアダプタがうまく動かないみたいです。
他にも同様の問題が起きている人がいるらしく、カカクコムの口コミにも記載がありました。

『復帰後にWifiが使用出来なくなる?』のクチコミ掲示板

単純に再起動すれば治るので安心ですが、修正こないかなぁと期待しています。

2015年1月27日火曜日

Excel を SQL 文で集計する

エクセル関数だととても複雑になってしまう処理をSQLで代替できれば可読性良くあっさりと書けそうね、ということでやり方を調べてみた。

まずは接続するところから。 参照設定でADOが使えるようにしておくこと。 DBは作業しているブックとなる。


    Dim conn As ADODB.connection
    Set conn = New ADODB.connection
    With conn
        .Provider = "Microsoft.ACE.OLEDB.12.0"
        .Properties("Extended Properties") = "Excel 12.0"
        .Open ThisWorkbook.FullName
    End With

次は SELECT 文を実行してみる。Sheet1のテーブルを全部読み込む。


    Dim rs As ADODB.Recordset
    Dim sql As String

    'SQLを作成
    sql = "SELECT * FROM [Sheet1$];" 

    'データを取得
    Set rs = New ADODB.Recordset
    rs.Open sql, conn, adOpenKeyset, adLockReadOnly

    '取得データをSheet2に展開
    '指定したセルを起点にまるっと貼り付ける
    Worksheets("Sheet2").Cells(1, 1).CopyFromRecordset rs

    '閉じるのを忘れずに
    rs.Close
    Set rs = Nothing

    conn.Close
    Set conn = Nothing
 

SQLは普通にJOINとかGROUP BYとかおなじみな感じで安心。 ただテーブル名やフィールド名の指定がエクセル独自な感じなのかなー。 この辺の書き方は要調査ですね。

ADODB.commandオブジェクトも使用可能みたいなので、パラメータも使えそう。 (今日はまだ試せてない。) 接続から切断までクラスモジュールにしておけばめんどくさくなくてよさげ。