エクセルマクロの使用例4
Posted on 6 月 11, 2010, under 雑談.
客先のエクセルで作られた表をウェブページにするという仕事を手掛けたこともあります。
ホームページ作成ソフトのDreamWeaverを使ってhtmlファイルを作成するのですが、エクセルの表を範囲選択してコピーし、DreamWeaverのデザインビューに貼り付けると、セルの位置や結合関係がそのままそこに再現されるのですよ。
なんて便利な機能!かと思いきや、そこには不都合がたくさん。
セルの全てが再現されるのであって、枠を付けたセルのみが再現されるのではなのですね。
エクセルを作成したお客さんは印刷されたときの見た目のみを考慮して、ひとつひとつのセルにデータを挿入して必要ない枠には色を付けないという方法をとっていたものだから・・・それをウェブページにしようものならさあ大変!(htmlじゃあそんないい加減な方法はとれません)
ひとつの枠に入れたいデータなら、セルを別々にしないでひとつのセル内で改行するとかして入れればいいのに・・・!とイライラしながら、まず修正を加えなきゃならないのですよ。
エクセル上で修正するのですが、セルを結合すれば良いだけではいけません。
エクセルをよく知っている皆さんでしたらお判りですよね?
複数のセルを結合しようとすると、データが残るのはいちばん左上のセル内のデータのみで、他のセルに入っているデータは消えてしまうのです。
なので、他セルのデータをコピーしては貼り付けコピーしては貼り付け・・・そうして結合しなくてはならないのですが、その面倒なことといったら!
そこで、とりだしたるは案の定マクロ。
いえ、そのマクロは実は私が作ったものではなく、同僚が作ったものを貰ったのですが、それで作業が格段に速くなったのは言うまでもありません。
しかし、根本的な問題として、お客さん自身が見た目以外にセル関係も考慮して表を作ってくれれば良かったのに・・・
~気になるサイト~
・中洞牧場へ行こう!
・テレワークの全て
.net framework
エクセルを便利にする機能のVBAだけでなく、普通のプログラムソフトを作りたいのであればVB.NETがお勧めです。
この.netはマイクロソフトが押しすすめている.netframework上で動作したりオブジェクト指向が本格的に取り入れられるなど前のバーションのVB6.0からの変更点はかなりの数にのぼります。変更点が多いためVBで開発をしてたpgはあえて.netに移行せず既存のVBを使って開発をしている利用者もいたり。
だけど、一つの統合開発環境の中にVB、C++、C#が含まれていてすべて同じエディタやデバッガを使用できるというのは結構便利かもしれません。
製品は有償でのみ提供されていましたがバージョン2005、2008では主に個人向けと位地づけられているので無償で配布されています。もしVBに興味があるのならexpress editionからダウンロードしてくると良いかもしれません。
すこし余談ですが、windows vistaは当初.NET frameworkをネイティブで実行するOSとなって従来のwin32 APIを置き換える予定ですがた、実際には.NET freamworkを最初から搭載してこといますが、従来のwindowsに.NET frameworkをインストールいしたのと同じように最終的にはwin32 APIを実行している構造になっていました。
win7が出ましたがこれどうなったのでしょう?実は7は全然つかっていないので調べてすらいないのですが・・本当は知っておかなきゃいけないんですがね。
エラーについて
プログラム実行時に何らかの原因があってエラーが発生してしまい、プログラムが途中で止まってしまうということは経験おありでしょうか?そのエラーの原因にはプログラムミスもあるのですが、
「Excelの表に想定していないデータが入っていたとか、ユーザーが予期しない操作をした」
などといった理由などで、エラーが発生してしまたという場合があるのです。完全にエラーを無くすのは正直難しいでしょう。
そこで、「プログラム実行中にエラーが発生してしまった!!」という場合には、どのような処理を実行すればいいのか、そしてあらかじめきちんとプログラミングしておくことで、エラーで止まってしまう事を回避できると思います。
そこでエラー処理のステートメントを自分なりにまとめてみました。
【ステートメント】 【内容】
On Error GoTo 0 上記のエラー処理を解除する
On Error Resume Next エラーを無視して実行
Resume エラーが発生した行へもどる
Resume Next エラーが発生した次の行へもどる
On Error GoTo ラベル(又は行番号) エラーが発生した場合 ラベル(又は行番号) 以下ステートメントを実行する
発生したエラーいろいろに、それぞれのエラーの内容とエラー番号が割り当てられていて、エラーの要因が分かるようになっています。エラー番号はErrオブジェクトのNumberプロパティのことで、エラー内容というのはDescription プロパティで知ることができるのです。
たとえばエラー番号が7だと「メモリー不足」、58だと「すでに同名のファイルが存在している」ということになります。
表にしておいたりするとエラーの際に役立つかも知れませんね!
初心者のための用語解説(1)
随分と更新をさぼってしまいました~;;(^o^);;~ちょっと中級者レベルな感じですすめてしまって煮詰まってしまっていたのです。今回からは、超初心者向けに用語解説から始めて、パソコンを便利にしよう!てな感じで進めていきたいと思います。
これまでずっとVBA(Visual Basic for Applications)を使ったプログラミングを見てきましたが、そもそも「VBA」とはなんぞや!ということです。家のパソコンには確かにエクセルは入ってるけど、エクセルは表計算ソフトのはず・・・; (◎ 。◎) ; ていう方が大半だと思います。そんな一般の方向けに初歩の初歩から一緒に学んでいきましょう、ということです。
ではまず、「アプリケーション(Application)」という言葉から説明していきましょう。
アプリケーションとは、文書の作成、数値計算など、ある特定の目的のために設計されたソフトウェアのことです。つまり、ご自宅のパソコンに入っているエクセルやワード、はがき作成ソフトなんかも全部ひっくるめて「アプリケーション」ということです。
次に「ビジュアル・ベーシック(Visual Basic)」です。
「VB」とも呼ばれる、Microsoft社によって開発されたコンピューターのプログラミング言語のことです。
次に「マクロ(Macro)」ですが、マクロとはワープロソフトや表計算ソフトなどで、特定の操作手順をプログラムとして記述して自動化する機能のことです。このプログラムの記述に使う言語を「マクロ言語」といいます。
P.S.サイドビジネスを始めるサラリーマンが副業ブログから始めるケースが増えているそうです。ブログは手軽に始められる上に更新も簡単なので、自分のHP代わりに使えるので便利です。
初心者がプログラムの勉強をするために
初心者がプログラムを勉強するってことはかなり敷居を感じると思います。
でもやってみれば意外に簡単だったりして、楽しくなってくるもの。
この「楽しい」と感じる気持ちがプログラマーの第一歩と思います。
今まで何人かの素人にプログラムを教えてきました。
そこでわかったのはやっぱり実利があってこそ!
今やってる仕事が簡単に、ミスなくできるんだよ~って一度目の前でやってみせると自分でもやってみたくなるようです。
だけど初心者だからこそ、プログラムで何ができるのかわからないため結局手作業でやってしまう。
プログラムをやってみたいな~っと思ったら、まずプログラムで何ができるのかを知ってから。
それを実業務に少しづつ組み入れてみてください。
これまでのブログでなんとな~くVBAで何ができるのがわかると思います。
VBAではできないことはDOSやスクリプトなんかでできたりします。
そこはあきらめないで、実現したいことをどうやったら実現できるかネットで調べながら挑戦しましょう。
エクセルマクロの使用例3
図のコピーって知ってますか?
エクセルのセルを図として扱うことができます。
図としてあつかうとどうなるかというとオートシェイプのコネクタが図に張り付きます。
どうゆうことかというと・・

