その他インターネット

エクセル嫌いのための「趣味のエクセル」

数字ぎっしりの表計算ソフト、大事だとわかっていても、敬遠してしまう。そんなエクセルへの敵討ち。エクセルをおもちゃに遊んでしまいましょう。メルマガを見ながら、エクセルにひとつずつ入力していると、意外に可愛いやつになってくるかも。

全て表示する >

「趣味のエクセル」 No.113 2013/4/15 新しいワークシートの自動作成

2013/04/15

★ 前回までにやったこと 

((( カレンダーで遊ぶ )))
(((  スタートリック  )))
((( 暑中見舞にひと工夫 )))「スピードくじ」を作る
((( 暑中見舞にひと工夫 )))気配り案内状を作ってみる
((( 暑中見舞にひと工夫 )))はがき裏表を作成する
((( グラフ機能を使って絵を描く )))グラフで作る幾何学模様
((( グラフ機能を使って絵を描く )))「帆船」を描く
((( ブロックくずしを作る )))一時休止です。しばらくお待ち下さい。
((( ナンバープレースを解く )))
((( 3択トレーナー ショートカットキー・マスター )))
((( 万華鏡もどき )))
((( ユーザー定義の書式を拡げる ))) 選挙啓発ポスター
((( セイムセットを解く )))
((( フエル・カレンダー )))
((( 「日報」作りを楽しむ )))
((( カレンダーの写真を自動変更 )))
((( 漢字ナンクロツール )))
(((えっちょ流「エクセルの基礎知識」)))
   A ワークシートとセル
   B 列と行
   C 表を作成する
     (1)項目を立てる
     (2)入力の仕方をイメージする
     (3)見栄えよく飾る
   D 表を作成する2(表計算の原理)
     (1)セルは値の格納箱
     (2)エクセルはデータを解釈して計算する
     (3)セル参照とはセルとセルを関係付けること
     (4)絶対参照と相対参照
     (5)相対参照ではコピーした時参照先が変わる
  (6)行・列を挿入した場合参照先は変わらない
  (7)セルを移動した時、移動したセルの参照先は変わらない

  はじめての方は申し訳ありませんが、バックナンバーを見てたどってみて
 ください。
                        ───→ http://homepage3.nifty.com/hcho/

===================================
┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌─┐┐┐┐┐┐┐┐┐┐┐┐┐┐┐┐┐
┌┌───────────────────────────────┐┐
 │     「趣味のエクセル」REVIVAL(83)      │
└└───────────────────────────────┘┘
└└└└└└└└└└└└└└└└└─┘┘┘┘┘┘┘┘┘┘┘┘┘┘┘┘┘
         OOO 今回のお遊び OOO

******    「日報」作りを楽しむ(5)    ********


 c キーになる項目名は同じにする

   リストから言葉を選んで入力する方法は、確かに入力の手間を省く、と
  いう側面もありますが、それ以上に大事なのは、「手入力による入力のブ
  レを避ける」という効果です。日本語入力に限らず、ローマ字でもタイプ
  ミス、大文字小文字の使い分け、「n」を重ねるか重ねないか、と言った
  文字表記上の差異は複雑です。

