月別アーカイブ: 2010年4月
シートを一枚ずつ切り出して、それぞれ一つのブックとして保存(8)
2010年4月30日 マクロ関連(使い捨てマクロ)
銀座「紅葉時雨」
「こうようしぐれ」と読むそうです。
写真の紅葉が目の前に見える個室で、まぁ特にうるさいわけでもなく、落ち着いて飲めました。
(‐^▽^‐)
こういうリーズナブルな「コンセプト居酒屋」はちょっとした飲み会にはおもしろくていいですね。
季節外れ感はタップリでしたが…
(・∀・)
さて、いよいよゴールデンウィークですね。みなさん、お出かけの計画は完璧でしょうか。。
私は特に大きな予定も無く、ゴロゴロと過ごせれば…なぁんて言ってたら「あっ!」という間に終わっちゃうんですよね、休みって。。
( ̄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)
2010年4月25日 マクロ関連(使い捨てマクロ)
なんでも創業はかなり古く、この西新橋に移ってきたのも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)
2010年4月18日 マクロ関連(使い捨てマクロ)
ずいぶん前の写真ですみません。。(…といっても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
(^-^)ノ~~