2011年2月16日水曜日

adbが無いんだけど・・・

今、ちょっとAndroidアプリの構築をお試し中で、開発環境を構築しています。

で、環境構築中にadbの利用とあります。
このadbを利用するには事前にtoolsというフォルダにパスを通しておくことが必要なんですが、
パスを通したのにadbコマンドをたたいてもそんなの無いよ、と言われます。
(ちなみに、Windowsで環境を構築しています)

で、よくよく見てみたら、android-sdkの中に、toolsとは別に「platform-tools」というフォルダがあって、そちらにadb.exeというものを見つけました。

うん、これだ。

ここにパスを通すことで、使えるようになりました。


2011年2月8日火曜日

GMAILの便利機能

こんにちは。部隊長です。
今回はちょっと脱線してGMAILの便利機能を1個ご紹介。

ご存じGMAILは他のPOPメールアカウントからメールを受信する事ができます。
これのお蔭で、ローカルにたまっていたメール本体がネット上に置ける事になり、
実質どこでもお仕事状態です。怨みます

しかしながら、POPアカウントからの受信は、
設定→アカウント→各アカウントでメールをチェックをクリック
しないとオンデマンドで受信できなかったんですよね。

しかし最近Laboをなんとなく見ていると発見しました







これだ!

「POPアカウントの更新」



こいつを有効にしておくと、
受信トレイの更新ボタン



で他のPOPアカウントを受信してくれるんですね!
さすがGoogle先生!太っ腹!


ちなみに僕はGmailの受信トレイは未消化のタスク置き場として使っています。
消化したものはタグつけてさっさとアーカイブです。
メルマガとか揮発性の情報はタグもつけずアーカイブか削除です。


また便利機能が見つかったらまたUPしようと思います。おもうだけかもしれません。

2011年2月1日火曜日

[Excel]VBAコードのバージョン管理

こんばんは。部隊長です。
今回も引き続きExcelVBAのネタです。

Excelでの開発は、Excelファイル本体がバイナリであるため
バージョン管理を行う事が困難です。
(2007以降はzip解凍してxml形式になるようですが・・・)

また、VBAのモジュールは開発が進むにつれ、履歴がたまりファイルサイズが大きくなります。
モジュール自体が破損する事も多いようですね。
そういうときの対処として、モジュールを全てエクスポートし、インポートし直すと最適化される、
というのがネットに載っています。

それであれば、モジュール自体でソース管理してしまった方が良いでしょう。
モジュールはテキストファイルですので、バージョン管理ソフトとの親和性も高いです。

そこで、モジュールファイルを一括してエクスポート、
または全て解放後、一括してインポートするコードをご紹介します。

本体のファイル直下にForm、Class、Module、それぞれのフォルダを作成し、エクスポートするコードと、それらのフォルダからインポートするコードです。

一括エクスポートした後はVSSなりSVNなりにコミットしたって下さい。

''-----------------------------------------------------------------------
'' 全プロジェクトファイルエクスポート(ブック・シートに付随するコード以外)
'' 事前にマクロのセキュリティ→VBAのオブジェクトモデルへのアクセスを許可する事(実行時エラーになります。)
''-----------------------------------------------------------------------
Private Sub Export_All()

    Dim Path As String
    Dim i As Integer
    
    Const cls As String = "\Class\"
    Const FRM As String = "\Form\"
    Const MODL As String = "\Module\"
    
    Const EXT_MODL As String = ".bas"
    Const EXT_CLS As String = ".cls"
    Const EXT_FRM As String = ".frm"
    
    Path = ThisWorkbook.Path
    
    '' エクスポートフォルダ
    If Dir(Path & cls) = "" Then MkDir (Path & cls)
    If Dir(Path & FRM) = "" Then MkDir (Path & FRM)
    If Dir(Path & MODL) = "" Then MkDir (Path & MODL)
    
    With ActiveWorkbook.VBProject
    
        For i = 1 To .VBComponents.Count
        
            Select Case .VBComponents(i).Type
            Case 1  '' vbCompTypeModul
                .VBComponents(i).Export Path & MODL & .VBComponents(i).Name & EXT_MODL
            Case 2 '' vbCompTypeClassModul
                .VBComponents(i).Export Path & cls & .VBComponents(i).Name & EXT_CLS
            Case 3 '' vbCompTypeUserform
                .VBComponents(i).Export Path & FRM & .VBComponents(i).Name & EXT_FRM
            End Select
        Next
    
    End With
    
End Sub


''-----------------------------------------------
''--プロジェクトファイル洗い替え-----------------
''-----------------------------------------------
Private Sub Refresh()

    Call Release_All
    Call Import_All

End Sub


'' 全プロジェクトファイルリリース
Private Sub Release_All()

    Dim i As Integer
    Dim colComName As New Collection
    
    With ThisWorkbook.VBProject
   
        For i = 1 To .VBComponents.Count
            If .VBComponents(i).Type = 1 Or .VBComponents(i).Type = 2 Or .VBComponents(i).Type = 3 Then
                colComName.Add (.VBComponents(i).Name)
            End If
        Next
    
        For i = 1 To colComName.Count
            .VBComponents.Remove .VBComponents(colComName(i))
        Next
    
    End With
    
    Set colComName = Nothing
    

End Sub

'' 全プロジェクトファイルインポート
Private Sub Import_All()

    Dim Path As String
    Dim i As Integer
    
    Const cls As String = "\Class\"
    Const FRM As String = "\Form\"
    Const MODL As String = "\Module\"
    
    Const EXT_MODL As String = ".bas"
    Const EXT_CLS As String = ".cls"
    Const EXT_FRM As String = ".frm"
    
    Path = ThisWorkbook.Path
    
    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    Dim fileList As Object
    
    '' Cls
    Set fileList = fso.GetFolder(Path & cls).Files
    For Each file In fileList
        ActiveWorkbook.VBProject.VBComponents.Import Path & cls & file.Name
    Next
    
    '' Form
    Set fileList = fso.GetFolder(Path & FRM).Files
    For Each file In fileList
        If Right(file.Name, 4) = EXT_FRM Then
            ActiveWorkbook.VBProject.VBComponents.Import Path & FRM & file.Name
        End If
    Next
    
    '' Module
    Set fileList = fso.GetFolder(Path & MODL).Files
    For Each file In fileList
        ActiveWorkbook.VBProject.VBComponents.Import Path & MODL & file.Name
    Next
    

End Sub




これをアドインにしてインストールして置くと便利。
但し、シートオブジェクトやブックオブジェクトに記述されているコードは対象外となるので、
そこらへんは手作業なのが玉に傷。



ネタ元はネットに散らばっていた情報ですので、ご利用は自己責任でお願いいたします・・・