Excel (VBA)

Excel VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(Windows 10全般 : 指定なし)
シートがアクティブにならない
投稿日時: 22/06/12 11:08:11
投稿者: MChome

こちらで掲載していただいている,「複数ブックのシートを1つのブックにコピーする」ためのサンプルファイルについて質問させていただきます。
 
超初心者です。よろしくお願いします。
 
サンプルファイルを参考に同様の処理をさせていただいています。
シートのコピーは問題なくできるのですが,コピーした後にコピーされたシートの名前を変更しようとすると,どうしてもマクロを実行しているブック(thisworkbook)のシートがアクティブになっていて,そのマクロ実行中のブックのシート名が変更されてしまいます。
 
敢えて,コピーした後のファイルシートをアクティベートする構文を差し込んでみても,同じです。
 
なぜこのようなことが起こってしまうのでしょうか?
ご教授いただけると幸いです。よろしくお願い致します。
 
※下記コードのActiveSheet.Name = Range("A1").Value の部分です。
 
   Do
        'コピー元のブックを開く
        Set sWB = Workbooks.Open(Filename:=SOURCE_DIR & sFile)
         
        'コピー元の「報告書」シートを集約用ブックにコピー
        sWB.Worksheets("報告書").Copy After:=dWB.Worksheets(dSheetCount)
         
        'シート名をセルA1の値に変更
       ActiveSheet.Name = Range("A1").Value
 
        'コピー元ファイルを閉じる
        sWB.Close
         
        '次のブックのファイル名を取得
        sFile = Dir()
    Loop While sFile <> ""[u][/u]

回答
投稿日時: 22/06/12 12:05:14
投稿者: taitani

引用:
'シート名をセルA1の値に変更
       ActiveSheet.Name = Range("A1").Value

ちなみに、「F8」 でステップ実行は行ってみましたでしょうか。
※ おそらく、「そのマクロ実行中のブックのシート名が変更」ということの謎が解けると思う。
 
 
 

投稿日時: 22/06/12 12:27:18
投稿者: MChome

taitani さんの引用:
引用:
'シート名をセルA1の値に変更
       ActiveSheet.Name = Range("A1").Value

ちなみに、「F8」 でステップ実行は行ってみましたでしょうか。
※ おそらく、「そのマクロ実行中のブックのシート名が変更」ということの謎が解けると思う。
 
 
 

 
早速の回答ありがとうございます。ステップ実行でデバッグはしています。
コピーした後,アクティブブックは新しく作成したファイルになっているのですが,アクティブシートはそのブックのシートにならず,マクロ実行中のシートになってしまうのです。
謎解きならず・・・何か,他に謎を解く方法はありませんか?宜しくお願いします。

回答
投稿日時: 22/06/12 12:49:05
投稿者: taitani

引用:
アクティブブックは新しく作成したファイルになっているのですが

例えばその時に、Object に保管して、
 
ActiveSheet.Name = Range("A1").Value
ではなく、
Dim Nws As Worksheet
 
Nws.Name = Range("A1").Value
※ Range("A1").Value も sWB.Range("A1").Value とか?

投稿日時: 22/06/12 13:29:52
投稿者: MChome

taitani さんの引用:
引用:
アクティブブックは新しく作成したファイルになっているのですが

例えばその時に、Object に保管して、
 
ActiveSheet.Name = Range("A1").Value
ではなく、
Dim Nws As Worksheet
 
Nws.Name = Range("A1").Value
※ Range("A1").Value も sWB.Range("A1").Value とか?

 
アドバイス,大変助かりました。
マクロ実行ファイルとシートをコピーして新しく作成するファイルを同じフォルダの中に設定していたのですが,マクロ実行ファイルをフォルダの外に出して,もう一度やってみたところ,ちゃんとできました。
色々教えていただきありがとうございました。

トピックに返信