背景:私は自分のWebアプリケーションの主要な新機能バージョンを作成していますが、ユーザーインターフェイスも更新して「祝う」のがいいと思いました。専門的な再設計の予算がないので、代わりにstyle.cssシートに微妙な変更を加えることができると思いました。
理想的には、私のstyle.cssシート(色はWindows XPを中心に設計されています)をインポートし、新しいstyle.cssシートをWindows7のスタイルでエクスポートするプログラムがあります。cssシートをインポートできるプログラムを見たことがありますが自分で各色を試してからエクスポートします[時間も目もありません]。色の間に何らかの相関関係を保ちながら、CSSシート全体を自動的に変更するものは見たことがありません。
次のVBAコードを作成しました[大幅に改善できることはわかっていますが、実験のために一緒に投げました]これにより、style.cssシートのすべての色が変更されます(アクティブなExcelシートの列Aに貼り付けられている場合) 。CSSの色が16進数で表されていると仮定すると、たとえば#123456(12は赤のコンポーネント、34は緑のコンポーネント、56は青のコンポーネント)コードはそのままで、色の赤のコンポーネントを大きくします。そして青い成分が少ない。[関数makeWarmerを参照してください]
Sub changeCSSColors()
For j = 1 To 1390 'number of rows
a = Cells(j, 1)
b = InStr(a, "#")
If b > 0 Then
aHex = UCase(Mid(a, b + 1, 6))
If isHexS(aHex) Then
a = Left(a, b) + makeWarmer(aHex) + Mid(a, b + 7)
Cells(j, 1) = a
End If
End If
Next j
End Sub
Function isHex(aChar)
If InStr("ABCDEFabcdef01234567890", aChar) > 0 Then isHex = True Else isHex = False
End Function
Function isHexS(aString)
For j = 1 To Len(aString)
b = Mid(aString, j, 1)
If Not isHex(b) Then isHexS = False: Exit Function
Next j
isHexS = True
End Function
Function makeWarmer(aString)
b = addOneToChar(Mid(aString, 1, 1))
c = subOneToChar(Mid(aString, 5, 1))
makeWarmer = addOneToChar(Mid(aString, 1, 1)) + Mid(aString, 2, 1) + addOneToChar(Mid(aString, 3, 1)) + Mid(aString, 4, 1) + addOneToChar(Mid(aString, 5, 1)) + Mid(aString, 6, 1)
End Function
Function swapBlueGreen(aString)
swapBlueGreen = Mid(aString, 3, 2) + Mid(aString, 1, 2) + Mid(aString, 5, 2)
End Function
Function addOneToChar(aChar)
If (aChar >= "0" And aChar <= "8") Or (aChar >= "A" And aChar <= "E") Then
aChar = Chr(Asc(aChar) + 1)
ElseIf aChar = "9" Then
aChar = "A"
ElseIf aChar = "F" Then
aChar = "F"
End If
addOneToChar = aChar
End Function
Function subOneToChar(aChar)
If (aChar >= "1" And aChar <= "9") Or (aChar >= "B" And aChar <= "F") Then
aChar = Chr(Asc(aChar) - 1)
ElseIf aChar = "A" Then
aChar = "9"
ElseIf aChar = "0" Then
aChar = "0"
End If
subOneToChar = aChar
End Function
また、関数SwapBlueGreenを使用して、青と緑のコンポーネントを変更して実験しました。しかし、どちらの機能でも満足のいく視覚的結果は得られませんでした。[Webアプリケーションが奇妙に見えた]
makeWarmerやSwapBlueGreenの代わりに、私が使用できる関数のアイデア、おそらく何らかのマスキングを持っている人はいますか?あるいは、私がやりたいことを実行するソフトウェアがあるかもしれません。