6 新しいシートを作る

   特定の日の記録に1枚のワークシートを割り当てると、当然ですが、
  そっくり同じ形式のワークシートを毎日作っていくことになります。

   色々と書式設定してあるワークシートを、毎日初めから作っていくのは
  面倒です。

   こういうときは、書式ごとワークシートをそっくりコピーしてやりま
  す。

 a 手動でやる時の手順は次のとおりです。

  1)前の日のワークシートを開きます。
  2)シート名を書いてある「タブ」の所にマウスを持って行き、「Ctrl」
   キーを押しながら、右ボタンをゆっくり押します。
  3)しばらくするとマウスポインターが小さな「+」の字のついた紙の絵
   に変わります。
  4)その状態のままマウスを右隣のシートの上にドラッグしてボタンから
   指を離します。
  5)元のシート名の後ろに「(2)」のついた新しいワークシートが出来上
   がっています。
  6)シート名を今日の日付に変更します。

   *そのままシートをコピーしただけですから、新しいワークシートの中
   には、昨日のデータと同じものが入ったままです。データを入力しても
   よいセルは色がつけてありますから、その色のセルを選択して
   「Delete」キーでデータを消します。

 b 毎日(おそらく)のことですから、これだけの手順でも結構面倒くさく
  なります。そういうときに便利なのが、この手順をマクロにしておくこと
  です。

  1)まずさっきの手順1〜5をマクロ記録機能で記録してみます。

   A メニューバーの「ツール」→「マクロ」→「新しいマクロの記録」
    と進んでいくと「マクロの記録」の設定画面が出てきますので、次の
    ように設定します。

      マクロ名:デフォルトで「Macro1」となっているところを「新
           シート作成」とします。
      ショートカットキー:Ctrl+□となっていますが、この□の中に
          「w」(半角小文字)をいれます。(「Ctrl」キーを押
          しながら「w」を押すとマクロが実行されて、新しい
          シートが自動的に作成されるための設定です。)
      マクロの保存先:作業中のブック(右端の▼を押して出てきたメ
          ニューの中から選びます)
      説明:そのまま置いておきます。(マクロを記録すると、生成さ
          れたプログラムの一番上に表示されます。)

   B 設定が終わって「ok」ボタンを押すと、マクロ記録の小さなツール
    バーが表示されてすでに記録モードに入っています。ワークシートに
    加えた動きはすべてVBで記録される状態になっています。

         *このツールバーにはボタンが2つついています。左側の
         ボタンが「記録終了」で、右側のボタンは「相対参照」と
         なっています。
         通常は記録を止めたい時に左側のボタンを押します。右側
         のボタンは自動で記録する時のセルの指定の仕方を設定す
         るものですから、触る必要はありません。

     この状態で先ほどの手順1〜5を行って、記録終了ボタンを押しま
    す。

   C メニューバーの「ツール」→「マクロ」→「マクロ」と択んでいく
    と、「新シート作成」という名前のマクロができていることが確かめ
    られます。

         *この画面で「マクロの保存先」のところが「開いている
         すべてのブック」となっているようでしたら、「作業中の
         ブック」に変えておいてください。

     画面の右側にいくつかボタンが並んでいますので「編集」のボタン
    を押してください。

     すると「Visual Basic」のモジュールが開いて、下のようなプログ
    ラムが記入されていると思います。

Sub 新シート作成()
'
' 新シート作成 Macro
'
' Keyboard Shortcut: Ctrl+w
'
    Sheets("08.01.07パレット管理表").Select
    Sheets("08.01.07パレット管理表").Copy Before:=Sheets(2)
