【´・ω・`】:さてExcel版の「暗号化・復号化」ではかずさんが
遊んでくれたので、こんどはWordで「暗号化・復号化」を
やってみよう。
ほんとうのことを言えばおいらはWord VBAはあんまり
よく知らないので自信がないのだが生まれついてのお調子者だから
仕方がない。
仕様:大雑把ではあるが、テキストの暗号化。ただしオートシェイプだの
コメントだの、図表の中のテキストは無視。
さて、遊んでくれる人はいるかいな?
« 暗号化・復号化(3) | メイン | 暗号化・復号化(5) »
最後に、下の画像の中に見える文字と数字を入力してください。これはプログラムを使ってコメントを自動的に投稿するのを防ぐために行われています。
画像を読み取れない場合は 別の画像を表示してください。
アカウント情報
(名前は必須です。メールアドレスは公開されません。)
日 | 月 | 火 | 水 | 木 | 金 | 土 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
別にWordでやってもやることは同じでは?
パラグラフ単位に取り出して、改行コードを無視するようにして、以下同文・・・
投稿情報: y sakuda | 2008年11 月29日 (土曜日) 午後 05時55分
>別にWordでやってもやることは同じでは?
同じではなかった・・・
Excelでは書式情報がセルに残っているがワードでは・・・
ちなみにおいらのコード(その1)・・・
Sub 暗号化X()
Dim i As Integer
Dim j As Integer
Dim Mojisu As Long
Dim DanrakuNum As Long
Dim MyFont As String
Dim Moji As String
Dim CodeNum As Long
Dim Bun As String
Set R = Selection.Range
MyFont = R.Font.Name
DanrakuNum = R.Paragraphs.Count
Mojisu = R.Characters.Count
str = R.Text
Bun = ""
For i = 1 To Mojisu
Moji = Mid(str, i, 1)
CodeNum = AscW(Moji)
Moji = ChrW(CodeNum * -1)
Bun = Bun + Moji
Next
Selection.TypeText Bun
End Sub
投稿情報: くまぷー | 2008年11 月29日 (土曜日) 午後 06時04分
上のコードでは書式情報が失われてしまうんです(T.T)
文字サイズも、文字の色も、
センタリングなどの文字位置も・・・
Excelだったら、セルに書式情報が残っているのに・・・( iдi ) ハウー
投稿情報: くまぷー | 2008年11 月29日 (土曜日) 午後 06時13分
でもね、何とかあがいて手は見つけました・・・( ̄^ ̄)
投稿情報: くまぷー | 2008年11 月29日 (土曜日) 午後 06時15分
なるほど、パラグラフフォーマットなんかが消えちゃいますね。
ただ、こんな簡単なのでは、部分書式に対応できませんね。
また、テキストボックスなんかはStoryRangeコレクションでまわせば良いのですが、アンカーが付いているパラグラフが変更されるとアンカーもろともテキストボックスが消えちゃいますねw
投稿情報: y sakuda | 2008年11 月29日 (土曜日) 午後 07時08分
>テキストボックスなんかは
そんなもの凄いところまで
面倒みようとは思ってはいないのですが
wordは手強いです。
・・・で、次の「暗号化・復号化(5)」を
ご覧下さい。m(__)m
投稿情報: くまぷー | 2008年11 月29日 (土曜日) 午後 07時33分
とりあえず、Alignment、パラグラフ全体のサイズ、色のみ対応
Sub aaa()
Dim wPara As Paragraph, wText As String, wNText As String, I As Long, J As Long
Dim wFormat As Long
With ThisDocument.Content
For J = .Paragraphs.Count To 1 Step -1
Set wPara = .Paragraphs(J)
wText = wPara.Range.Text
wNText = ""
For I = 1 To Len(wText)
wCode = AscW(Mid(wText, I, 1))
If Abs(wCode) 1 Then
wFormat = wPara.Range.ParagraphFormat.Alignment
With wPara.Range
.Text = wNText
.ParagraphFormat.Alignment = wFormat
End With
End If
Next
End With
End Sub
フォントタイプはハングルに変わったとこで替えられちゃう^^;
投稿情報: y sakuda | 2008年11 月29日 (土曜日) 午後 07時53分
さっそく、参加して頂きありがとうございます。
>If Abs(wCode) 1 Then
ここのところはどうなっていますか?
エラーになってしまいます。
投稿情報: くまぷー | 2008年11 月29日 (土曜日) 午後 08時10分
>If Abs(wCode) 1 Then
ありゃ、半角の不等号が消えちゃってますね。
If Abs(wCode)<15 Then
です。
つまり、FFやらCR,LFは変換しないという意味です。
投稿情報: y sakuda | 2008年11 月29日 (土曜日) 午後 09時09分
少し変えて部分書式にも対応しました。
(文字列の途中でフォントサイズや色が変わっていても保存されます)
Sub bbb()
Dim wPara As Paragraph, I As Long, J As Long, N As Long, P As Long
Dim wCode As Long
With ThisDocument.Content
For J = .Paragraphs.Count To 1 Step -1
Set wPara = .Paragraphs(J)
With wPara.Range
N = Len(.Text)
P = .Start
For I = N To 1 Step -1
wCode = AscW(Mid(.Text, I, 1))
If Abs(wCode) > 14 Then
ThisDocument.Range(P + I - 1, P + I).Text = ChrW(wCode * -1)
End If
Next
End With
Next
End With
End Sub
面倒なので、インデント直すのやめました。
悪しからず。
投稿情報: y sakuda | 2008年11 月29日 (土曜日) 午後 09時39分
>If Abs(wCode)<15 Then
上記の通りにして試してみましたが
「End Withに対応するWithがありません」と
怒られてしまいます。
よく見てみるとForループが2つあるのに
Nextが一つしかないようですが・・・
投稿情報: くまぷー | 2008年11 月29日 (土曜日) 午後 09時40分
あ、上のコメントはaaaに対してのものです。
早速、bbbを試してみます。
投稿情報: くまぷー | 2008年11 月29日 (土曜日) 午後 09時41分
もう一箇所不等号使ってましたwww
全部再掲します。失礼しました。
Sub aaa()
Dim wPara As Paragraph, wText As String, wNText As String, I As Long, J As Long
Dim wFormat As Long, wCode As Long
With ThisDocument.Content
For J = .Paragraphs.Count To 1 Step -1
Set wPara = .Paragraphs(J)
wText = wPara.Range.Text
wNText = ""
For I = 1 To Len(wText)
wCode = AscW(Mid(wText, I, 1))
If Abs(wCode) < 15 Then
wNText = wNText & ChrW(wCode)
Else
wNText = wNText & ChrW(wCode * (-1))
End If
Next
If Len(wNText) >1 Then
wFormat = wPara.Range.ParagraphFormat.Alignment
With wPara.Range
.Text = wNText
.ParagraphFormat.Alignment = wFormat
End With
End If
Next
End With
End Sub
投稿情報: y sakuda | 2008年11 月29日 (土曜日) 午後 09時45分
サンプルを2つも作って頂き、ありがとうございます。
早速、aaa、bbbともに実行してみました。
aaaはbbbに比べると超速ですね。
aaaがまとめて書き込むのに対して
bbbは一文字ずつ書き込んでいるのですね。でも色とサイズは保存されるのに
どうして事態は保存されないのだろう?
不思議だ(?_?)
投稿情報: くまぷー | 2008年11 月29日 (土曜日) 午後 10時07分
>どうして事態は保存されないのだろう?
結局暗号化した代物がハングルなんで、フォント変えざる得ないんじゃないでしょうか?
それにしても、やはり、どうやってもレンジをいじるとアンカーつぶれちゃうな・・・・
なんとかしたいんですが^^;
投稿情報: y sakuda | 2008年11 月29日 (土曜日) 午後 10時12分
>結局暗号化した代物がハングルなんで
なるほど・・・ 下の文章で実験してみました。
「なるほど、パラグラフフォーマットなんかが消えちゃいますね。
ただ、こんな簡単なのでは、部分書式に対応できませんね。
また、テキストボックスなんかはStoryRangeコレクションでまわせば良いのですが、アンカーが付いているパラグラフが変更されるとアンカーもろともテキストボックスが消えちゃいますねw」
bbbを実行してもハングルにならない文字が
いくつかありますが、その文字に関しては
字体がちゃんと保存されますね。
投稿情報: くまぷー | 2008年11 月29日 (土曜日) 午後 10時27分
>アンカーつぶれちゃうな・・・・
なんとかしたいんですが^^;
それができたらもう完璧ですね!!
投稿情報: くまぷー | 2008年11 月29日 (土曜日) 午後 10時28分
しかしねーー
WordVBAで遊んでても誰も寄ってこないとオモフ・・・・・
MougのWordVBAの板でも回答者が少ないと言うより、質問者自体が極めて少数www
投稿情報: y sakuda | 2008年11 月29日 (土曜日) 午後 10時54分
>WordVBAで遊んでても誰も寄ってこないとオモフ・・・・・
(;゚゚)ウッ!
そ、それを言っては・・・
投稿情報: くまぷー | 2008年11 月29日 (土曜日) 午後 11時06分
>>WordVBAで遊んでても誰も寄ってこないとオモフ・・・・・
でも、おいらは必要もないのに
一太郎マクロとか
三四郎マクロに
手を染めてしまった男・・・
http://kumapooh2007.hp.infoseek.co.jp/Taro_Macro_01.html
http://kumapooh.justblog.jp/blog/2007/04/post_29ec.html
投稿情報: くまぷー | 2008年11 月29日 (土曜日) 午後 11時10分