[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『印刷範囲毎にシートを分けるマクロを教えて下さい』(りんご)
1枚のワークシートに複数のフォーマットの書類があります。
これを印刷範囲毎にワークシートを分けるマクロを設定
したくてネットを検索したら下記のマクロがありました。
Sub シート分割()
startrow = 1
lastrow = Worksheets(1).UsedRange.Rows.Count
With Worksheets(1)
For k = 1 To .HPageBreaks.Count
partrow = .HPageBreaks.Item(k).Location.Row - 1
Worksheets.Add after:=Worksheets(Worksheets.Count)
.Rows(startrow & ":" & partrow).Copy
Worksheets(Worksheets.Count).Range("A1").PasteSpecial
Application.CutCopyMode = False
startrow = partrow + 1
Next
Worksheets.Add after:=Worksheets(Worksheets.Count)
.Rows(startrow & ":" & lastrow).Copy
Worksheets(Worksheets.Count).Range("A1").PasteSpecial
Application.CutCopyMode = False
End With
End Sub
このマクロを使用すると印刷範囲毎でシートを分けてくれるんですが
基本となるワークシートに貼られている写真はコピーされませんでした。
写真や図も一緒にコピーしてくれるにはどうしたら良いですか?
教えて頂けますか?
よろしくお願いします。
< 使用 Excel:Excel2010、使用 OS:Windows10 >
※ステップ実行という言葉を聞いたことがなければ↓をお読み下さい
【ステップ実行】 https://www.239-programing.com/excel-vba/basic/basic023.html http://plus1excel.web.fc2.com/learning/l301/t405.html
【ブレークポイント】 https://www.239-programing.com/excel-vba/basic/basic022.html https://www.tipsfound.com/vba/01010
また↓も覚えておいて損はないでしょう。
【イミディエイトウィンドウ】 https://www.239-programing.com/excel-vba/basic/basic024.html https://excel-ubara.com/excelvba1/EXCELVBA486.html
【ローカルウィンドウ】 https://excel-ubara.com/excelvba4/EXCEL266.html http://excelvba.pc-users.net/fol8/8_2.html
■2
投稿時の問題だけかもしれませんが、実際もインデント(字下げ)が付いていないのであれば、インデントを付けることを検討してみて下さい。
適切なインデントを付けることにより、コードの構造が把握しやすくなり、ご自身のデバッグ作業の効率アップに繋がると思います。
■3
>ワークシートに貼られている写真はコピーされませんでした。
元のコードが理解出来てからの話になりますが、【コピー】して【形式を選択して貼り付け】するのではなく、普通の【コピー&ペースト】に書き換えて見てみてください。
※必要な命令は【マクロの記録】で調べることができます。
(もこな2) 2022/09/26(月) 12:10
しかし、アップデートのせいでできなくなってた事もあったし。
この辺は解らない。
因みにPasteSpecialだと狙ったとこに張り付けられます。
(what) 2022/09/26(月) 12:18
Windows10 バージョン21HS(OSビルド 19044.1889) Excel2016 MSO(16.0.4266.1001)64ビット
1. 新規ブックを開き、シート上に適当なオートシェイプを作成
2. ↑を2つ複製して、図形の書式設定の−プロパティを以下のように設定する 1つめ・・・セルに合わせて移動やサイズ変更をする(もとのまま) 2つめ・・・セルに合わせて移動するがサイズ変更はしない 3つめ・・・セルに合わせて移動やサイズ変更をしない
3. ↑が設置してあるセル範囲をコピー
4. ちょっと離れた列(同じシート)に形式を選択して貼り付け−すべて を実行
5. 結果いずれも貼りつかず
6. 次に再度コピーして、さらにちょっと離れた列に普通に貼り付け
7. 結果、3つめ以外が貼りついた
8. 次に以下のコードを作成して実行 Sub 実験() With Range("A1:C12") '図形3つが含まれているセル範囲 .Copy .Offset(, 4).PasteSpecial xlPasteAll .Copy .Offset(, 8) End With End Sub
9. 手作業と同じ結果(「7.」)が再現された
という状況なので、whatさんが仰るようにPasteSpecialの挙動がバージョンで変わっているのかもしれません。
一応、会社のPC(office365だったはず)でも同じ挙動(ただのコピペだとうまくいく)なので、図形の書式設定のプロパティを確認してみて、それでもだめなら普通のコピペに書き換えてみてはどうでしょうか?
(もこな2) 2022/09/26(月) 21:59
こんな感じにするか
Sheets("Sheet1").Range("A1:M30").Copy Sheets("Sheet2").Range("A2")
画像は画像でコピペ
Sheets("Sheet1").Pictures(1).Copy
Sheets("Sheet2").Range("A2").PasteSpecial
(what) 2022/09/26(月) 22:27
※そういう思惑じゃないということなら、余計なツッコミごめんなさい。
(もこな2) 2022/09/26(月) 23:29
まだ検証ができていない為出来次第コメント入れさせて
いただきます。
m(_ _)m
(りんご) 2022/09/27(火) 08:52
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.