End Sub

     このマクロは、「08.01.07パレット管理表」というワークシートの
    コピーを「Sheet2」というワークシートの前に新しいワークシートと
    して挿入するものです。

     同じフォーマットのワークシートを常に「Sheet2」の前に置きます
    から、新しいワークシートはいつも一番右から2枚目になります。そ
    の代わり「Sheet2」はいつも右端においておかなければならないこと
    になります。

   D このままですと、新しくワークシートを作るたびにシート名を記入
    する必要があります。どうせマクロを組むのなら、新しいシート名が
    ついたワークシートを作るようにすれば手間が省けます。

     先ほどできたマクロを書き換えるのですが、それには、考え方にい
    くつかの変更をしておく必要があります。

    (1)もとのワークシートの名前を特定しないこと。今開いている
      ワークシートを基準に考えます。

    (2)新しくつくるワークシートにつける名前に使う日付が必ずし
      も、今開いているワークシートの日付の翌日とは限らないのでそ
      れに対応する。
        *その日の日付はワークシートのセルB1にも書き込まれてい
        ます。

    (3)新しいワークシートは必ず今開いているワークシートの右側に
      来るようにする。

   E 書き換えるのに必要な知識を整理しておきます。

    (1)今開いているワークシートを指定するには「ActiveSheet」と
      いう言葉を使います。「今開いているワークシートの名前」を指
      定する時は「ActiveSheet.Name」というような使い方をします。

    (2)ワークシートの名前は文字列データです。前半分の日付部分を
      加工(日付変更)するにはいったん数値データ(シリアル値)に
      直しますが、そのためには「DateValue」という関数を使いま
      す。

    (3)逆に変更した日付を、文字列に直すには、「Str関数」を使い
      ます。この関数は、数値データを、10進法で表示している数字
      の並びの文字列に変えます。少し癖があって、見かけの数字の前
      に「文字列ですよ」ということを表すマークとなるデータを置い
      ているため、二桁の数字が3文字で構成されるような形で変換し
      ますので、加工に一工夫が必要です。

    (4)新しいワークシートの日付を確定するために、いったん翌日の
      日付を作成し、それでよいかどうかを確認します。そのために
      「input関数」を使って、違う日にする時は、書き換えができる
      ようにしています。

    (5)以上の点を織り込んで書き換えたのが下のマクロです。「ここ
      から」から「ここまで」までの範囲をコピーしてさっきのマクロ
      の上から貼り付けてもかまいません。

'-------ここから------------
Sub 新シート作成()
'
' 新シート作成 Macro
'
' Keyboard Shortcut: Ctrl+w
'
    wnm = ActiveSheet.Name '今開いているワークシートの名前を変数wnmに
              '取り込んでいます
    nmdat = Left(wnm, 8)  '取り込んだ名前の日付部分だけを変数nmdatに
              '取り込みます
    nmtl = Right(wnm, 7)  'ワークシート名の後半部分「パレット管理
              '表」の文字列を変数nmtlに取り込みます
    odaty = "20" & Left(nmdat, 2)'日付の年の部分を2008の形にしています
    odatm = Mid(nmdat, 4, 2)'日付の月の部分を取り込んでいます
    odatd = Right(nmdat, 2) '日付の日の部分を取り込んでいます
    odat = DateValue(odaty & "/" & odatm & "/" & odatd)
               'もとの日付のシリアル値を計算しています。
              '(ここはワークシートのセルB1から取り込む
              'ほうが簡単ですが、趣味でこの形にしていま
              'す
    ndat = odat + 1     '元の日付に1を足して翌日のシリアル値を取
              '得しています
    ndaty = Right(Str(Year(ndat)), 2)'新しい日付の年を表す文字列の08の
              '部分を取得しています。
    ndatm = Str(Month(ndat))'新しい日付の月の部分を文字列にしています
    ndatm = Right("00" & Mid(ndatm, 2, Len(ndatm) - 1), 2)
              'その文字列をさらに01の形に変換しています
    ndatd = Str(Day(ndat)) '新しい日付の日の部分の文字列にしています
    ndatd = Right("00" & Mid(ndatd, 2, Len(ndatd) - 1), 2)
              'その文字列をさらに01の形に変換しています
    
  cmt1 = "新しい日付を確認してください"
    cmt2 = "変更の際はキー入力してください"

    prompt = cmt1 & Chr(10) & cmt2 
              'inputboxで表示を促すマークに使用するコメ
              'ントです。Chr(10)は改行を指示する命令です
    hiduke = ndaty & "." & ndatm & "." & ndatd
              'ワークシート名に使用する日付の文字列で、
              'inputboxのデフォルトの表示データとして使
              'います。

  nnmdat = InputBox(prompt, , hiduke)
                '新しい日付を表示してそれでよいかどうかを
              '確認しています。変更したい時は手で書き換
              'えます。変数nnmdatには、そのまま「ok」
              'であればデフォルトの日付が、書き換えられ
              'たら書換後のデータが取り込まれます
    ActiveSheet.Copy after:=ActiveSheet
              '現在開いているワークシートをコピーして、
              '現在開いているワークシートの後ろに置きな
              'さい、という命令です。この命令が実行され
              'ると新しく作られたワークシートがアクティ
              'ブのシートに変わります
    
    ActiveSheet.Name = nnmdat & nmtl
              '新しく開いたワークシートの名前はできた時
              'には前のシート名の後ろに(2)がついたものに
              'なっていますので、その名前を前の方で苦労
              'して作った日付+「パレット管理表」に変え
              'る命令です

  ndaty = Left(nnmdat, 2) '新しいワークシートの日付の年の部分です。
              '初めに作った日付は、inputboxで表示した時
              'に書き換えられる場合がありますのであらた
              'めて、nnmdatから逆算します。
    ndatm = Mid(nnmdat, 4, 2)'同じく月の部分です
    ndatd = Right(nnmdat, 2)'同じく日の部分です
    
    Cells(1, 2).Value = DateValue("20" & ndaty & "/" & ndatm & "/" & 
ndatd)           '新しくできたワークシートのセルB1にワーク
              'シート名の日付と同じ日付を記入します。
