2018年8月14日火曜日

エクセルで業務資料・翻訳文書を作成するのも、マクロが使えて便利だし、改善提案のネタにもなるからね - Excel2016(そのほか)


エクセルで業務レポートを書く人が、増えているような気がします。
自分の勤めている会社はメーカーですが、その傾向が強い感じです。

まあ、タイプライターの延長線上にあるワードに比べれば、優れてます。
エクセルは、最初から紙に印刷する想定が、少ないのかもしれません。

 ・ 文章の書き出し位置(セル)が自由。
 ・ 行の高さを一行毎に自由に変更可能。
 ・ レポートに挿入した図や写真の位置が自由に動かせる。
 ・ 表、グラフを自由に挿入でき、罫線も自由にひける。
 ・ シートをページ単位にすると、目次になって分かりやすい。

ただ、自由度の高い分だけ、難点もないわけではありません。
特に、印刷に当っては、マージンを設けたりと毎回設定が必要です。

一方、ワードだと基本の書式に適当に入力すれば、印刷ができます。
どちかといえば、A4用紙を定型にして標準書式化が備わっています。

ところが、エクセルだと、A3用紙の横印刷は、普通に考えられます。
このため、用紙と縦横印刷の選択が柔軟になるので、設定は重要。

そう考えますと、適当に入力して、後から直しやすいのがエクセルかも。
だから、手っ取り早さでエクセルを選ぶのかもしれないが、注意も必要。

文章の末尾が、行末までギリギリになるほど、印刷されなくなるのです。
通常ビューで文字を入力していて、セルの枠内に文字が収まっている。

なのに、印刷プレビューで見れば文字切れが発生していることがある。
つまり、セル内を改行で全文表示しても、全て印刷するか分からない。



プレビューでは、セルサイズに対する文字サイズを大きく計算するみたい。
だから、文字切れが発生する仕組みですが、根本解決はありません。

それで、これを防ぐには、読点を付けたら一つ改行を増やす方法です。
Alt+Enterキーで、セルに改行が一つ増えますが、間延びするかなあ。

それでも、エクセルの方がフレキシブルに作成しやすいという利点もある。
そして、業務効率化を図るためにマクロ(VBA)を使う手もあります。

実際、2~30ページの報告書を書くとしたら、エクセルは便利です。
マクロコマンドを使いながら、体裁を整えたり、PDF印刷をしたりとか。

会社の改善提案にしても、こさえたマクロを提案として提出できますよ。
と言うわけで、改善提案のノルマこなしに大貢献するマクロなのでした。

これから、提出した簡単マクロを紹介させてもらいますが、VBAエディターを起動させたら、そのコード全体を範囲選択して、後は標準メニューバーの”実行(R)”→”Sub/ユーザーフォームの実行 F5”を選択して実行してもらえれば、エクセルによる報告書作りでは、大助かりになるはずだと思うのでした。

★シート毎にPDFのファイル出力
Sub savePDF()

Dim mySheet As String
Dim sCount As Integer
Dim sName As String

If MsgBox("PDFファイルを作成します。よろしいですか?", vbYesNo) = vbNo Then Exit Sub

'ファイル名に追加(OJIJIと指定して実行)
sName = InputBox("年月など識別IDを入力", "確認")
'sName = "OJIJI"

'シートの枚数をカウント
sCount = Sheets.Count

For i = 1 To sCount
Sheets(i).Select
mySheet = ActiveSheet.Name
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"保存フォルダのディレクトリ\新しいフォルダー\" & sName & "_" & mySheet & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False
Next

MsgBox "完了しました"

End Sub
※PDF結合は、フリーソフトのpdf_asを使いました。
-------------------------------------------------

★半角タブを入れたい(通常の書式設定だと全角なので)
Private Sub test()
'指定範囲の各セルで、先頭に半角スペースのタブを入れる
Dim SelectionArea As Range
Set SelectionArea = Selection

For Each SelectionArea In Selection
SelectionArea.Value = " " & SelectionArea.Value
Next SelectionArea

End Sub
-------------------------------------------------
Private Sub test2()
'指定範囲の各セルで、二文字目と三文字目に半角スペースを入れる
'一定の書式で、まとまったデータを変更するのに便利

Dim SelectionArea As Range
Dim str As String
Set SelectionArea = Selection

For Each SelectionArea In Selection

str = SelectionArea.Text
SelectionArea.Value = Mid(str, 1, 2) & " " & Mid(str, 3)

Next SelectionArea

End Sub
-----------------------------------------------

★指定した範囲で全角→半角、半角→全角の変換をする
 (他の資料をコピペした時に、全角・半角を合わせました)

Sub ZenkakuHankaku()

Dim Rangex As Range

For Each Rangex In Selection
Rangex.Value = StrConv(Rangex.Value, vbNarrow)
Next Rangex

End Sub
------------------------------------------------
Sub HankakuZenkaku()

Dim Rangex As Range

For Each Rangex In Selection
Rangex.Value = StrConv(Rangex.Value, vbWide)
Next Rangex

End Sub



いいねと思ったら、二つポチっとね!



0 件のコメント:

コメントを投稿