[VBA]OS名とエクセルバージョンの取得

簡単なことだけど忘れるのでメモ
Sub getOs()
    Dim osName As String
    'OSの名前とバージョン
    osName = Application.OperatingSystem
    '表示
    Debug.Print "OS:" & osName
End Sub
実行するとイミディエイトに表示される
OS:Windows (32-bit) NT 6.01

エクセルのバージョンが知りたいときは、
Sub getExcelVersion()
    Dim excelVer As String
    'Excelのバージョン
    excelVer = Application.Version
    '表示
    Debug.Print "Excel Version:" & excelVer
End Sub
実行するとイミディエイトに表示される
Excel Version:11.0

[Excel]ハイパーリンクの文字数制限

エクセル2003でハイパーリンクを設定すると長いパスの時は、途中で切れることがある
正確には調べてないけど、200文字を超えると怪しいっぽいな。
参考 エクセルでハイパーリンクを挿入したのですが、URLが長すぎて作動しません。解決方法はありますか? | はてな
[Excel] ハイパーリンクの最大文字数はあるのですか

[JavaScript]localstrage ローカルストレージ 覚書

ローカルストレージについて少し調べた事を書き留めておく
//保存
//id=保存時の名前,value=保存する値
localStorage.setItem(id,value);
//読み込み
var id = localStorage.getItem(id);
//削除
localStorage.clear();
clearを実行すると、全部消えるっぽい。

サンプル

<script language="javascript">
function doLoad(){
	var aaa = localStorage.getItem('aaa');
	if(aaa == ""){
	        alert("ローカルストレージにはデータがありません");	
	} else {
		document.getElementById("text1").value = aaa;
	        alert("ローカルストレージから読み込みました");	
	}
}

function doSave(){
	var aaa = document.getElementById("text1");
	if(aaa.value == ""){
	} else {
        	localStorage.setItem('aaa',aaa.value);
	        alert("ローカルストレージに保存しました");	
	}
}
function doDelete(){
	localStorage.clear();
	alert("ローカルストレージをクリアしました");	
}
</script>

参考

LocalStorageがおもいのほか便利すぎたのでまとめ

[css3]rotate 回転表示する

右に回転する

右に回転

div#box1 {
margin:0px;padding:0;
width:50px;height:50px;
background-color:#ccc;
-webkit-transform:rotate(45deg);
}

左に回転する

マイナス角度を設定すると左側に回転する

左に回転

div#box2 {
margin:0px;padding:0;
width:50px;height:50px;
background-color:#ccc;
-webkit-transform:rotate(-45deg);
}

X軸に回転する

縦向きに回転する。天地を逆さまにするイメージかな~

縦に回転

div#box3 {
margin:0px;padding:0;
width:50px;height:50px;
background-color:#ccc;
-webkit-transform:rotateX(180deg);
}

Y軸に回転する

横向きに回転する。回転扉みたいだね~

横に回転

div#box4 {
margin:0px;padding:0;
width:50px;height:50px;
background-color:#ccc;
-webkit-transform:rotateY(180deg);
}

Z軸に回転する

右向きに回転する。XYZの指定が無い時と同じ動作なのかな。

横に回転

div#box5 {
margin:0px;padding:0;
width:50px;height:50px;
background-color:#ccc;
-webkit-transform:rotateZ(45deg);
}
要素を回転させる場合は、上下左右の余白も考慮してあげないと、重なってしまう。
また、webkit系ブラウザー以外に対応させる場合は、以下の様に個別に記述が必要です。
sample{
-webkit-transform: rotate(180deg);
-moz-transform: rotate(180deg);
-o-transform: rotate(180deg);
-ms-transform: rotate(180deg);
}

親要素との関係

子要素を回転表示させると親要素からはみ出して表示する。

横に回転

div#oya{
margin:0;padding:0;width:100%;
background-color:#666;}
div#box6 {
margin:0px;padding:0;
width:50px;height:50px;
background-color:#ccc;
-webkit-transform:rotate(45deg);
}

親要素との関係2

親要素からはみ出した部分を非表示にする。

横に回転

div#oya2{
margin:0;padding:0;width:100%;
background-color:#666;overflow:hidden;}
div#box7{
margin:0px;padding:0;
width:50px;height:50px;
background-color:#ccc;
-webkit-transform:rotate(45deg);
}

[css3]メディアクエリーを使って切りわける

