Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1783 / 13645 ツリー ←次へ | 前へ→

【71931】BOOK&シート操作と日付操作のマクロ作成 裕子 12/4/28(土) 14:03 質問[未読]
【71932】Re:BOOK&シート操作と日付操作のマクロ... かみちゃん 12/4/28(土) 14:16 発言[未読]
【71933】Re:BOOK&シート操作と日付操作のマクロ... 裕子 12/4/28(土) 14:39 発言[未読]
【71936】Re:BOOK&シート操作と日付操作のマクロ... かみちゃん 12/4/28(土) 18:15 発言[未読]
【71937】Re:BOOK&シート操作と日付操作のマクロ... 裕子 12/4/29(日) 9:18 発言[未読]
【71938】Re:BOOK&シート操作と日付操作のマクロ... かみちゃん 12/4/29(日) 9:21 発言[未読]
【71939】Re:BOOK&シート操作と日付操作のマクロ... 裕子 12/4/29(日) 9:40 発言[未読]
【71940】Re:BOOK&シート操作と日付操作のマクロ... かみちゃん 12/4/29(日) 9:47 発言[未読]
【71941】Re:BOOK&シート操作と日付操作のマクロ... 裕子 12/4/29(日) 10:06 発言[未読]
【71942】Re:BOOK&シート操作と日付操作のマクロ... かみちゃん 12/4/29(日) 10:19 発言[未読]
【71943】Re:BOOK&シート操作と日付操作のマクロ... 裕子 12/4/29(日) 11:10 発言[未読]
【71944】Re:BOOK&シート操作と日付操作のマクロ... 裕子 12/4/29(日) 11:36 質問[未読]
【71945】Re:BOOK&シート操作と日付操作のマクロ... かみちゃん 12/4/29(日) 13:57 発言[未読]
【71950】Re:BOOK&シート操作と日付操作のマクロ... 裕子 12/4/30(月) 9:16 発言[未読]
【71951】Re:BOOK&シート操作と日付操作のマクロ... かみちゃん 12/4/30(月) 10:05 発言[未読]
【71952】Re:BOOK&シート操作と日付操作のマクロ... 裕子 12/4/30(月) 17:34 発言[未読]
【71953】Re:BOOK&シート操作と日付操作のマクロ... かみちゃん 12/4/30(月) 17:46 発言[未読]
【71954】Re:BOOK&シート操作と日付操作のマクロ... 裕子 12/4/30(月) 19:19 発言[未読]
【71955】Re:BOOK&シート操作と日付操作のマクロ... かみちゃん 12/4/30(月) 19:49 発言[未読]
【71956】Re:BOOK&シート操作と日付操作のマクロ... 裕子 12/4/30(月) 20:02 発言[未読]
【71957】Re:BOOK&シート操作と日付操作のマクロ... かみちゃん 12/4/30(月) 20:09 発言[未読]
【71960】Re:BOOK&シート操作と日付操作のマクロ... hint 12/5/3(木) 10:56 発言[未読]

【71931】BOOK&シート操作と日付操作のマクロ...
質問  裕子  - 12/4/28(土) 14:03 -

引用なし
パスワード
   はじめまして。
マクロの勉強を始めたばかりでして、
課題となったマクロ作成のヒント(解説)をいただきたく投稿させていただきました。


課題:BOOK&シート操作と日付操作のマクロ作成

以下の条件があります。

1.新規BOOKを開いてフォルダ(任意で作成)に名前を付けて保存するマクロ作成。

2.関数で日付(YYYYMMDD)の作成
 例)20120427や20121212など

3.シート名を2.で作成した日付の名前に変更するマクロコードの作成

以上になります。

2.の操作は「セルの書式設定」の「ユーザー定義」で"YYYYMMDD"を作成し、
TODAY関数を入力することで表示させることで解決出来ています。 

どうぞ皆様のお力を貸してください。
上記の2.の方法も付け加える事があればお言葉添えをよろしくお願いします。

【71932】Re:BOOK&シート操作と日付操作のマク...
発言  かみちゃん  - 12/4/28(土) 14:16 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>マクロの勉強を始めたばかりでして、
>課題となったマクロ作成のヒント(解説)をいただきたく

したい操作を「マクロの記録」で記録してみてください。
コードが自動的にできあがります。

「マクロの記録」の記録方法がわからない場合は、Excelのバージョンを教えてください。

