2013年10月30日水曜日

excel VBAでwordファイルを開く

excel VBAであるボタンを押したら、
デスクトップにあるwordファイルを開く、
そのときに二重に開かないようにする
っていうコードを書いたので、
忘れないうちにまとめとく。

デスクトップにtest.docを用意しておく。

6行目、まず変数に開きたいファイルのパスを代入。
今回はデスクトップにあるtest.docを開きたい。

8行目、起こったエラーによって処理を変えるので、
エラーが起こっても処理が止まらないようにする。

10~14行目、wordが起動しているかをgetobject関数で調べる。
起動していれば、エラー番号0
起動していなければ、エラー番号429
起動していないときには、createobject関数でwordを起動させる。
getobjectを使わずに、createobjectを使うと、
毎回毎回新しくwordが起動して、無駄。

16行目、ここで一旦エラーをクリアにする。

18行目~25行目、次に開きたいファイルの名前を上書きする。
C:\Users\ユーザー名\Desktop\test.docをC:\Users\ユーザー名\Desktop\test.docで。
このときに既にファイルを開いている場合には、
名前の変更ができずに、エラー番号75。
開いてない場合には、名前の変更ができて、エラー番号0。

29行目、最後にオブジェクトへの参照を解除する。

これをボタンなりなんなりにマクロの登録をしていれば、
それをクリックすることで、指定したwordファイルが開けます。

ネットで検索しても、なかなか解決策出てこず、
あーだこーだ言いながら、作ってみました。
誰かの助けになればいいな。

2013年10月29日火曜日

VBAのmsgbox関数

msgbox関数ってよく使う。
メッセージを表示させたり、
確認メッセージを表示させて、
yesnoを選ばせたり。

でも今まで知らないことがあった!

戻り値必要なときは、msgbox ( "メッセージとか" )
戻り値不要なときは、msgbox "メッセージとか"

こんな簡単なことに今日はじめて気づいた。

2013年10月24日木曜日

ボタンを押して、javascriptを実行させる

「よくわかるJavascriptの教科書」を読んで、勉強中。
P80からは、ボタンを押して、Javascriptを実行させるお話。

今までブログにボタンを押したら、
javascriptを実行できるボタンを設置してたんだけど、
テキストのやり方となんか違う…

今までのやり方
<input onclick="OnButtonClick();" type="button" value="実行" />
<script language="javascript" type="text/javascript">
function OnButtonClick() {プログラム}
</script>

テキストでのやり方
<input id="適当な名前" type="button" value="実行" />
<script language="javascript" type="text/javascript">
document.getElementById('適当な名前').onclick = function() {プログラム}
</script>

これからはテキストのやり方でやってみよう。
早速試してみる。

2013年10月21日月曜日

配列

「よくわかるJavascriptの教科書」を読んで、勉強中。
P74からは、配列のお話。

配列を使うと、数字以外の要素も簡単に
繰り返しなどの処理で使えるようになるらしい。
配列の宣言方法は…

var 変数名 = new Array ( 要素をいくつでも );

で、要素にはそれぞれ背番号みたいなものがついてて、
それは0からはじまる。

P76の練習問題は、配列を利用して、
都道府県をドロップダウンリストに表示するというもの。
それをjavascriptで書くと…



配列の添字に使う括弧を最初[]じゃなく、()を使ってて、動かなかった…。
失敗して、学んでいこう。

繰り返し処理(whileとfor)

「よくわかるJavascriptの教科書」を読んで、勉強中。
P66からは、繰り返し処理のお話。

whileとforは同じような処理をする。
違いは書き方。

変数の宣言
while ( 条件 ) {
   繰り返す処理
   繰り返しごとの更新処理
}

for ( 変数の宣言 ; 条件 ; 繰り返しごとの更新処理 ) {
   繰り返す処理
}

P70に練習問題がある。
右図のように、2個ずつしか選べない商品について、
2個から20個まで選べるようなドロップダウンリストを作ろう。

それをjavascriptで書くと…





論理演算子の練習問題

「よくわかるJavascriptの教科書」を読んで、勉強中。
P65の論理演算子の問題を解いてみる。

現在の時刻が、9時30分00秒または10時00分45秒の場合に、
「起きる時間です」と表示する目覚ましスクリプト



三項演算子

「よくわかるJavascriptの教科書」を読んで、勉強中。
P62からは、論理演算子のお話だったけど、
簡単だったので、ちょっと飛ばして、三項演算子へ。

単純なif構文を1文で書けるのが三項演算子。
普通にif構文を書くと…

となるのが、三項演算子で書くと…

あらま、簡単!

単純なif構文のときは、使っていきたいね。

2013年10月20日日曜日

比較演算子

「よくわかるJavascriptの教科書」を読んで、勉強中。
P57からは、比較演算子のお話。

比較演算子には、種類がある。

===  等しい
>  より大きい
<  より小さい
>=  以上
<=  以下
!==  等しくない

現在の時刻を午前か午後か表示するプログラムは、
次のようになる。





最初「getHours」を「gethours」って書いてて、動かなかった…。
大切なんだね、大文字小文字…。

文字列連結

「よくわかるJavascriptの教科書」を読んで、勉強中。
P52からは、writeメソッドと文字連結のお話。

演算の結果や文字列を表示するには、writeメソッドを使う。
文字列は(+)で繋げることができる。
writeメソッドのパラメータにHTMLを記述することもできる。


変数

「よくわかるJavascriptの教科書」を読んで、勉強中。
P46からは、変数のお話。

変数には自由に名前が付けれるが、
いくつかルールがある。

英字、アンダースコア(_)、ドル記号からはじまる。
数字からは、はじめられない。

予約語ではないこと。

予約語とは、変数名として使うとややこしくなるから、
javascriptが使わないでねって決めてるキーワード。


  • break
  • case
  • catch
  • continue
  • default
  • delete
  • do
  • else
  • finally
  • for
  • function
  • if
  • in
  • instanceof
  • new
  • return
  • switch
  • this
  • throw
  • try
  • typeof
  • var
  • void
  • while
  • with

大文字と小文字が違う場合は「別の変数」として認識される。

namecompanyとnameCompanyは違う変数。

キャメルシンタックスを使うのがおすすめ。

小文字ではじめて、複数の単語を組み合わせる場合は、
2語目以降を大文字ではじめる。
namePersonCompanyとかとか。



2013年10月19日土曜日

confirmの練習問題

「よくわかるJavascriptの教科書」を読んで、勉強中。

P45の練習問題を考えてみる。
ちなみに問題は…

1月は別名「睦月」。同じように6月は「文月」である。
(○:OK / ×:キャンセル)
という確認ボックスを表示して、
「OK」の場合は「はずれ!正解は水無月」
「キャンセル」の場合は「正解!」
と表示するプログラムを作ろう。

confirmとifを利用して…



できた!

2013年10月18日金曜日

confirmで戻り値を知る

「よくわかるjavascriptの教科書」を読んで、勉強中。

P41からconfirmとifのお話。
confirmは確認ボックスを表示させ、
ユーザーにokかキャンセルを選ばせるもの。
それをjavascriptで書くと…




となる。alertにそっくり。
alertと違うのは、ユーザーが選んだ結果を得ることができるとこ。
帰ってくる値は、true/falseのどちらか。
こういうのをboolean値(ぶーりあんち)というらしい。

この結果を受けて、表示させるメッセージを変えたり、
処理を変えたりできる。
そのときに使うのが、if。




confirmとifを組み合わせると、
ユーザーが押したボタンによって、
プログラムを変えることができる。




javascriptの中で、句読点を使うには

bloggerでjavascriptを使って、
alertメソッドを次のようにすると…




と、読点は「&#12289;」、句点は「&#12290;」となって、
うまく表示されません。
これは…文字コードの問題なんですかね。

utf-16では読点は「3001」、句点は「3002」なので、
それぞれ「\u」を付けて、「\u3001」「\u3002」とすると…





うまく表示できました。ぱちぱちぱち。
句読点を使えるようになって、なんだか一安心

テンプレートのhtmlを触れば、こんなことしなくてもいいのかな?
誰か知っている方、教えてください。

クオーテーションとエスケープシーケンス

よくわかるJavascriptの教科書を読みながら、勉強中。

P36でwindow.alert(パラメータ)を学んだんだけど、
パラメータに使えるのは、2つあって、
それはシングルクォーテーション(')とダブルクオーテーション(")。


みたいに、2つあると、
パラメータの中の記号と外の記号を使い分けて、記述できる。
著者の人曰く「パラメータを囲うのは、シングルクォーテーションでいいよ」とのこと。
HTMLのタグの属性にダブルクオーテーションを使うから、
それと重ならないように、シングルクオーテーションがおすすめらしい。

alertの中の文章が長くなってしまう場合は、


と書くと、ダメらしい。
改行はプログラムにとって、重要だから。


というふうに、「\n」という記号を改行したいとこに入れる。
この記号をエスケープシーケンスという。

下の実行ボタンを押すと、長いメッセージが改行されて、表示される…はず!

2013年10月17日木曜日

weekday関数とweekdayname関数と

お仕事でよくexcelを触ります。
アナログな仕事…というか作業は、
イライラします…。
それを自動化したくて、VBAに興味持って、
プログラミングに興味持って、
もっとたくさん勉強したくなりました。

というわけで、今日はVBAのお話。

VBAは、ユーザーフォームとかを
ぽぽいのぽいって感じで作れて、便利だよね。
特に人に使ってもらうものは、
説明がめんどうだから、
ユーザーフォームだけで入力とか印刷をできるようにしてれば、
「あ~そのセルには、そのデータは~(T_T)」
ってことにもならないし。

で、ユーザーフォームでは、よく日付を使います。

テキストボックス3つ用意して、
年、月、日を分けたりして。



この3つの数字をdateserial関数に入れて、日付に変換。
さらにそれをweekday関数の引数にすると…


3と出ます。
weekday関数は日付のシリアル値に対して、
日付に対応した値を返してくれます。

日曜日→1
月曜日→2
火曜日→3
水曜日→4
木曜日→5
金曜日→6
土曜日→7

weekday関数で返ってきた値を
weekdayname関数の引数として与えてあげると…


こんなふうに、指定した日付の曜日を知ることができます。
日報プログラムとかをVBAで作るときに使えますね。

2013年10月15日火曜日

とりあえずのHello Worldから

Syntax highlightでコードを表示できるようになった…
うれしい!

で、まずはHello Worldを表示させる。
コードは下のとおりで、下の実行ボタンを押すと、
アラートが表示されます。

小さすぎる第一歩を踏み出せたかな。