タグ:オススメ ( 96 ) タグの人気記事
[VBScript] 半角カナを全角へ、全角記号&英数は半角へ変換する関数
どーもボキです。

AdjustStringは
 ・半角カナ → 全角カナ
 ・全角記号 → 半角記号
 ・全角英数 → 半角数字
と変換する関数。

半角カナは、濁点(゛)や半濁点(゜)が別の文字となってしまうため、
今回は、ひとつの関数内で変換元の文字管理と変換処理を行っている。

全角と半角とで文字の並びが統一されていなかったため、
Case文処理が必須だったものの、可能な限り定型処理化した。
a0021757_12555734.gif
SetScriptHost("cscript")

s = "どーもボキです"
dprintf " 前:" & s
dprintf " 後:" & AdjustString(s)
dprintf ""

s = "http://yozda.exblog.jp"
dprintf " 前:" & s
dprintf " 後:" & AdjustString(s)
dprintf ""

s = "2004/05~"
dprintf " 前:" & s
dprintf " 後:" & AdjustString(s)
dprintf ""

' ===============================================================================
' 全角→半角
Function AdjustString(iStr)
Dim i,a1,a0,r,s,s0,s1

i = 1
r = ""
Do While i <= Len(iStr)
a1 = 1
a0 = 0
s0 = ""
s = Mid(iStr, i, 1)
r = s
If ( Asc(s) >= Asc("。") ) And ( Asc(s) <= Asc("゚") ) Then
' 半角カナ → 全角
Select Case s
Case "。" r = "。"
Case "ヲ" r = "ヲ"
Case "ッ" r = "ッ"
Case "ー" r = "ー"
Case Else
If Asc(s) >= Asc("゙") Then
s0="゙": s1="゛": a1=1
ElseIf Asc(s) >= Asc("ワ") Then
s0="ワ": s1="ワ": a1=4
ElseIf Asc(s) >= Asc("ラ") Then
s0="ラ": s1="ラ": a1=1
ElseIf Asc(s) >= Asc("ヤ") Then
s0="ヤ": s1="ヤ": a1=2
ElseIf Asc(s) >= Asc("ム") Then
s0="ム": s1="ム": a1=1
ElseIf Asc(s) >= Asc("マ") Then
s0="マ": s1="マ": a1=1
ElseIf Asc(s) >= Asc("ハ") Then
s0="ハ": s1="ハ": a1=3
If Mid(iStr, i+1, 1) = "゙" Then a0=1
If Mid(iStr, i+1, 1) = "゚" Then a0=2
ElseIf Asc(s) >= Asc("ナ") Then
s0="ナ": s1="ナ": a1=1
ElseIf Asc(s) >= Asc("ツ") Then
s0="ツ": s1="ツ": a1=2
If Mid(iStr, i+1, 1) = "゙" Then a0=1
ElseIf Asc(s) >= Asc("タ") Then
s0="タ": s1="タ": a1=2
If Mid(iStr, i+1, 1) = "゙" Then a0=1
ElseIf Asc(s) >= Asc("カ") Then
s0="カ": s1="カ": a1=2
If Mid(iStr, i+1, 1) = "゙" Then a0=1
ElseIf Asc(s) >= Asc("ア") Then
s0="ア": s1="ア": a1=2
ElseIf Asc(s) >= Asc("ャ") Then
s0="ャ": s1="ャ": a1=2
ElseIf Asc(s) >= Asc("ァ") Then
s0="ァ": s1="ァ": a1=2
ElseIf Asc(s) >= Asc("、") Then
s0="、": s1="、": a1=4
ElseIf Asc(s) >= Asc("「") Then
s0="「": s1="「": a1=1
End If
End Select
ElseIf ( Asc(s) >= Asc(" ") ) And ( Asc(s) <= Asc("z") ) Then
' 全角記号&英数 → 半角
Select Case s
Case " " r=" "
Case "," r=","
Case "." r="."
Case ":" r=":"
Case ";" r=";"
Case "?" r="?"
Case "!" r="!"
Case "^" r="^"
Case "_" r="_"
'Case "ー" r="-" ' 全角文字で利用するため半角変換しない
Case "―" r="-"
Case "‐" r="-"
Case "/" r="/"
Case "\" r="\"
'Case "
" r="~" ' 全角文字で利用するため半角変換しない
Case "
" r="|"
Case "
" r="'"
Case "”" r=""""
Case "(" r="("
Case ")" r=")"
Case "[" r="["
Case "]" r="]"
Case "{" r="{"
Case "}" r="}"
'Case "「" r="「" ' 全角文字で利用するため半角変換しない
'Case "」" r="」" ' 全角文字で利用するため半角変換しない
Case "+" r="+"
Case "-" r="-"
Case "=" r="="
Case "<" r="<"
Case ">" r=">"
Case "′" r="'"
Case "″" r=""""
Case "¥" r="\"
Case "
" r="$"
Case "
" r="%"
Case "
" r="#"
Case "
" r="&"
Case "
" r="*"
Case "
" r="@"
Case Else
If Asc(s) >= Asc("
") Then
s0="
": s1="a"
ElseIf Asc(s) >= Asc("
") Then
s0="
": s1="A"
ElseIf Asc(s) >= Asc("
") Then
s0="
": s1="0"
End If
End Select
End If
If s0 <> "
" Then r=Chr( (Asc(s) -Asc(s0))*a1 +Asc(s1) +a0) ' 変換処理
AdjustString = AdjustString & r

i = i +1 +Abs(CInt(a0 > 0))
Loop
End Function
' ===============================================================================
' 実行ホストを切り替える
Sub SetScriptHost(HostName)
Dim i,s

If InStr(LCase(WSCript.FullName), LCase(HostName)) <> 0 Then Exit Sub

s = HostName & "
""" & WScript.ScriptFullName & """"
If WScript.Arguments.Count > 0 Then
For i = 0 To WScript.Arguments.Count -1
s = s &"
""" & WScript.Arguments.Item(i) & """" ' 引数
Next
End If
CreateObject("
WScript.Shell").Run s
WScript.Quit
End Sub
' -------------------------------------------------------------------------------
' デバッグ
Dim objDbg
' クラス
Class TDebug
Dim FCScript

' 初期化処理
Private Sub Class_Initialize()
FCScript = InStr(LCase(WSCript.FullName), "
cscript") > 0
End Sub

' 終了処理
Private Sub Class_Terminate()
If Not FCScript Then Exit Sub

WScript.StdOut.WriteLine NOW & "
[END]"
WScript.StdIn.ReadLine
End Sub

' CScriptホストかどうか
Public Property Get CScript
CScript = FCScript
End Property

' デバッグメッセージ処理
Public Sub dprintf(v)
Dim i,s,ityp
If Not FCScript Then Exit Sub

s = v
ityp = VarType(v)
If ityp = vbBoolean Then
s = CStr(v)
ElseIf VarType(v) >= vbArray Then
s = "
"
For i = 0 to UBound(v)
s = s & "
dprintf(" &i& ")=" & v(i) & vbCRLF
Next
End If
WScript.Echo s
End Sub
End Class
' 関数
Sub dprintf(v)
If VarType(objDbg) = vbEmpty Then
Set objDbg = New TDebug
objDbg.dprintf(NOW & "
" & WScript.ScriptFullName)
End If
objDbg.dprintf(v)
End Sub
' -------------------------------------------------------------------------------
[VBScript] 全角文字を半角文字へ変換する

[PR]
by yozda | 2017-08-18 20:40 | プログラミング | Trackback | Comments(0)
[VBScript] 全角英数&記号を半角へ変換する
どーもボキです。

定型業務のツール支援するにも、文字バイトが統一されていないとそれすらままならない。
そういうときは、以下のZenToHan関数で文字サイズを半角に統一するとよい。
a0021757_09255103.png
ZenToHan関数での変換事例

SetScriptHost("cscript")

s = "yozda ( … > Z_ ̄∂ "
dprintf " 前:" & s
dprintf " 後:" & ZenToHan(s)

' ===============================================================================
' 全角→半角
Function ZenToHan(iStr)
Dim i,r

r = ""
For i = 1 To Len(iStr)
r = r & ZenToHan_func(Mid(iStr, i, 1))
Next
ZenToHan = r
end function
' 関数
Function ZenToHan_func(iStr)
Dim r
r = iStr
ZenToHan_func = r
If Asc(r) < Asc(" ") Then Exit Function
If Asc(r) > Asc("z") Then Exit Function

Select Case r
Case " " r = " "
Case "," r = ","
Case "." r = "."
Case ":" r = ":"
Case ";" r = ";"
Case "?" r = "?"
Case "!" r = "!"
Case "^" r = "^"
Case "_" r = "_"
Case "ー" r = "-"
Case "―" r = "-"
Case "‐" r = "-"
Case "/" r = "/"
Case "~" r = "~"
Case "|" r = "|"
Case "’" r = "'"
Case "”" r = """"
Case "(" r = "("
Case ")" r = ")"
Case "[" r = "["
Case "]" r = "]"
Case "{" r = "{"
Case "}" r = "}"
Case "+" r = "+"
Case "-" r = "-"
Case "=" r = "="
Case "<" r = "<"
Case ">" r = ">"
Case "′" r = "'"
Case "″" r = """"
Case "¥" r = "\"
Case "
" r = "$"
Case "
" r = "%"
Case "
" r = "#"
Case "
" r = "&"
Case "
" r = "*"
Case "
" r = "@"
Case Else
If Asc(r) >= Asc("
") Then
r = Chr(Asc(r) -Asc("
") +Asc("a"))
ElseIf Asc(r) >= Asc("
") Then
r = Chr(Asc(r) -Asc("
") +Asc("A"))
ElseIf Asc(r) >= Asc("
") Then
r = Chr(Asc(r) -Asc("
") +Asc("0"))
End If
End Select
ZenToHan_func = r
End Function
' ===============================================================================
' 実行ホストを切り替える
Sub SetScriptHost(HostName)
Dim i,s

If InStr(LCase(WSCript.FullName), LCase(HostName)) <> 0 Then Exit Sub

s = HostName & "
""" & WScript.ScriptFullName & """"
If WScript.Arguments.Count > 0 Then
For i = 0 To WScript.Arguments.Count -1
s = s &"
""" & WScript.Arguments.Item(i) & """" ' 引数
Next
End If
CreateObject("
WScript.Shell").Run s
WScript.Quit
End Sub
' -------------------------------------------------------------------------------
' デバッグ ※ここだけ抜粋してもOK
Dim objDbg
' クラス
Class TDebug
Dim FCScript

' 初期化処理
Private Sub Class_Initialize()
FCScript = InStr(LCase(WSCript.FullName), "
cscript") > 0
End Sub

' 終了処理
Private Sub Class_Terminate()
If Not FCScript Then Exit Sub

WScript.StdOut.WriteLine NOW & "
[END]"
WScript.StdIn.ReadLine
End Sub

' CScriptホストかどうか
Public Property Get CScript
CScript = FCScript
End Property

' デバッグメッセージ処理
Public Sub dprintf(v)
Dim i,s,ityp
If Not FCScript Then Exit Sub

s = v
ityp = VarType(v)
If ityp = vbBoolean Then
s = CStr(v)
ElseIf VarType(v) >= vbArray Then
s = "
"
For i = 0 to UBound(v)
s = s & "
dprintf(" &i& ")=" & v(i) & vbCRLF
Next
End If
WScript.Echo s
End Sub
End Class
' 関数
Sub dprintf(v)
If VarType(objDbg) = vbEmpty Then
Set objDbg = New TDebug
objDbg.dprintf(NOW & "
" & WScript.ScriptFullName)
End If
objDbg.dprintf(v)
End Sub



[PR]
by yozda | 2017-08-16 22:11 | プログラミング | Trackback | Comments(0)
[3DS] ファイアーエムブレム エコーズ
どーもボキです。

★★★★★

a0021757_06534981.jpg
ノーマル&クラシックでクリア。クリアまでのプレイ時間40h。
特別版に付属していたDLC「星の神殿」もフル活用。

1章は、DLCで部隊を鍛え上げまったく歯ごたえなし。
とはいえ、ファミコン時代にやり遂げたドゼー撃破は達成できず。
さすがに村人ループをやる気力はなく、ある程度強くなったところでストーリを進めた。

前々作の「覚醒」、前作の「if」に比べ、グラフィックは格段に進化した。
「if」から採用されたマップからの先頭シーンへのシームレスな突入はさらに進化。
キャラクタの頭身も上がり、戦闘シーンのリアル度が増した。

グラフィックは進化しているものの、ファミコンを忠実に再現したためか、
ファミコン時代の手抜きマップがそのまま再現されている。

少年時代のアルム&セリカの関係など、ファミコン時代にはなかった(と思う)、
そこらのストーリー肉付けがあるものの、本筋はほぼ原作どおり(だったと思う)。

ているものの、仲間との支援会話はあっさり。
ファミコン時代には支援会話すらなかった(と思う)ので、そこは進化といえるか。

せっかくリメイクするなら、マップを作り直す。
キャラ間の支援会話をもっと充実させる、などあっても良かったのでは?

最終ステージやクリア後は、アルムとセリカが一緒に行動することになるが、
この二人に支援会話がないのはもったいない。ラスボス前も「気をつけていきましょう」の一言のみ。

そんな主人公二人のあっさりな会話に対し、最終ステージのキャラごとの演出やBGMには萌えた。
特にこのリメイクはBGMに気合が入りまくっている。

以下は、最終ステージの「神よ、その黄昏よ」。
ファミコン版⇒3DS版と流れるので、そのリメイクの素晴らしさを聴いてほしい。
[3DS] ファイアーエムブレム エコーズ

[PR]
by yozda | 2017-05-23 21:30 | ゲーム | Trackback | Comments(4)
[3DS] マリオ&ルイージRPG4
おはヨーグルト。どーもボキです。

a0021757_08411519.jpg
息子から借りていたソフト、ようやくクリアした。
当時3年生だった(今は6年生)が怒りながら、時にはキレて泣きながらプレイしてたゲームだ。

パッケージイラストからイメージできないだろうが、それくらい難しい。

他のゲームではダレ易いバトルシーンは、敵の攻撃に合わせた反撃・回避が必要で最後まで楽しく飽きる間がない。
ただ、巨大ボス戦でのジャイロ操作には慣れず、最後まで苦労した。

あとラスボスが強すぎて勝てないので、ここだけはイージーモードを利用。

フィールドは、細切れのマップ切り替え形式になっているため、あまり広くは感じない。
マリオとルイージのブラザーアクション(協力技)を駆使しての謎解きもなかなか面白い。ただし、迷うことはないかな。

ルイージが活躍する今作、なかなかオススメ。
クリアまでのプレイ、50時間。

[PR]
by yozda | 2017-03-06 08:29 | ゲーム | Trackback | Comments(0)
LEDシーリングライト HH-LC714A ~12畳 を買った。
a0021757_11032251.jpg
おはヨーグルト。どーもボキです。

リビングのメイン照明を変えた。
16畳(といっても、ダイニングやキッチンには別の照明あり)に対して、12畳仕様だったから明るさに少し不安があったものの、
付けてみると、明るすぎるくらい。

色味や明るさを調整できたり、ダウンライトにしてみたり(写真)、時間帯や気分で照明演出を変えられてかなり良い。

感心したのが留守番機能。
指定時間帯での点灯。そして、その時間幅を日常起き得るバラツキ分を自動調整してくれる。

なぜか、14畳〜のダウンライト付仕様はない。
ビックカメラで、¥36,801。オススメ。


[PR]
by yozda | 2016-11-08 10:56 | 物・モノ・もの | Trackback | Comments(0)
B'z.Live-Gym.2015.-EPIC NIGHT-.BluRay
こんばんワイン。どーもボキです。

youkuで見れますな。
a0021757_18283668.jpg


B'z Live動画 高解像度なもの
[PR]
by yozda | 2016-09-17 18:28 | ギター | Trackback | Comments(0)
[料理] 道端に生えてたニラでニラ醤油を作る
a0021757_18563970.jpg
こんばんワイン。どーもボキです。

今年もニラ醤油をつくった。
ニラは機械で微塵切りにしてみた。

だーたーでまいうーな調味料の出来上がり。
豆腐にかけてもよし、納豆に入れてもよし。

[PR]
by yozda | 2016-06-26 18:49 | 暮らし | Trackback | Comments(0)
[VBScript] ブラウザでのダウンロードダイアログ操作を自動化する。
こんにチワワ。どーもボキです。

a0021757_1545294.png
Firefoxでは、ZIPファイルなどのリンクをクリックすると、
「***を開く」というタイトルのダイアログが表示されるため、ダウンロードはユーザ操作が必要。
(IEでは、「ファイルのダウンロード」。Chromeではダイアログが表示されることなくダウンロードが始まる)

そのユーザ操作を自動化するスクリプト。
1.「***を開く」というタイトルのウィンドウがある場合は、それを最前面に移動する。
2.Alt+Sで、「ファイルを保存する」を選択する。
3.Enterで、ダイアログを閉じる。

実行状態がわかるように、CScriptで実行させている。
実行ホストの切り替えには、[VBScript] 引数を引き継いだ上で、指定したホストで実行するを使った
SetScriptHost("CScript")    ' CScriptで実行

Set objWS = WScript.CreateObject("WScript.Shell")
While True
If objWS.AppActivate("を開く") Then
WScript.StdOut.WriteLine "実行"
WScript.Sleep 500
objWS.SendKeys "%(S)" ' 保存するボタンにフォーカス
WScript.Sleep 500
objWS.SendKeys "{ENTER}" ' 保存するボタンを押下
End If
WScript.Sleep 1000
Wend
' -------------------------------------------------------------------------------
' 実行ホストを切り替える
Sub SetScriptHost(HostName)
If InStr(LCase(WSCript.FullName),LCase(HostName)) <> 0 Then Exit Sub

s = HostName & " """ & WScript.ScriptFullName & """"
If WScript.Arguments.Count > 0 Then
For i = 0 To WScript.Arguments.Count -1
s = s &" """ & WScript.Arguments.Item(i) & """"
Next
End If
CreateObject("WScript.Shell").Run s
WScript.Quit
End Sub



[PR]
by yozda | 2016-06-25 15:46 | プログラミング | Trackback(1) | Comments(0)
[洋画] オデッセイ
こんにチワワ。どーもボキです。

a0021757_15593571.jpg
随分前に映画館で見たこの映画、先日DVD/ブルーレイがリリースされたみたいだ。

火星での独りサバイバル、小さい頃、火星にはわずかな酸素があると本で読んだ。
少しの間なら火星でも生活ができるかもしれない。と空想したものだ。

実際の火星の大気は、その95%が二酸化炭素、酸素はたったの0.13%(地球は20%が酸素、79%が窒素、1%がそれ以外)。
気圧も地球の1/100、こんな中にそのまま放り出されたらたちまち体中が干からびて死んでしまう。


この映画はNASAの協力も得て製作されたときき、現実的な視点での火星サバイバルでどこようなものになるのか興味があった。


部隊は近未来の火星、複数人でのチームを組み、火星の地表調査をする中、
巨大な砂嵐にみまわれ、帰還用ロケット倒壊の懸念により探査チームは脱出を余儀なくされた。

その中、ひとり行方不明となる主人公。


そもそもの設定として、この巨大な砂嵐の発生がおかしいらしい。

地球の1/100の大気圧。つまり火星の大気ははかなり真空に近い状態のため、
火星で100km/hの風がふいても、それは地球でいう1km/hの強さしかない。

居住ブースの隔壁を吹き飛ばしたときも、ビニールシートだけで壁を作ったりとちょっと無理があった。
砂嵐は良いとしても、ビニールシート隔壁にはちょっと無理があるだろうと思った。


しかし、それ以外はとてもオモシロかった。
水素を燃やして水を発生させたり、クルーが残した排泄物を栄養にジャガイモを育てたり、
プルトニウムの崩壊熱で暖をとったり、過去に探査用として送り込んだ装置を活用して...。

まだ見てない人はぜひ見て欲しい。

ちなみに、ここ最近は、火星がもっとも地球に近づいている状態らしい。
南西に見える赤く明るい星が火星。タイムリーですな。
a0021757_17364970.jpg
中央が火星



[PR]
by yozda | 2016-06-04 16:11 | 映画・TV・本 | Trackback | Comments(2)
[Excel] 文字入力のみで自動色分けするスケジュールフォーマットを作成する
こんにチワワ。どーもボキです。

Excelブックを共有設定した場合、複数ユーザからセルへの文字入力は可能なものの、
図形(オートシェイプ)編集はできなくなる。

そのため、図形を使わず、セルへの文字入力のみスケジュールを作成する方法を紹介する。
またこの方法ならば、図形を使うよりも、日程の延長/短縮や色分けの編集も簡単に行える。
a0021757_21331285.gif
スケジュールのイメージ(■や★の記入のみで色分けされる)


以下を利用し実現する。
 ・ワークシート関数
 ・記号文字(■、●、★など)
 ・条件付き書式 機能

a0021757_14315029.gif
左列を参照する数式を入力する。(参照先がブランクの場合、参照元セルが「0」を表示)

a0021757_14314312.gif
参照先セルに「=""」を入力すれば、参照元セルもブランク表示となる。

a0021757_14313589.gif
■や★を入力し、スケジュールを書く。★の右列(P2)には、「=""」を入力)

a0021757_14312929.gif
条件付き書式を設定し、■であり、=左列ならば、フォント(文字)とパターン(塗りつぶし)に同じ色を指定する。

a0021757_14312376.gif
同様に、「■であり、≠左列」と「★である」条件での書式を追加する。

a0021757_14311899.gif
文字入力のみで、該当箇所が塗りつぶされるスケジュールフォーマットが完成。


Excel2003の場合、条件付き書式は3つまでに対し、2007以降は無制限となっている。

そのため、条件付き書式を使い「=0」の場合は、フォントの色を白にするとしておけば、
参照先が「0」と表示されても見えないので問題ない。(「=""」の入力が不要)

また、より多くの記号を使い、細かなスケジュールを作成することができる。


[PR]
by yozda | 2016-05-14 14:49 | プログラミング | Trackback | Comments(0)