【71933】Re:BOOK&シート操作と日付操作のマク...
発言  裕子  - 12/4/28(土) 14:39 -

引用なし
パスワード
   ▼かみちゃん さん:

かみちゃんさんお返事ありがとうございます。

申し訳ありません。説明不足でした。
「マクロの記録」ボタンはわかります。
記録を始めてからの操作方法の解説をお願いいたします。


>こんにちは。かみちゃん です。
>
>>マクロの勉強を始めたばかりでして、
>>課題となったマクロ作成のヒント(解説)をいただきたく
>
>したい操作を「マクロの記録」で記録してみてください。
>コードが自動的にできあがります。
>
>「マクロの記録」の記録方法がわからない場合は、Excelのバージョンを教えてください。

【71936】Re:BOOK&シート操作と日付操作のマク...
発言  かみちゃん  - 12/4/28(土) 18:15 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>「マクロの記録」ボタンはわかります。
>記録を始めてからの操作方法の解説をお願いいたします。

1.新規BOOKを開いてフォルダ(任意で作成)に名前を付けて保存する
2.関数で日付(YYYYMMDD)の作成
3.シート名を2.で作成した日付の名前に変更する

の操作を行ないます。

まずは、ここまで出来たコードを提示してみてください。
その後、2.と3.について微修正する必要があるかもしれません。

【71937】Re:BOOK&シート操作と日付操作のマク...
発言  裕子  - 12/4/29(日) 9:18 -

引用なし
パスワード
   ▼かみちゃん さん:

おはようございます。
お返事が遅くなり申し訳ありませんでした。

Sub Macro1()
'
' Macro1 Macro
'

'
  Workbooks.Add
  Windows("練習宿題.xlsm").Activate
  Windows("Book1").Activate
  ActiveWorkbook.SaveAs Filename:="C:\Users\○○○\Documents\Book1.xlsx", _
    FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
  Windows("練習宿題.xlsm").Activate
End Sub


上記コードが
新規BOOK作成→任意の名前で保存
になります。

ちなみに「○○○」は私の名前になりますのでこのような表示にさせていただきました。

【71938】Re:BOOK&シート操作と日付操作のマク...
発言  かみちゃん  - 12/4/29(日) 9:21 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>上記コードが
>新規BOOK作成→任意の名前で保存
>になります。
>
>ちなみに「○○○」は私の名前になりますのでこのような表示にさせていただきました。

それでいいのですが、微修正が必要になってくるのは、

2.関数で日付(YYYYMMDD)の作成
3.シート名を2.で作成した日付の名前に変更する

の部分ですから、この部分も「マクロの記録」で記録したコードを提示することはできませんか?

【71939】Re:BOOK&シート操作と日付操作のマク...
発言  裕子  - 12/4/29(日) 9:40 -

引用なし
パスワード
   ▼かみちゃん さん:

Workbooks.Add
  Selection.NumberFormatLocal = "yyyymmdd"
  ActiveCell.FormulaR1C1 = "=TODAY()"

このコードで指定された表示はできるのですが、
これをシート名に反映させるにはどうしたらいいのかがわからないんです。

【71940】Re:BOOK&シート操作と日付操作のマク...
発言  かみちゃん  - 12/4/29(日) 9:47 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>このコードで指定された表示はできるのですが、
>これをシート名に反映させるにはどうしたらいいのかがわからない

いきなりそういうことを考えようとするからわからないのだと思います。
とりあえず、「20120429」という名前でシート名を変更する操作をしてみて、
その操作を「マクロの記録」で記録してみて、その記録してできたコードを
提示してみてはいかがですか?

そこまでできれば、後は、どうすればいいかは説明します。

【71941】Re:BOOK&シート操作と日付操作のマク...
発言  裕子  - 12/4/29(日) 10:06 -

引用なし
パスワード
   ▼かみちゃん さん:

Sub Macro4()
'
' Macro4 Macro
'

'
  Sheets("Sheet1").Select
  Sheets("Sheet1").Name = "20120429"
End Sub


上記コードで表示されました。

【71942】Re:BOOK&シート操作と日付操作のマク...
発言  かみちゃん  - 12/4/29(日) 10:19 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>上記コードで表示されました。

全体のコードがどうなっているのかわかりませんが、

"20120429"

の部分を

ActiveCell.Text

とすれば、できると思います。

