[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『シートを他のブックへコピー』(お肉さん)
お世話になります。
漠然とした質問で申し訳ありませんが、
Aのブックのシート2枚のコピーをBのシートにマクロで移す事は可能ですか?
一応やりたいことは
1、Aのブックで請求書を作り、提出用と保存用の2枚のシートを作成します。
2、それをBのブックにコピーして
3、Aのブックに次の顧客の請求書を作って同じようにBのブックに移します
4、というのを何人分か行ったら
5、Bのブックに移ったシートをPDF化して保存及び印刷がしたい
の1〜4がマクロで出来ればもの凄く助かるのですがいかがでしょうか?
よろしくお願いします。
< 使用 Excel:Excel2010、使用 OS:Windows7 >
そして、マクロを作れば楽ができるようになりますが、他人にマクロを作らせようとしては駄目ですからね? それは貴方の仕事ですよ。
(???) 2017/12/11(月) 14:10
何故作業依頼と思ったのかというと、質問が「以下の内容がマクロで可能か?」だけだったからです。可能かどうかならば、「可能」という答えにしかなりませんので、そんな答えを望んでいるとは思えませんでした。 普通にマクロに関する質問であれば、現在のコードを挙げて、こういう現象がでて、マクロでは無理か?と思っているが、いかが?、とかになるもので。
そして、処理内容も、私の理解だと以下ですが、正しいでしょうか?
1.手作業でAブックに2シート作成。
2.手作業でAブックの2シートをBブックにコピー。
3.手作業でAブックに次の2シート作成。Bブックにコピー。
4.これを繰り返す。
5.PDF保存、印刷。
5番が判らない、ならば納得ですが、1〜4のマクロ利用ですよね? シートコピーは手作業でもすぐだし、マクロ化の意味が無いと思います。書かれていませんが、もしかして、Aブックは常に2シートで、Bブックにコピー後は入力を全て消去している、とかならば、少しマクロ化を考えるのが判ります。 しかし、それでも入力しない空のひな形シートを用意して、それをコピーしてから入力すれば、いちいち消さなくて済むし、そもそもBブックにコピーする必要もないし…、と思います。
改めて尋ねますが、知りたいことは、他ブックに2シート追加コピーする事がマクロで可能かどうか、なのでしょうか?
(???) 2017/12/11(月) 15:34
ただ漠然とマクロで出来ること出来ないこと判断したいのなら
一通りの作業を記録とってみて
再現出来るか出来ないかで判断するのも
一つの方法と考えます
別ブックからコピぺ
Workbooks("別ブック.xlsx").Worksheets("コピー元").Copy After:=Workbooks("このブック.xlsm").Worksheets("Sheet1")
印刷
Sheets(Array("Sheet1", "Sheet2", "Sheet3")).PrintOut
PDF作成
WorkSheetオブジェクト.ExportAsFixedFormat Type:=xlTypePDF,
fileName:=ファイル名
>4、というのを何人分か行ったら
個別にシートを増やすのか 1シートに下にずっと書いていくのか
PDFファイルは個別に作るのか 月とかでまとめて1個のファイルにするのか
処理が変わってきます
頑張ってください
(++) 2017/12/11(月) 16:35
喧嘩を売っているわけではないことだけご承知おきいただきたいのですが。 (それとすみません回答ではないんですけども)
上記の内容が「可能か否か知りたいだけ」なら、ここに書き込むのに使用した機器なりで Google検索にでもかければ回答を待たずともすぐに判明すると思いますよ。
ここの回答者さんたちは、みなさんまず自分で調べることを大前提にしていると思うので、 可能かどうか知りたいだけで終わらないのでは? と思ってしまわれたのだと思います。
事実、ここの掲示板の質問内容を見ているとよくそういった(質問ではなく作成依頼に近い) 書き込みもよく見かけますので。
過去の質問はもちろん知らなくていいですし、そんな事情も知らなくて全くかまわないんですが 顔を合わせもしない他人に話をするのならば、なるべく必要な情報は出しておくといいと思いますよ。 自分で作ろうと思っているが可能なのだろうか、それを知りたいとかそんな形で。 実際に質問するときには、本質部分が書き込めてない人も多いですからね。
ちょっとかぶってしまいましたが、書いたので一応載せておきます。 (わをん) 2017/12/11(月) 16:40
流れとしては請求書の様なものを自分の所で印刷する分には問題なかったのですが、それを他の店の方に配布するのに
1.そのまま印刷するだけのエクセルのブックを作成して転送
2.PDFにしてそのまま印刷して貰えるようにする
のどちらかをしたいと思いました。
PDFにするにしてもExcelブックにするにしても請求書は2枚1組の物で、その時によって必要な請求書の数は未定です。
他店では請求書と請求書の裏面のみ必要で他の情報はいりません。
請求書は氏名や簡単な金額などが関数の呼出で表示され
請求書の裏面は細かい日数や金額等の情報が日付の昇順で表示されるようになります。
これを該当者の数だけ呼出・印刷していましたがシートを増やすにしても書式が決まっていて貼り付けだと表がうまく複製出来ないので複製用のシートを作り、情報を更新し、それを別なブックにコピーするというような感じで行いたいです。
ちなみに自分で組んだマクロは以下の通りで
Dim i As Long
Dim ws1 As Worksheet Dim ws2 As Worksheet Dim ws3 As Worksheet
Set ws1 = Worksheets("請求書") Set ws2 = Worksheets("請求書(裏)") Set ws3 = Worksheets("印刷頁")
ws3.Activate i = Range("B5") ws1.Activate Range("D5").Value = i
ws2.Activate Range("D9:H39").Select Selection.Sort Key1:=Range("D9"), Order1:=xlAscending, Header:=xlNo, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin, DataOption1:=xlSortNormal
ws.Activate
ws.Range("GC10").Select Selection.Copy Sheet292.Select Range("GC10").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False ActiveSheet.Name = Range("D1").Value
ws1.Activate Range("D9:G39").Select Selection.Copy i = ws1.Range("BV4").Value Sheet294.Select Range("D9").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheet294.Range("BV4").Value = i ActiveSheet.Name = Range("AJ4").Value Application.CutCopyMode = False
Sheets(Array("(請)", "(裏)")).Copy
ws3.Activate ws3.Range("A1").Select Application.ScreenUpdating = True End Sub
という感じで作っては見ましたが、これだと
請求書と裏面の二つのシートを新しいブックに移動させる事は出来ましたが、2人以上の請求書を作る時にブックも同じ数だけ出来るのでこれを一つのブックにまとめる事は出来ないモノかと思い質問させて頂きました。
それと一度自分のやりたいことを記録を取ってみましたが、マクロにブックの選択が表示されず同じ工程を再現できませんでした。
このような感じだと分かりやすいでしょうか?
ご協力頂ければ幸いです。宜しくお願いします。
(お肉さん) 2017/12/11(月) 21:40
請求履歴等のシートを作り経緯記録していく
A列 日時 B列 顧客名 C列 金額 いかずらずらと
シート 請求書と シート 請求書裏 の内容すべて1行でまとめる感じで
請求書 請求書裏が完成した時点 その2個のシートをPDF化 および 纏めシート転記のVBA作成
そのようにすれば 1つのBOOKで済むと思います
(++) 2017/12/12(火) 09:25
Dim FileName As String Dim FilePath As String Dim FSO As Object FileName = ThisWorkbook.Name Set FSO = CreateObject("Scripting.FileSystemObject") FileName = FSO.getbasename(FileName) FilePath = ThisWorkbook.Path & "\" Sheets(Array("請求書", "請求書裏")).Select Sheets("請求書").Activate ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _ FileName:=FilePath & FileName & "_" & Range("顧客入力セル") & Range("日付セル") .Value & ".pdf", _ Quality:=xlQualityStandard, _ IncludeDocProperties:=True, _ IgnorePrintAreas:=False, OpenAfterPublish:=True
ThisWorkbook.Save
(++) 2017/12/12(火) 09:38
Sheets(Array("請求書", "請求書裏")).Select
Sheets("請求書").Activate ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True (++) 2017/12/12(火) 09:41
Dim sh1, sh2 As Worksheet
Set sh1 = Worksheets("請求書")
Set sh2 = Worksheets("請求書裏")
With Sheets("請求書一覧")
intRow = .Cells(Rows.Count, "B").End(xlUp).Row i = 1 .Range("A" & i + intRow) = sh1.Range("A1").Value .Range("B" & i + intRow) = sh2.Range("A1").Value End With (++) 2017/12/12(火) 09:52
既存ブックに、2シート転記するならば、以下。(Book2が、仮に決めた転送先まとめブック)
Sub test() With Workbooks("Book2") ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count - 1).Copy after:=.Sheets(.Sheets.Count) ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count - 0).Copy after:=.Sheets(.Sheets.Count) End With End Sub
しかし、別案があります。 まとめブックは作成せず、現行のまま1請求書1ブックとして、新たなブックを1つ作成。これは指定フォルダ下にある請求書を一覧化する機能と、チェックを入れる(セルに○×する)と、指定されたブックを連続印刷する機能を持たせる。 こんな方法ではいかがでしょうか?
(???) 2017/12/12(火) 10:03
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.