End Sub
'--------ここまで---------


===================================

編集後記:最後までおつきあい下さりありがとうございます。

東京電力福島第一原発の汚染水貯水槽の地下部分から汚染水が漏れていること
が判明したことは、原発の安全管理上の新しい問題点を提起しました。

原因は不明との事ですが、当然貯水槽の地下部分に破損があり、そこから漏れ
出していることは疑いのないことです。

何故破損が起ったか、当然疑うべきなのは2年前の3月11日の地震とそれに
伴って続いている余震の影響です。

震災当時は漏水にいたらなかった小さな瑕疵も、M5を超える規模を含む2年
間で数万回に及ぶ余震の影響を受けて次第に拡大し、ついに大規模な漏水が始
まった、と想像するのが自然です。

東電がこの事実をひた隠ししていたとは思いません。こうなるとは予想もして
いなかった、安全神話の夢の続きを見ていたということだろうと思います。

これは、新安全基準を検討した各種機関も同じだったと思います。

日本の産業安全思想は、起ったことには対応するが、起るかもしれないことを
想像力を働かせて事前に防御するという方向にはありません。まだ起っていな
い危険についても、他に事例があれば起る可能性が高いものとして対処の対象
になりますが、前代未聞の危険の想像は起こる可能性が限りなく低いものとし
て切り捨てられるのが普通です。

ですから、汚染水貯水槽も、冷やし続けなければならない以上水が溢れる危険
は早くからいわれていましたが、2年前の地震で崩壊しなかったことで安心し
てしまい、地下部分で破損が拡大し水が漏れ出すことなど、想像したとしても
すぐに「ありえない」事として無視されたに違いありません。

実際には、想像もされなかったと思います。

折しも、阪神淡路大震災の震源地であった兵庫県淡路島で、M6.3の地震が
発生しました。注目すべきは、今回の震源が「未知の断層」と推定されている
ことです。

「発見されていない断層」がまだあり、それが動く可能性があるということの
証明は、原発立地の安全保障を根底から覆しました。

今や、原発安全基準は、再稼動のための基準ではなく、「廃炉」までの原発の
安全な管理のための基準に役割を変えざるを得ない状況になっていると思いま
す。

===================================

規約に同意してこのメルマガに登録/解除する

メルマガ情報

創刊日:2005-07-19  
最終発行日:  
発行周期:不定期  
Score!: - 点   

コメント一覧コメントを書く

この記事にコメントを書く

上の画像で表示されている文字を半角英数で入力してください。

※コメントの内容はこのページに公開されます。発行者さんだけが閲覧できるものではありません。 コメントの投稿時は投稿者規約への同意が必要です。

  • コメントはありません。