【71943】Re:BOOK&シート操作と日付操作のマク...
発言  裕子  - 12/4/29(日) 11:10 -

引用なし
パスワード
   ▼かみちゃん さん:

できました。
かみちゃんさん、昨日から解説とご指導ありがとうございました。

少し質問させてください。
"ActiveCell.Text"
の意味は
"その日"
という意味になるのでしょうか。

【71944】Re:BOOK&シート操作と日付操作のマク...
質問  裕子  - 12/4/29(日) 11:36 -

引用なし
パスワード
   すみません。
私の勘違いでエラーと不具合が出てしまいました。
私が作成したコードはこちらです。


Sub Macro1()
'
' Macro1 Macro
'

'
  Workbooks.Add
  Windows("練習宿題.xlsm").Activate
  
 ★Sheets("Sheet1").Select
  Sheets("Sheet1").Name = ActiveCell.Text
  
  Windows("Book1").Activate
  ActiveWorkbook.SaveAs Filename:="C:\Users\○○○\Documents\Book1.xlsx", _
    FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
  Windows("練習宿題.xlsm").Activate


End Sub


★"Sheets("Sheet1").Select"に来た時に
"インデックスが有効範囲にありません"
とエラーになります。
そのエラーは新規に作成されたBOOKではなく元のBOOKに戻ってからエラーになります。

【71945】Re:BOOK&シート操作と日付操作のマク...
発言  かみちゃん  - 12/4/29(日) 13:57 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>"ActiveCell.Text"
>の意味は
>"その日"
>という意味になるのでしょうか。

違います。ヘルプで調べられましたか?
アクティブセルの文字列という意味です。

その日という意味であれば、
"20120429"
の部分を
Format(Date, "yyyymmdd")
です。

なお、厳密には、"その日" とは、マクロを実行しているパソコンの日付になります。

> ★"Sheets("Sheet1").Select"に来た時に
> "インデックスが有効範囲にありません"
> とエラーになります。
> そのエラーは新規に作成されたBOOKではなく元のBOOKに戻ってからエラーになります。

なぜ、元のBookに戻るのですか?

>>> 以下の条件があります。
>>>
>>> 1.新規BOOKを開いてフォルダ(任意で作成)に名前を付けて保存するマクロ作成。
>>>
>>> 2.関数で日付(YYYYMMDD)の作成
>>>  例)20120427や20121212など
>>>
>>> 3.シート名を2.で作成した日付の名前に変更するマクロコードの作成

ではなかったのですか?

原因としては、元のBookのシート名Sheet1を日付の名前に変更してしまって、
Sheet1という名前のシートがなくなっているものと思われます。
元のBookに戻るという条件はないはずですが・・・

もう一度、上記の条件をすべて「マクロの記録」で記録してみてはいかがですか?
上記の条件が本当ならば、
Windows("練習宿題.xlsm").Activate
というコードは、出てこないはずです。

>>> 課題となったマクロ作成のヒント

ということですので、勉強していただきたいので、直接の回答を書くのを控えています。
直接の回答が必要であれば、書きますが、課題解決のお手伝いをしてもいいのでしょうか?

【71950】Re:BOOK&シート操作と日付操作のマク...
発言  裕子  - 12/4/30(月) 9:16 -

引用なし
パスワード
   ▼かみちゃん さん:

おはようございます。
昨日はたくさんのアドバイスありがとうございました。

あれからいろいろと考えてみたのですが、
解決策が分からず今日になってしまいました。

すみませんが、教えていただいてもよろしいでしょうか。

【71951】Re:BOOK&シート操作と日付操作のマク...
発言  かみちゃん  - 12/4/30(月) 10:05 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>あれからいろいろと考えてみたのですが、
>解決策が分からず

どのように考えたのか、見せていただけませんか?

> 教えていただいてもよろしいでしょうか。

何を教えてほしいのでしょうか?
課題の答えを書いてくださいということですか?
課題のお手伝いをするのはいいのですが、冷たいことを言いますと、
裕子さんのチカラにはならないと思いますが、それでもいいのでしょうか?

チカラにならなくてもよくて、課題ができればいいのであれば、
せめて以下の問いかけにはお答えいただけませんか?

>>> ★"Sheets("Sheet1").Select"に来た時に
>>> "インデックスが有効範囲にありません"
>>> とエラーになります。
>>> そのエラーは新規に作成されたBOOKではなく元のBOOKに戻ってからエラーになります。
>>
>> なぜ、元のBookに戻るのですか?
>>
>>>>> 以下の条件があります。
>>>>>
>>>>> 1.新規BOOKを開いてフォルダ(任意で作成)に名前を付けて保存するマクロ作成。
>>>>>
>>>>> 2.関数で日付(YYYYMMDD)の作成
>>>>>  例)20120427や20121212など
>>>>>
>>>>> 3.シート名を2.で作成した日付の名前に変更するマクロコードの作成
>>
>> ではなかったのですか?
>>
>> 原因としては、元のBookのシート名Sheet1を日付の名前に変更してしまって、
>> Sheet1という名前のシートがなくなっているものと思われます。
>> 元のBookに戻るという条件はないはずですが・・・
>>
>> もう一度、上記の条件をすべて「マクロの記録」で記録してみてはいかがですか?
>> 上記の条件が本当ならば、
>> Windows("練習宿題.xlsm").Activate
>> というコードは、出てこないはずです。

たぶん、前提条件と違う操作をしていて、単に勘違いをしている、
もしくは、前提条件の説明がもれていると思われます。

【71952】Re:BOOK&シート操作と日付操作のマク...
発言  裕子  - 12/4/30(月) 17:34 -

引用なし
パスワード
   ▼かみちゃん さん:

遅くなってしまいました。

Sheet1の名前が日付になっていましたので、
"Sheet1"に変更し直してもう一度マクロを実行してみました。

すると、新規のBookは作成されるのですが
★「アプリケーション定義またはオブジェクト定義のエラーです」
と新たなエラーが出てきました。

ずっと私の問いに答えていただき申し訳ありません。

もう一度コードを記載しておきます。

Sub Macro1()
'
' Macro1 Macro
'

'
  Workbooks.Add
  Windows("練習宿題.xlsm").Activate
  
  Sheets("Sheet1").Select
  ★Sheets("Sheet1").Name = ActiveCell.Text
  
  Windows("Book1").Activate
  ActiveWorkbook.SaveAs Filename:="C:\Users\○○○\Documents\Book1.xlsx", _
    FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
  Windows("練習宿題.xlsm").Activate
  
End Sub

【71953】Re:BOOK&シート操作と日付操作のマク...
発言  かみちゃん  - 12/4/30(月) 17:46 -

引用なし
パスワード
   こんにちは。かみちゃん です。

> 新規のBookは作成されるのですが
> ★「アプリケーション定義またはオブジェクト定義のエラーです」
> と新たなエラーが出てきました。

ActiveCell.Text が 空白の場合、そのエラーになります。

>>>>> 2.関数で日付(YYYYMMDD)の作成
>>>>>  例)20120427や20121212など

の操作をしたときのコードは、どこに行ったのですか?

ちなみに

>>> "ActiveCell.Text"
>>> の意味は
>>> "その日"
>>> という意味になるのでしょうか。
>>
>> 違います。ヘルプで調べられましたか?
>> アクティブセルの文字列という意味です。
>>
>> その日という意味であれば、
>> "20120429"
>> の部分を
>> Format(Date, "yyyymmdd")
>> です。
>>
>> なお、厳密には、"その日" とは、マクロを実行しているパソコンの日付になります。

という説明もしています。

> もう一度コードを記載しておきます。

落ち着いて、

>>> 以下の条件があります。
>>>
>>> 1.新規BOOKを開いてフォルダ(任意で作成)に名前を付けて保存するマクロ作成。
>>>
>>> 2.関数で日付(YYYYMMDD)の作成
>>>  例)20120427や20121212など
>>>
>>> 3.シート名を2.で作成した日付の名前に変更するマクロコードの作成

の操作だけを再度、「マクロの記録」で記録してみてはいかがですか?

この条件では、

 Windows("練習宿題.xlsm").Activate

というコードは記録されないはずです。

「練習宿題.xlsmをアクティブにする」または、「元のBOOKに戻る」という
条件は書かれていないからです。

大きな原因は、余計な操作をしているように思います。
落ち着いて、最初から作りなおしていただければ、もう少しで解決できるはずです。

【71954】Re:BOOK&シート操作と日付操作のマク...
発言  裕子  - 12/4/30(月) 19:19 -

引用なし
パスワード
   ▼かみちゃん さん:

それぞれを別々にして考えてみました。

