FC2ブログ


スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

こんなものも作ってみた。

串ざしの番号を作るためのワークシートを作ってみた。
VBEditorで起動して、必要事項を入力すると番号が作成されます。
今まで担当した案件の経験からして、このフォームで作れる番号で仕事的には事足りるのです。
デザインはふざけてますが、きちんと動きます(笑)
あとは必要に応じてカスタマイズ予定。

で、これフォームのボタンにマクロ書き込むタイプなので配布はしません。
ただただ自己満足のためにつくったものの最たるものです。

串刺し
スポンサーサイト

Excel上で全角英数字は半角、半角カタカナは全角にするVBA

印刷業界にいると、それはもう素敵なデータ(笑)を貰う機会が多いわけです。
で、それをこつこつと印刷用ソフトに使える形のデータにするのもDTPの仕事だったりするわけです。
たいがいさくらエディタなどで置換してしまうんですが、そのためだけにテキスト形式に書き出すのめんどいし、
かといってテキストエディタ立ち上げてコピペしたことによって人的なミスが起こるかもしれないし。。
というわけで、Excel上でそのたぐいのことはやってしまいましょう。

コードをざっと紹介すると、VBScriptを参照・正規表現を利用してまず全角文字すべてを半角にします。
そうすると、全角カタカナも半角にしてしまうので、処理後に半角カタカナになったものを全角に再変換します。
ワークシートそのものでなく、列単位で変換したい場合はActiveSheet.UsedRangeをselectionに変更すればOK。
その場合は、変換したい範囲を選択してから実行してください。


テスト環境はWindowsXP,バージョンは2007です。
このブログのタイトルは「Win for DTP」ですからMacでの動作は当然保証しません。
あしからず。

Sub 全角英数字半角化_半角カタカナ全角化()


Dim i As Long
Dim strPattern As String, str As String
Dim Re As Variant, rematch As Variant, match As Variant
Dim r As Range

Application.ScreenUpdating = False

i = MsgBox("シート全体の英数字を半角に、半角カタカナは全角にしますか?", vbYesNo + vbQuestion)
If i = vbYes Then

Set Re = CreateObject("VBScript.regExp")
'先にアルファベット・カタカナを全て全角から半角へ
strPattern = "[A-Za-z0-9]"
With Re
.Pattern = strPattern
.Ignorecase = True
.Global = True
For Each r In ActiveSheet.UsedRange '選択範囲のみに実行したい場合はこの行のActiveSheet.UsedRangeをselectionに変更
If .test(r.Formula) Then
r = StrConv(r, vbNarrow)
End If
Next r
End With
'ここから半角カタカナを全角処理

strPattern = "([" & Chr(166) & "-" & Chr(223) & "]+)"
With Re
.Pattern = strPattern
.Global = True
For Each r In ActiveSheet.UsedRange '選択範囲のみに実行したい場合はこの行のActiveSheet.UsedRangeをselectionに変更
Set rematch = .Execute(r)
For Each match In rematch
str = StrConv(.Replace(match, "$1"), vbWide)
r.Value = Replace(r.Value, match, str)
Next
Next

Set Re = Nothing

End With

Else: MsgBox "処理を中止します", vbInformation

End If

End Sub


串刺しネタでもう1個。

A列に番号を振っておいて、串刺しデータように列操作するVBA。
あとは先頭列を挿入するなどして、項目名を追加するコードを書いてテキスト化すれば、串刺しデータの完成。

Sub sample2()

Dim i As Integer, s As Integer, k As Integer, r As Integer
Dim tmp As Variant, bmp As Variant

k = 1
r = 1

For i = 1 To 15
s = Cells(i, 1)
Select Case s
Case Is = 2
tmp = Range(Cells(i, 1), Cells(i, 2)).Value
Range(Cells(i, 1), Cells(i, 2)).ClearContents
Range(Cells(k, 3), Cells(k, 4)) = tmp
k = k + 1

Case Is = 3
tmp = Range(Cells(i, 1), Cells(i, 2)).Value
Range(Cells(i, 1), Cells(i, 2)).ClearContents
Range(Cells(r, 5), Cells(r, 6)) = tmp
r = r + 1

End Select

Next i

End Sub

串刺し番号をVBAで作ってみる。

番号をつくったあと、テキストタブ区切り形式で保存するとこまで自動化。
ただしVBA単体だとunicode形式では保存できないことに注意。
unicodeにしたい人は1度ファイルを開いて保存し直すか、VisualBasic勉強して頑張ってみてください。

これで作ったファイルのパスをJavascriptで参照してIndesignに流しこめば串刺し完了です。

テスト動作環境は「WindowsVista」、Excel2007。

Sub sample()

Dim i As Integer, s As Integer, r As Integer
Dim str As String

Application.ScreenUpdating = False

r = 1
For i = 1 To 6

For s = 1 To 1667

Cells(s, i) = r

r = r + 1

Next s

Next i


Rows(1).Insert

For i = 1 To 6

str = "番号" & i

Cells(1, i) = str

Next i

Sheets("Sheet1").Copy

Application.DisplayAlerts = False


ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "番号.txt", FileFormat:=xlText

ActiveWindow.Close

Application.DisplayAlerts = True


End Sub
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。