開発Tips/PukiWiki
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#contents
*記法 [#e7c8f93d]
**複数行プラグイン [#e7c8b121]
複数行プラグインの引数に連続した'{'を記述する場合は、引数...
#xxx{{{
...}}...
}}}
**特殊記号のエスケープ [#nb9bfb23]
数値参照文字を使用することで、疑似的にエスケープすること...
例)取消線~
以下のように記述すると、取り消し線と見なされてしまう。(%...
%%hogehoge%%
以下のように「%」を文字コードで指定することで、記号をその...
%%hogehoge%%
*便利ツール [#w87a5866]
**Excelの表をPukiwiki記法に変換するマクロ [#tfee8dac]
以下の関数をExcelマクロとして実行すると、変換した文字列型...
-注意点
--ヘッダ/フッタ行の末尾の h/f は付与されないため、適宜追...
--書式設定行(末尾c)も必要であれば追加が必要
#code(vb){{
' *****************************************
' 選択範囲のセルからPukiwiki記法の表に変換
'
' 引数:
' blWithFormat 書式の有無
' 戻り値:
' Pukiwiki記法に変換した文字列
' *****************************************
Private Function ConvertPukiWiki( _
ByVal blWithFormat As Boolean _
) As String
Dim strResult As String ' PukiWiki記法文字列
Dim intRowS As Integer ' 範囲開始行
Dim intRowE As Integer ' 範囲終了行
Dim intColS As Integer ' 範囲開始列
Dim intColE As Integer ' 範囲終了列
Dim intRow As Integer ' 行ループカウンタ
Dim intCol As Integer ' 列ループカウンタ
Dim blMargeUpRow As Boolean ' 上の行と連結するフ...
Dim blMargeRightCol As Boolean ' 右の列と連結するフ...
' 範囲を取得
intRowS = Selection(1).row
intRowE = Selection(Selection.Count).row
intColS = Selection(1).Column
intColE = Selection(Selection.Count).Column
strResult = ""
' 範囲をループ
For intRow = intRowS To intRowE
For intCol = intColS To intColE
Dim rngCrnt As Range ' 処理カレントセル
Dim rngCrntMerge As Range ' 処理カレントセ...
' セル区切り
strResult = strResult & "|"
' フラグクリア
blMargeUpRow = False
blMargeRightCol = False
' カレントセル取得
Set rngCrnt = Cells(intRow, intCol)
Set rngCrntMerge = rngCrnt.MergeArea
' 結合セルの場合
If rngCrnt.MergeCells Then
' 1つ前の行のセルも一緒に結合されている場合
If intRow > intRowS Then
If Cells(intRow - 1, intCol).MergeAre...
blMargeUpRow = True
End If
End If
' 1つ前の行のセルへ結合
If blMargeUpRow Then
strResult = strResult & "~"
Else
' 1つ右の列のセルも一緒に結合されてい...
If intCol < intColE Then
If Cells(intRow, intCol + 1).Merg...
blMargeRightCol = True
End If
End If
' 1つ右の列のセルへ結合
If blMargeRightCol Then
strResult = strResult & ">"
' 結合セルの一番右上のセルの場合
Else
' セル情報
strResult = strResult & GetCellIn...
End If
End If
' 単独セルの場合
Else
' セル情報
strResult = strResult & GetCellInfoStr(rn...
End If
Next
' 行終端のセル区切り
strResult = strResult & "|" & vbCrLf
Next
' 戻り値
ConvertPukiWiki = strResult
End Function
Private Function GetCellInfoStr( _
ByRef rngCrnt As Range, _
ByVal blWithFormat As Boolean _
) As String
Dim strResult As String ' セル情報文字列
' 書式あり
If blWithFormat Then
' セル情報
strResult = GetCellAlignmentStr(rngCrnt) & _
GetCellForeColorStr(rngCrnt) & _
GetCellBackColorStr(rngCrnt) & _
GetCellValueStr(rngCrnt)
' 書式なし
Else
' セル情報
strResult = GetCellValueStr(rngCrnt)
End If
' 戻り値
GetCellInfoStr = strResult
End Function
Private Function GetCellAlignmentStr( _
ByRef rngCrnt As Range _
) As String
Dim strResult As String ' アライメント文字列
' セルの水平アライメントで分岐
Select Case rngCrnt.HorizontalAlignment
' 初期状態
Case xlGeneral
strResult = ""
' 左
Case xlLeft
strResult = ""
' 中央
Case xlCenter
strResult = "CENTER:"
' 右
Case xlRight
strResult = "RIGHT:"
End Select
' 戻り値
GetCellAlignmentStr = strResult
End Function
Private Function GetCellForeColorStr( _
ByRef rngCrnt As Range _
) As String
Dim strResult As String ' 前景色文字列
' セルの前景色をRGB文字列として取得
If Not IsNull(rngCrnt.Font.Color) Then
strResult = "COLOR(#" & GetRGBStr(rngCrnt.Font.Co...
End If
' 前景色:黒の場合は削除
If strResult = "COLOR(#000000):" Then
strResult = ""
End If
' 戻り値
GetCellForeColorStr = strResult
End Function
Private Function GetCellBackColorStr( _
ByRef rngCrnt As Range _
) As String
Dim strResult As String ' 背景色文字列
' セルの背景色をRGB文字列として取得
If Not IsNull(rngCrnt.Interior.Color) Then
strResult = "BGCOLOR(#" & GetRGBStr(rngCrnt.Inter...
End If
' 背景色パターンが純色以外は削除
If rngCrnt.Interior.Pattern <> xlSolid Then
strResult = ""
End If
' 戻り値
GetCellBackColorStr = strResult
End Function
Private Function GetRGBStr( _
ByVal lngColor As Long _
) As String
Dim strRGB As String ' RGB文字列
Dim strHex As String ' 16進文字列
' 16進文字列に変換
strHex = Hex(lngColor)
' 0パディングして8桁にする
strHex = String(8 - Len(strHex), "0") & strHex
' R値を取り出す(7,8文字目)
strRGB = Mid(strHex, 7, 2)
' G値を取り出す(5,6文字目)
strRGB = strRGB & Mid(strHex, 5, 2)
' B値を取り出す(3,4文字目)
strRGB = strRGB & Mid(strHex, 3, 2)
' 戻り値
GetRGBStr = strRGB
End Function
Private Function GetCellValueStr( _
ByRef rngCrnt As Range _
) As String
Dim strResult As String ' セルの値文字列
' セルの値を取得
strResult = rngCrnt(1, 1).Value
' セル内改行を変換
strResult = Replace(strResult, vbLf, "&br;")
' 特殊文字を数値参照文字に変換
strResult = Replace(strResult, "|", "|") ' |
' strResult = Replace(strResult, " ", " ") ' 半角...
' 戻り値
GetCellValueStr = strResult
End Function
}}
終了行:
#contents
*記法 [#e7c8f93d]
**複数行プラグイン [#e7c8b121]
複数行プラグインの引数に連続した'{'を記述する場合は、引数...
#xxx{{{
...}}...
}}}
**特殊記号のエスケープ [#nb9bfb23]
数値参照文字を使用することで、疑似的にエスケープすること...
例)取消線~
以下のように記述すると、取り消し線と見なされてしまう。(%...
%%hogehoge%%
以下のように「%」を文字コードで指定することで、記号をその...
%%hogehoge%%
*便利ツール [#w87a5866]
**Excelの表をPukiwiki記法に変換するマクロ [#tfee8dac]
以下の関数をExcelマクロとして実行すると、変換した文字列型...
-注意点
--ヘッダ/フッタ行の末尾の h/f は付与されないため、適宜追...
--書式設定行(末尾c)も必要であれば追加が必要
#code(vb){{
' *****************************************
' 選択範囲のセルからPukiwiki記法の表に変換
'
' 引数:
' blWithFormat 書式の有無
' 戻り値:
' Pukiwiki記法に変換した文字列
' *****************************************
Private Function ConvertPukiWiki( _
ByVal blWithFormat As Boolean _
) As String
Dim strResult As String ' PukiWiki記法文字列
Dim intRowS As Integer ' 範囲開始行
Dim intRowE As Integer ' 範囲終了行
Dim intColS As Integer ' 範囲開始列
Dim intColE As Integer ' 範囲終了列
Dim intRow As Integer ' 行ループカウンタ
Dim intCol As Integer ' 列ループカウンタ
Dim blMargeUpRow As Boolean ' 上の行と連結するフ...
Dim blMargeRightCol As Boolean ' 右の列と連結するフ...
' 範囲を取得
intRowS = Selection(1).row
intRowE = Selection(Selection.Count).row
intColS = Selection(1).Column
intColE = Selection(Selection.Count).Column
strResult = ""
' 範囲をループ
For intRow = intRowS To intRowE
For intCol = intColS To intColE
Dim rngCrnt As Range ' 処理カレントセル
Dim rngCrntMerge As Range ' 処理カレントセ...
' セル区切り
strResult = strResult & "|"
' フラグクリア
blMargeUpRow = False
blMargeRightCol = False
' カレントセル取得
Set rngCrnt = Cells(intRow, intCol)
Set rngCrntMerge = rngCrnt.MergeArea
' 結合セルの場合
If rngCrnt.MergeCells Then
' 1つ前の行のセルも一緒に結合されている場合
If intRow > intRowS Then
If Cells(intRow - 1, intCol).MergeAre...
blMargeUpRow = True
End If
End If
' 1つ前の行のセルへ結合
If blMargeUpRow Then
strResult = strResult & "~"
Else
' 1つ右の列のセルも一緒に結合されてい...
If intCol < intColE Then
If Cells(intRow, intCol + 1).Merg...
blMargeRightCol = True
End If
End If
' 1つ右の列のセルへ結合
If blMargeRightCol Then
strResult = strResult & ">"
' 結合セルの一番右上のセルの場合
Else
' セル情報
strResult = strResult & GetCellIn...
End If
End If
' 単独セルの場合
Else
' セル情報
strResult = strResult & GetCellInfoStr(rn...
End If
Next
' 行終端のセル区切り
strResult = strResult & "|" & vbCrLf
Next
' 戻り値
ConvertPukiWiki = strResult
End Function
Private Function GetCellInfoStr( _
ByRef rngCrnt As Range, _
ByVal blWithFormat As Boolean _
) As String
Dim strResult As String ' セル情報文字列
' 書式あり
If blWithFormat Then
' セル情報
strResult = GetCellAlignmentStr(rngCrnt) & _
GetCellForeColorStr(rngCrnt) & _
GetCellBackColorStr(rngCrnt) & _
GetCellValueStr(rngCrnt)
' 書式なし
Else
' セル情報
strResult = GetCellValueStr(rngCrnt)
End If
' 戻り値
GetCellInfoStr = strResult
End Function
Private Function GetCellAlignmentStr( _
ByRef rngCrnt As Range _
) As String
Dim strResult As String ' アライメント文字列
' セルの水平アライメントで分岐
Select Case rngCrnt.HorizontalAlignment
' 初期状態
Case xlGeneral
strResult = ""
' 左
Case xlLeft
strResult = ""
' 中央
Case xlCenter
strResult = "CENTER:"
' 右
Case xlRight
strResult = "RIGHT:"
End Select
' 戻り値
GetCellAlignmentStr = strResult
End Function
Private Function GetCellForeColorStr( _
ByRef rngCrnt As Range _
) As String
Dim strResult As String ' 前景色文字列
' セルの前景色をRGB文字列として取得
If Not IsNull(rngCrnt.Font.Color) Then
strResult = "COLOR(#" & GetRGBStr(rngCrnt.Font.Co...
End If
' 前景色:黒の場合は削除
If strResult = "COLOR(#000000):" Then
strResult = ""
End If
' 戻り値
GetCellForeColorStr = strResult
End Function
Private Function GetCellBackColorStr( _
ByRef rngCrnt As Range _
) As String
Dim strResult As String ' 背景色文字列
' セルの背景色をRGB文字列として取得
If Not IsNull(rngCrnt.Interior.Color) Then
strResult = "BGCOLOR(#" & GetRGBStr(rngCrnt.Inter...
End If
' 背景色パターンが純色以外は削除
If rngCrnt.Interior.Pattern <> xlSolid Then
strResult = ""
End If
' 戻り値
GetCellBackColorStr = strResult
End Function
Private Function GetRGBStr( _
ByVal lngColor As Long _
) As String
Dim strRGB As String ' RGB文字列
Dim strHex As String ' 16進文字列
' 16進文字列に変換
strHex = Hex(lngColor)
' 0パディングして8桁にする
strHex = String(8 - Len(strHex), "0") & strHex
' R値を取り出す(7,8文字目)
strRGB = Mid(strHex, 7, 2)
' G値を取り出す(5,6文字目)
strRGB = strRGB & Mid(strHex, 5, 2)
' B値を取り出す(3,4文字目)
strRGB = strRGB & Mid(strHex, 3, 2)
' 戻り値
GetRGBStr = strRGB
End Function
Private Function GetCellValueStr( _
ByRef rngCrnt As Range _
) As String
Dim strResult As String ' セルの値文字列
' セルの値を取得
strResult = rngCrnt(1, 1).Value
' セル内改行を変換
strResult = Replace(strResult, vbLf, "&br;")
' 特殊文字を数値参照文字に変換
strResult = Replace(strResult, "|", "|") ' |
' strResult = Replace(strResult, " ", " ") ' 半角...
' 戻り値
GetCellValueStr = strResult
End Function
}}
ページ名: