The Road to EXCELER ~エクセラーへの道~
ブログ
  • HOME »
  • ブログ »
  • 月別アーカイブ: 2010年4月

月別アーカイブ: 2010年4月

シートを一枚ずつ切り出して、それぞれ一つのブックとして保存(8)

銀座「紅葉時雨」
「こうようしぐれ」と読むそうです。

写真の紅葉が目の前に見える個室で、まぁ特にうるさいわけでもなく、落ち着いて飲めました。

(‐^▽^‐)

こういうリーズナブルな「コンセプト居酒屋」はちょっとした飲み会にはおもしろくていいですね。
季節外れ感はタップリでしたが…
(・∀・)

さて、いよいよゴールデンウィークですね。みなさん、お出かけの計画は完璧でしょうか。。

私は特に大きな予定も無く、ゴロゴロと過ごせれば…なぁんて言ってたら「あっ!」という間に終わっちゃうんですよね、休みって。。

( ̄0 ̄;ノ

゚・*:.。..。.:*・゚゚・*:.。..。.:*・゚ ゚・*:.。..。.:*・゚゚・*:.。..。.:*・゚ ゚・*:.。..。.:*・゚

前回はここ↓まで終了しました。

「For~Next」を付けたしたのと、赤字BOLDが自動記述を変更した点です。

For i=1 To Worksheets.Count

Sheets(i).Select …①
Sheets(i).Copy …②
ActiveWorkbook.SaveAs Filename:="C:\エクセラー\TEST2.xls",  FileFormat:=xlNormal _, Password:="", WriteResPassword:="",  ReadOnlyRecommended:=False, _CreateBackup:=False …③
Windows("Book1.xls").Activate …④
Next i

③の意味は、シートをコピーしてできた新しいファイルに「TEST2.xls」という名前を付けて、「C\エクセラー」フォルダに保存する、ということでしたね。

(青字以降、後半の、ファイルフォーマットがどうのこうのとか、パスワードがどうのこうのとかは、見るからにオプション設定をどうするかという話なので、ここではそのままイジらないことにしましょう。)

この部分について、「ファイル名を、A1セルに入力されている文字にする」というコードに変更しましょう。

A1セルの文字を取得するのは、

Range("A1")

だけでOKです。

そして、文字列は、「&」を使って結合させることができます。

例えば、a=3 のとき、"デスクワークを"&a&"倍効率化" とすると、"デスクワークを3倍効率化"という一つの文字列ができます。

なので、青字で書いたファイル名のところを、

"C:\エクセラー\" & Range("A1") & ".xls"

としておけば、A1セルに入力されている文字をファイル名とすることができます。

8回にわたってお届けしてきた「シートを一枚ずつ切り出して、それぞれ一つのブックとして保存」するマクロは、最終的にこのようになります。

For i=1 To Worksheets.Count

Sheets(i).Select
Sheets(i).Copy
ActiveWorkbook.SaveAs Filename:="C:\エクセラー\" & Range("A1") & ".xls",  FileFormat:=xlNormal _, Password:="", WriteResPassword:="",  ReadOnlyRecommended:=False, _CreateBackup:=False
Windows("Book1.xls").Activate
Next i

コメント文付きでプログラム全体を添付しておきますね。

ちなみに、半角スペース+"_"(アンダースコア)は、単に折り返しを意味しているだけですので気にしないでください。

マクロは一行ずつ命令文を完結させるので、一文が長くなってくると、「次の行も続いてますよ」ということを示すために付けます。


シートを一枚ずつ切り出して、それぞれ一つのブックとして保存(7)

うなぎ吉田屋。

西新橋にある老舗のうなぎ屋さん。

なんでも創業はかなり古く、この西新橋に移ってきたのも50年以上前というだけあって、見るからに歴史を感じるお店でした。。

(  ゚ ▽ ゚ 😉

こんな感じ←で、炭火でパタパタとうなぎを焼いてくれます。

…で、できあがりはこちら↓。

固すぎず、やわらかすぎず、タレも辛すぎず、甘すぎずと、なかなかバランスのとれたうな重でしたよ。

v(^-^)

長年続いているだけあります。

給料日にまた来よっと。。

(^^ゞ

゚・*:.。..。.:*・゚゚・*:.。..。.:*・゚ ゚・*:.。..。.:*・゚゚・*:.。..。.:*・゚

さて、For~Next ではさみこんで、3回繰り返す形にしたところ↓まで、前回終わっていましたね。

For i=1 To 3

Sheets("Sheet2").Select …①
Sheets("Sheet2").Copy …②
ActiveWorkbook.SaveAs Filename:="C:\エクセラー\TEST2.xls",  FileFormat:=xlNormal _, Password:="", WriteResPassword:="",  ReadOnlyRecommended:=False, _CreateBackup:=False …③
Windows("Book1.xls").Activate …④
Next i

今回のケースは、3つのシートを切り出して、それぞれ「TEST1」,「TEST2」,「TEST3」というファイルとして保存するので、いったん3回繰り返す形にしましたが、何枚シートがくっついていてもできるように汎用性を持たせるには、この「3」という数値を、ブックを構成するシートの枚数を表す、「Worksheets.Count」に変更する必要があります。

For i=1 To Worksheets.Count

ですね。

次に、①と②は、「Sheet2」を選択してコピーするコードになっているので、このまま何回繰り返しても「Sheet2」ばかりがコピーされてしまいます。

順番にシートが選択されてコピーされるようにするには、

Sheets(i).Select


としておけば、i=1のときは、左から1番目のシートを選択,i=2のときは左から2番目のシートを選択,…というように、「i」の値によって順番にシートが選択されていきます。

②のコピーも同様です。

どうも長くなってしまいますので、③の、ファイル名を、A1セルに入力されている文字にするところは次回にまわしますね。。

(;^_^A

シートを一枚ずつ切り出して、それぞれ一つのブックとして保存(6)

四谷駅近くの桜並木です。

ずいぶん前の写真ですみません。。(…といっても2週間たってませんが)

このときはこのまま赤坂見附までお散歩しようとしたのですが、反対されました。。まぁ時間的にも遅かったしね。。
(_ _。)

行ったお店はサルヴァトーレ・クオモ↓四谷店。

世界的ななんとか大賞受賞の「D.O.C」はもちろんのこと、ゴルゴンゾーラチーズとハチミツのピザもおいしかったです!

しかし東京は桜の季節も終わったというのに積雪を記録。。41年振りの遅さとのこと。

温暖化に向かうのか?はたまたプチ氷河期に向かうのか…?

(@_@)

゚・*:.。..。.:*・゚゚・*:.。..。.:*・゚ ゚・*:.。..。.:*・゚゚・*:.。..。.:*・゚

前回、自動記述でつくったコードを再掲します。

Sheets("Sheet2").Select …①
Sheets("Sheet2").Copy …②
ActiveWorkbook.SaveAs Filename:="C:\エクセラー\TEST2.xls",  FileFormat:=xlNormal _, Password:="", WriteResPassword:="",  ReadOnlyRecommended:=False, _CreateBackup:=False …③
Windows("Book1.xls").Activate …④
Sheets("Sheet3").Select …⑤
Sheets("Sheet3").Copy
ActiveWorkbook.SaveAs Filename:="C:\エクセラー\TEST3.xls", FileFormat:=xlNormal _, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _CreateBackup:=False
Windows("Book1.xls").Activate

⑤以降のコードは、①~④の作業を、「Sheet2」→「Sheet3」,「TEST2」→「TEST3」に置き換えて繰り返しています。

繰り返すときに使うコードは、「For~Next」でしたね。(復習はこちら
からどうぞ…)

さて、何回繰り返しますか?

今回のケースは、3つのシートを切り出して、それぞれ「TEST1」,「TEST2」,「TEST3」というファイルとして保存するので、3回ですね。まぁ、でもせっかくなので、何枚シートがくっついていてもできるように汎用性を持たせましょう。

ここで、このケースでのポイントを3つ。。

1.ブックを構成するシートの枚数は、「Worksheets.Count」で取得できる。

2.ブックを構成するシートの、左から○番目のシートを選択するには、「Sheets(○).Select」。(同様に、コピーは、「Sheets(○).Copy」)

3.「&」を使って文字列を結合させることができる。(例えば、a=3 のとき、"デスクワークを"&a&"倍効率化" とすると、"デスクワークを3倍効率化"という一つの文字列ができる。)

For~Next ではさみこんで、3回繰り返す形にしたところ↓から、次回修正を加えていきます。

For i=1 To 3

Sheets("Sheet2").Select …①
Sheets("Sheet2").Copy …②
ActiveWorkbook.SaveAs Filename:="C:\エクセラー\TEST2.xls",  FileFormat:=xlNormal _, Password:="", WriteResPassword:="",  ReadOnlyRecommended:=False, _CreateBackup:=False …③
Windows("Book1.xls").Activate …④
Next i

(^-^)ノ~~

Page 1 / 212

最近の投稿