こ~んなことができたりしちゃいます。
これは図のコピーってのはエクセルの基本機能であるんですが、これをマクロで行ごとに図のコピーを行えるようにしました!
ソースアップしようかな?と思ったんですがちょっとソースに自信がないので・・また今度^^;
エクセルマクロの使用例2
エクセルのセルを結合するときに、列だけ結合して行は結合したくない!ってときないですか?
たとえばA1からE10のセルを選択したときに、横のセルならびだけ結合して、列は結合したくない!
そんな機能エクセルにはないんですよね。
普通にA1からE10を結合すると一個のセルになってしまいます。
エクセルでリストとか作ってるときどうしてやりたいですよね。
そこで作っちゃいました。選択したセル内で列だけ結合してくれるマクロ。
ソースはこんな感じです。
———————————————
Dim startCellC As Integer
Dim startCellR As Integer
Dim endCellR As Integer
Dim endCellC As Integer
Dim intCnt As Integer
startCellC = ActiveCell.Column
endCellC = Selection.Columns.Count + Selection.Column - 1
startCellR = ActiveCell.Row
endCellR = Selection.Rows.Count + Selection.Row - 1
For intCnt = startCellR To endCellR
Range(Cells(intCnt, startCellC), Cells(intCnt, endCellC)).Merge
With Range(Cells(intCnt, startCellC), Cells(intCnt, endCellC))
.HorizontalAlignment = xlLeft ‘左ぞろえ
.VerticalAlignment = xlTop ‘文字位置-中央
.WrapText = False
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.MergeCells = True
End With
Next
——————————————-
動作保障はできませんが、興味があればあなたのマクロに追加してやってください。
エクセルマクロの使用例1
客先に提出するドキュメント文書をエクセルで作ってるってとこありませんか?
私の会社はまさにこれでした。
レイアウトは会社さまざまだと思うのですが我が社では
ページのヘッダーに「プロジェクト名」「ドキュメント名」「ドキュメント管理NO」「備考」
フッターに「ドキュメント作成日」「社名」「作成者名」「プロジェクト管理者名」「ページ数」「総ページ数」
と必ずつけていました。
これを外注さんにエクセルレイアウトを渡して作成してもらうわけですが、
な・ぜ・か 勝手に変更してくるんですよね。
フォントサイズが違うとか、ページ数が間違ってるとか、1ページ内の行数が変わってるとか・・・
個人的にはこういうのは気に入りません。
かといって外注さんに修正させると修正になってなかったり細かいことにチクチク言ってる小さい人間と評価されます。
これにイラーーーーーっつときて作っちゃいました。
我が社のドキュメントレイアウト作成マクロ。
これで外注さんが作ってきたドキュメント上でマクロを実行してバシバシなおしましたよ。
一度作ってしまえばあとは楽チンですからね。
マクロにはこんな使い方もあります^^
PERSONAL.xlsの説明サイト
インストラクターのネタ帳
パーソナルエクセルとは何ぞや?という説明があります。
personal.xls 強化講座
パーソナルエクセルの設定方法。
そのほか便利なマクロ集があります。
私はかなりこのサイトのマクロにお世話になっています。
特に「全シートをHOMEポジションに」というのが便利!
複数シートの重~いファイルを作ったことありません?またシートが下にやけに長~いファイル。
ページごとにカーソルが変な位置にあって、一ページ目を見ているつもりが途中ページだったりした!とか。
また客先に提出するときにカーソルの位置調整とかしないといけないですよね。
そんなときにこのマクロが超便利です!
PERSONAL.xls パーソナルエクセルって知ってる?
パーソナルエクセルって知ってますか?
これは超便利な機能です。
私はエクセルのマクロ集を作ったんですが、よく使う機能ばかりを集めたのでいちいちマクロ実行ボタン押すのめんどくさいな~って思ってたんですね。
そこで調べていきついたのがPERSONAL.xls。。
何をど~するいかっていうと、エクセルを開いたときに、メニューバーに自分の作ったマクロをボタンとして追加しちゃう!というものです。
これのおかげでいちいちマクロ用のエクセルを開かなくてもよくなりました。
具体的な設定方法はかなり面倒。ちなみにvistaや2007では動かない感じ・・これがちょっと悲しいです。
誰か情報持ってたら教えてください(*_*)