Excel VBA 質問スレッド №1937 (未解決)
シートを別ブックに、名前を変更して保存
投稿者 : arex 投稿日時 : 2024/06/18(Tue) 19:42:06 OS : 未指定 EXCEL : 未指定
連続の質問すいません。先ほど別の質問させていただいたものです。
同じように下記コードを活用しております。
こちらのコードで開いたブックに、別ブックで開いているシートをコピー保存し、シート名を入力(もしくは決まられた名前)し保存まですることは可能でしょうか?
(例)仮ブックの仮シートを→コードで開いたブックの最後尾に、コピーし→シート名を本シートに変更する
すいません、こちらもお手すきの際にご教授いただけますと大変うれしく思います。
よろしくお願いいたします。
連続の質問すいません。先ほど別の質問させていただいたものです。
同じように下記コードを活用しております。
'Dir関数を使ってフォルダ内のファイル一覧表示 Sub ファイル名取得() Range("A2:A1000").ClearContents Dim fname As String Dim myPath As String myPath = Range("A1") If myPath = "" Then Exit Sub fname = Dir(myPath & "\*.xls*") 'ファイルの種類を指定 Dim cnt As Long cnt = 3 Do While fname <> "" Debug.Print fname 'ファイル名のみ取り出せる Cells(cnt, "A") = fname cnt = cnt + 1 fname = Dir() Loop End Sub
こちらのコードで開いたブックに、別ブックで開いているシートをコピー保存し、シート名を入力(もしくは決まられた名前)し保存まですることは可能でしょうか?
(例)仮ブックの仮シートを→コードで開いたブックの最後尾に、コピーし→シート名を本シートに変更する
すいません、こちらもお手すきの際にご教授いただけますと大変うれしく思います。
よろしくお願いいたします。
スポンサーリンク
[返信 1] Re : シートを別ブックに、名前を変更して保存
投稿者 : さんこう 投稿日時 : 2024/06/18(Tue) 22:37:55
回答ではありません。
>こちらのコードで開いたブックに、
このコードでブックが開かれるようには見えませんが、
凡人には理解不能な特殊技術が使われているのでしょう。
>別ブックで開いているシートをコピー保存し、
「別ブック」とは、何でしょうか?
「コピー保存」とは、どんな操作ですか?
>シート名を入力(もしくは決まられた名前)し
誰が入力するのですか?
回答ではありません。
>こちらのコードで開いたブックに、
このコードでブックが開かれるようには見えませんが、
凡人には理解不能な特殊技術が使われているのでしょう。
>別ブックで開いているシートをコピー保存し、
「別ブック」とは、何でしょうか?
「コピー保存」とは、どんな操作ですか?
>シート名を入力(もしくは決まられた名前)し
誰が入力するのですか?
[返信 2] Re : シートを別ブックに、名前を変更して保存
投稿者 : どうかしてるぜ 投稿日時 : 2024/06/19(Wed) 09:31:57
■[返信 1] さんこうさん(2024-06-18 22:37:55)の記事
> 回答ではありません。
>
> >こちらのコードで開いたブックに、
>
> このコードでブックが開かれるようには見えませんが、
> 凡人には理解不能な特殊技術が使われているのでしょう。
>
>
> >別ブックで開いているシートをコピー保存し、
>
> 「別ブック」とは、何でしょうか?
>
> 「コピー保存」とは、どんな操作ですか?
>
>
> >シート名を入力(もしくは決まられた名前)し
>
> 誰が入力するのですか?
>
>
相変わらず、イヤミな投稿。
意地悪なところがメチャメチャ発揮されている。
>開いたブックに、別ブックで開いているシートをコピー保存し・・・
というのを上のコードに追加したいけど、どうしたらいいでしょうか?
っていう質問じゃん。
この陰険さは凡人には理解不能な特殊技能。
■[返信 1] さんこうさん(2024-06-18 22:37:55)の記事
> 回答ではありません。
>
> >こちらのコードで開いたブックに、
>
> このコードでブックが開かれるようには見えませんが、
> 凡人には理解不能な特殊技術が使われているのでしょう。
>
>
> >別ブックで開いているシートをコピー保存し、
>
> 「別ブック」とは、何でしょうか?
>
> 「コピー保存」とは、どんな操作ですか?
>
>
> >シート名を入力(もしくは決まられた名前)し
>
> 誰が入力するのですか?
>
>
相変わらず、イヤミな投稿。
意地悪なところがメチャメチャ発揮されている。
>開いたブックに、別ブックで開いているシートをコピー保存し・・・
というのを上のコードに追加したいけど、どうしたらいいでしょうか?
っていう質問じゃん。
この陰険さは凡人には理解不能な特殊技能。
[返信 3] Re : シートを別ブックに、名前を変更して保存
投稿者 : arex 投稿日時 : 2024/06/19(Wed) 12:21:17
どうかしてるぜ様。
ありがとうございます。
どうかしてるぜ様。
ありがとうございます。
[返信 4] Re : シートを別ブックに、名前を変更して保存
投稿者 : tkit 投稿日時 : 2024/06/19(Wed) 14:04:50
■[返信 2] どうかしてるぜさん(2024-06-19 09:31:57)の記事
>
> 相変わらず、イヤミな投稿。
> 意地悪なところがメチャメチャ発揮されている。
>
> >開いたブックに、別ブックで開いているシートをコピー保存し・・・
> というのを上のコードに追加したいけど、どうしたらいいでしょうか?
> っていう質問じゃん。
>
> この陰険さは凡人には理解不能な特殊技能。
>
さんこうさんの質問内容に対する指摘は、真っ当だと思いますよ。
質問内容を忖度して理解出来たなら、コードを提示されては。
> こちらのコードで開いたブックに、別ブックで開いているシートをコピー保存し、シート名を入力(もしくは決まられた名前)し保存まですることは可能でしょうか?
に対する私の回答は、「不可能」です。
■[返信 2] どうかしてるぜさん(2024-06-19 09:31:57)の記事
>
> 相変わらず、イヤミな投稿。
> 意地悪なところがメチャメチャ発揮されている。
>
> >開いたブックに、別ブックで開いているシートをコピー保存し・・・
> というのを上のコードに追加したいけど、どうしたらいいでしょうか?
> っていう質問じゃん。
>
> この陰険さは凡人には理解不能な特殊技能。
>
さんこうさんの質問内容に対する指摘は、真っ当だと思いますよ。
質問内容を忖度して理解出来たなら、コードを提示されては。
> こちらのコードで開いたブックに、別ブックで開いているシートをコピー保存し、シート名を入力(もしくは決まられた名前)し保存まですることは可能でしょうか?
に対する私の回答は、「不可能」です。
[返信 5] Re : シートを別ブックに、名前を変更して保存
投稿者 : arex 投稿日時 : 2024/06/19(Wed) 16:10:16
tkit様。
申し訳ありません。ありがとうございます。
tkit様。
申し訳ありません。ありがとうございます。
[返信 6] Re : シートを別ブックに、名前を変更して保存
投稿者 : tkit 投稿日時 : 2024/06/19(Wed) 16:32:06
アドバイスとして、
自身でコーディング出来ないのであれば何でも1つにせず、
各々個別の機能として使用した方が汎用性が上がりますよ。
> (例)仮ブックの仮シートを→コードで開いたブックの最後尾に、コピーし→シート名を本シートに変更する
上記をサンプルで作りました。
マクロブックやシートの情報が無いので、アクティブシートとなっています。
A列のファイル名を選択(複数可)して実行してください。
意に沿わない結果だったとしても、責任は取れませんので。
アドバイスとして、
自身でコーディング出来ないのであれば何でも1つにせず、
各々個別の機能として使用した方が汎用性が上がりますよ。
> (例)仮ブックの仮シートを→コードで開いたブックの最後尾に、コピーし→シート名を本シートに変更する
上記をサンプルで作りました。
マクロブックやシートの情報が無いので、アクティブシートとなっています。
A列のファイル名を選択(複数可)して実行してください。
意に沿わない結果だったとしても、責任は取れませんので。
Sub sample() Dim ws As Worksheet Set ws = Workbooks("仮ブック.xlsx").Worksheets("仮シート") Dim rng As Range, cel As Range Set rng = Selection For Each cel In rng Dim wb As Workbook Set wb = Workbooks.Open(Range("A1") & "\" & cel.Value) ws.Copy After:=wb.Worksheets(Worksheets.Count) wb.Worksheets(Worksheets.Count).Name = "本シート" wb.Save wb.Close Next End Sub
[返信 7] Re : シートを別ブックに、名前を変更して保存
投稿者 : ピロリ 投稿日時 : 2024/06/21(Fri) 09:15:42
質問者さんからの返答がないですが、解決されたのでしょうか?
ご提示されたコード(指定フォルダ「A1セル」内の全ブックの名称を抽出する「A3セル~」処理)をベースに、
> ・・・ 別ブックで開いているシートをコピー保存し、シート名を入力(もしくは決まられた名前)し保存 ・・・
> (例)仮ブックの仮シートを→コードで開いたブックの最後尾に、コピーし→シート名を本シートに変更する
処理を追加ってことは、下のようなことがしたいってことですかね?( かなり 忖度してますけど・・・ )
『 指定フォルダ(A1セルに入力のパス)内の全ブックに対し、表示中の「仮ブック.xlsx」の「仮シート」を
最後尾へコピー(追加)。コピーしたシートは予め入力したシート名(「本シート」とか)へ変更する。
処理したブック名は A3セルから下へ記録する。 』
私なりの解釈なので、外していたら読み捨てて下さい。
余談ですが、シートの追加って、同じ名称のシートは追加できない訳で、同一名のシートが存在した場合の処置が
ネックになると思います。下のコードは一旦削除してから追加する(結果的に上書きみたいな)処理にしてます。
もしかしたら、この辺(32~36step目)は参考になるかも?
質問者さんからの返答がないですが、解決されたのでしょうか?
ご提示されたコード(指定フォルダ「A1セル」内の全ブックの名称を抽出する「A3セル~」処理)をベースに、
> ・・・ 別ブックで開いているシートをコピー保存し、シート名を入力(もしくは決まられた名前)し保存 ・・・
> (例)仮ブックの仮シートを→コードで開いたブックの最後尾に、コピーし→シート名を本シートに変更する
処理を追加ってことは、下のようなことがしたいってことですかね?( かなり 忖度してますけど・・・ )
『 指定フォルダ(A1セルに入力のパス)内の全ブックに対し、表示中の「仮ブック.xlsx」の「仮シート」を
最後尾へコピー(追加)。コピーしたシートは予め入力したシート名(「本シート」とか)へ変更する。
処理したブック名は A3セルから下へ記録する。 』
私なりの解釈なので、外していたら読み捨てて下さい。
余談ですが、シートの追加って、同じ名称のシートは追加できない訳で、同一名のシートが存在した場合の処置が
ネックになると思います。下のコードは一旦削除してから追加する(結果的に上書きみたいな)処理にしてます。
もしかしたら、この辺(32~36step目)は参考になるかも?
Sub 全ブックへシートをコピー() Dim myPath As String myPath = Range("A1") If myPath = "" Then Exit Sub Dim wb1 As Workbook, ws1 As Worksheet On Error Resume Next Set wb1 = Workbooks("仮ブック.xlsx") If Err.Number <> 0 Then '「仮ブック.xlsx」が無いとか MsgBox "「仮ブック.xlsx」を開いて!" Exit Sub End If Set ws1 = wb1.Worksheets("仮シート") If Err.Number <> 0 Then '「仮シート」が無いとか MsgBox "「仮シート」が見当たらない!" Exit Sub End If On Error GoTo 0 Dim wb2 As Workbook, ws2 As String ws2 = InputBox("シートの名称は?", , "本シート") '追加するシート名称を入力 If ws2 = "" Then Exit Sub 'ws2 = "本シート" 'もしくは、決められた名称 Dim fname As String, cnt As Long Range("A2:A1000").ClearContents ' ← 3行目からのクリアでなくて問題ないの? cnt = 3 fname = Dir(myPath & "\*.xls*") Do While fname <> "" If fname <> ThisWorkbook.Name And fname <> "仮ブック.xlsx" Then 'この2ブックは除外 Set wb2 = Workbooks.Open(myPath & "\" & fname) 'ブックを開いて Application.DisplayAlerts = False '問合せを非表示 On Error Resume Next wb2.Worksheets(ws2).Delete '「本シート」は一旦削除 On Error GoTo 0 Application.DisplayAlerts = True '問合せの非表示を解除 ws1.Copy After:=wb2.Worksheets(Worksheets.Count) '「仮シート」をコピーし wb2.Worksheets(Worksheets.Count).Name = ws2 '「本シート」へ名称変更 wb2.Save '上書き保存して wb2.Close '閉じる Cells(cnt, "A") = fname '処理済のブック名を記録 cnt = cnt + 1 End If fname = Dir() '次のブックを取得 Loop End Sub
当掲示板について
- Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
- 記事内ではHTMLのタグは使用できません。
- 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
- Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
- Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
( 処理日時 : 2025-07-02 21:01:14 )