1.新規BOOKを開いてフォルダ(任意で作成)に名前を付けて保存するマクロ作成。

Sub Macro1()
'
' Macro1 Macro
'

'
  Workbooks.Add
  ActiveWorkbook.SaveAs Filename:="G:\Book12.xlsx", FileFormat:= _
    xlOpenXMLWorkbook, CreateBackup:=False
End Sub


2.関数で日付(YYYYMMDD)の作成
「セルの書式設定」の「ユーザー定義」で"YYYYMMDD"を作成後TODAY関数を入力。


3.シート名を2.で作成した日付の名前に変更するマクロコードの作成

Sub Macro1()
'
' Macro1 Macro
'

'
  Sheets("Sheet1").Select
  Sheets("Sheet1").Name = "ActiveCell.Text"

End Sub


これらのコードの組み合わせということになるんですよね。

【71955】Re:BOOK&シート操作と日付操作のマク...
発言  かみちゃん  - 12/4/30(月) 19:49 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>それぞれを別々にして考えてみました。

どうしてそういう考えにしたのですか?

>>>>> 以下の条件があります。
>>>>>
>>>>> 1.新規BOOKを開いてフォルダ(任意で作成)に名前を付けて保存するマクロ作成。
>>>>>
>>>>> 2.関数で日付(YYYYMMDD)の作成
>>>>>  例)20120427や20121212など
>>>>>
>>>>> 3.シート名を2.で作成した日付の名前に変更するマクロコードの作成
>>
>> の操作だけを再度、「マクロの記録」で記録してみてはいかがですか?

と言ったはずです。

> 2.関数で日付(YYYYMMDD)の作成
> 「セルの書式設定」の「ユーザー定義」で"YYYYMMDD"を作成後TODAY関数を入力。

【71939】で提示されたコードはどこに行ったのですか?

> 3.シート名を2.で作成した日付の名前に変更するマクロコードの作成

【71941】と【71942】を読み返してみてください。

>  Sheets("Sheet1").Name = "ActiveCell.Text"

実行してみればわかることですが、
このような記述にするような説明はしていません。

一度に解決しようとせずに、もっと落ち着いて、考えればいいと思います。

【71956】Re:BOOK&シート操作と日付操作のマク...
発言  裕子  - 12/4/30(月) 20:02 -

引用なし
パスワード
   はい、落ち着いて一から考え直してみます。

お返事が遅くなるかもしれませんが、
その時にはまたよろしくお願いいたします。

【71957】Re:BOOK&シート操作と日付操作のマク...
発言  かみちゃん  - 12/4/30(月) 20:09 -

引用なし
パスワード
   こんにちは。かみちゃん です。

> 落ち着いて一から考え直してみます。

考え直す必要はありません。
以下のことを再度していただければいいだけです。

>>>>> 以下の条件があります。
>>>>>
>>>>> 1.新規BOOKを開いてフォルダ(任意で作成)に名前を付けて保存するマクロ作成。
>>>>>
>>>>> 2.関数で日付(YYYYMMDD)の作成
>>>>>  例)20120427や20121212など
>>>>>
>>>>> 3.シート名を2.で作成した日付の名前に変更するマクロコードの作成
>>
>> の操作だけを再度、「マクロの記録」で記録してみてはいかがですか?


なお、
>>>>> 3.シート名を2.で作成した日付の名前に変更する
部分は、一時的に
>>>>> 3.シート名を"20120430"という名前に変更する
にしたほうがわかりやすいもしれません。

【71960】Re:BOOK&シート操作と日付操作のマク...
発言  hint  - 12/5/3(木) 10:56 -

引用なし
パスワード
   ご苦労さまです。横から失礼します。

なにかのスクールの課題ですか?
>課題:BOOK&シート操作と日付操作のマクロ作成
>・・・
>2.関数で日付(YYYYMMDD)の作成
> 例)20120427や20121212など
>・・・
それまでに関連したテーマを学習しているはずです。
2番目の話は、VBAの関数をつかって、日付を操作するということなので、
かみちゃんさんからご指摘の、
>その日という意味であれば、
>"20120429"
>の部分を
>Format(Date, "yyyymmdd")
>です。
じゃないですかね。

1と3はほぼできているんじゃないでしょうか。

マクロ記録で得られたコードの「意味」を理解することに重点を置いて
頑張ってください。

1783 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free