新iPadもRetinaディスプレイで出てきたこともあり、メディアクエリを少し見直すことを考えてみた。
Androidタブレットは、相変わらず放置プレーだけど・・・((;゜ロ゜)
新iPad向けはデバイスピクセル比率が2らしい。
/* デバイスピクセル比率2 表示幅2048px以下かつ横向き 新iPad向け */
@media only screen
          and (max-width: 2048px) 
          and (-webkit-min-device-pixel-ratio:2) 
          and (orientation: landscape) {
          }
 
/* デバイスピクセル比率2 表示幅1536px以下かつ縦向き 新iPad向け */
@media only screen
          and (max-width: 1536px) 
          and (-webkit-min-device-pixel-ratio:2) 
          and (orientation: portrait) {
          }
ちなみにiPhone4(S)向けはこんな感じ。
/* デバイスピクセル比率2 iPhone4向け 横向き */
@media only screen
          and (max-width: 960px) 
          and (-webkit-min-device-pixel-ratio:2) 
          and (orientation: landscape) {
          }
 
/* デバイスピクセル比率2 iPhone4向け 縦向き */
@media only screen
          and (max-width: 640px) 
          and (-webkit-min-device-pixel-ratio:2) 
          and (orientation: portrait) {
          }
あとは順番だね~

[VBA]Unicode エンコードとデコード

エクセルマクロ(VBA)でhtmlを読み込んでいろいろ加工する時にUnicodeをデコードする必要があったので、簡単な関数を作成してみた。
Public Function decodeUnicode(ByVal inputString As String) As String
'REM//=================================================================
'REM//プロシージャ名:入力文字列Unicode(%uXXXX形式)を復号する
'REM//-----------------------------------------------------------------
'REM//[引数]
'REM//<inputString> 入力文字列 %uXXXX(XXXX=16進数)
'REM//-----------------------------------------------------------------
'REM//[戻り値]
'REM//<string型>    復号した文字列
'REM//-----------------------------------------------------------------
'REM//[説明]
'REM//1バイト文字は、そのままではLenB関数で判別できない為、
'REM//StrConv関数で一時的に変換してから、LenB関数でバイト数を取得する
'REM//1バイト文字は、Unicode変換無し。そのまま出力する
'REM//=================================================================
    decodeUnicode = ""
    
    If Trim(inputString) = "" Then
        Exit Function
    End If
    
    Dim strB As String
    strB = ""
    Dim intLen As Integer
    intLen = Len(inputString)
    
    '--現在位置
    Dim crntPos As Long
    crntPos = 1
    
    Do While crntPos < intLen
        '--開始2文字
        If Mid(inputString, crntPos, 2) = "%u" Then
            '--4桁取得する。
            Dim wrk As String
            wrk = Mid(inputString, crntPos + 2, 4)
            If IsNumeric("&h" & wrk) Then
                strB = strB & ChrW("&h" & wrk)
            Else
                strB = strB & Mid(inputString, crntPos + 2, 4)
            End If
            crntPos = crntPos + 6
        Else
            '--1文字だけ取得する
            strB = strB & Mid(inputString, crntPos, 1)
            crntPos = crntPos + 1
        End If
    Loop
    decodeUnicode = strB
End Function

エンコードも作ってみた
Public Function encodeUnicode(ByVal inputString As String) As String
'REM//=================================================================
'REM//プロシージャ名:文字列をhtml表示用のUnicode(%uXXXX形式)に符号化する
'REM//-----------------------------------------------------------------
'REM//[引数]
'REM//<inputString> 入力文字列
'REM//-----------------------------------------------------------------
'REM//[戻り値]
'REM//<string型>    %uXXXX(XXXX=16進数)
'REM//-----------------------------------------------------------------
'REM//[説明]
'REM//1バイト文字は、そのままではLenB関数で判別できない為、
'REM//StrConv関数で一時的に変換してから、LenB関数でバイト数を取得する
'REM//1バイト文字は、Unicode変換無し。そのまま出力する
'REM//=================================================================
    encodeUnicode = ""
    
    If Trim(inputString) = "" Then
        Exit Function
    End If
    
    Dim strB As String
    strB = ""
    Dim intLen As Integer
    intLen = Len(inputString)
    
    Dim LoopCnt As Integer
    For LoopCnt = 1 To intLen
    
        If LenB(StrConv(Mid(inputString, LoopCnt, 1), vbFromUnicode)) > 1 Then
            strB = strB & "%u" & Hex(AscW(Mid(inputString, LoopCnt, 1)))
        Else
            strB = strB & Mid(inputString, LoopCnt, 1)
        End If
    Next
    
    encodeUnicode = strB
End Function

[Web]Unicode エンコードとデコードについて

世の中にあるエンコード unicode で調べてみても、自分のほしい情報はぜんぜん見つからないので、メモ。
4桁の16進数を記述しただけでは、デコードできない。
必ず、頭に%uが必要。
ウィキペディアでも記載されていない。
http://ja.wikipedia.org/wiki/Unicode
エンコードについては、あちこちでまとめられているが、例が載っているサイトは皆無。
Unicodeのエンコード/デコードできる便利なサイト

みんなの知識【ちょっと便利帳】 - URLエンコード/デコードツール =Unicode=
http://www.benricho.org/moji_conv/16-URLencode_Unicode.html
ちなみに「ケセラセラ」をエンコードすると以下のように変換される。
%u30B1%u30BB%u30E9%u30BB%u30E9
(※そのままWebに載せると「ケセラセラ」とデコード(復号)されて表示しちゃうので、パーセント「%」を文字参照で表示している)
wikiでパーセント記号
自分はすぐに混同してしまうエンコードの中でUTF-8でのエンコードがある。
UTF-8で「ケセラセラ」をエンコードすると以下のように変換される。
%E3%82%B1%E3%82%BB%E3%83%A9%E3%82%BB%E3%83%A9
UFT-8でエンコードしたものは、そのままhtmlに記述してもデコード(復号)されない。
蛇足
文字参照で表示すると
10進数では、
&#12465;&#12475;&#12521;&#12475;&#12521;

16進数では
&#x30B1;&#x30BB;&#x30E9;&#x30BB;&#x30E9;

となる

[Apache] htaccessファイルの文字コード

htaccessファイル自身の文字コードについて、こうだ!って書かれているのが見つからなかった。 ただし、改行コードについては、書かれているサイトがあったので、改行コードを注意すればいいのかもしれない。 参考 .htaccess ファイルの使い方 | ミケネコの htaccess リファレンス