advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 1215 for (Mook) (0.001 sec.)
[[20150207150227]]
#score: 9211
@digest: 1a1d5b7008fa2af0250239dcaa27f7db
@id: 67237
@mdate: 2015-02-09T03:47:06Z
@size: 6591
@type: text/plain
#keywords: prdate (84670), startpage (68125), 刷日 (21742), shinji (21640), twsname (19520), printfiles (18278), prws (14761), 曜分 (12325), vbsaturday (11111), 始ペ (8928), 日"" (7934), 月"" (7558), 付di (7016), ignoreprintareas (6538), 曜は (5237), 曜を (5152), 月曜 (4927), wsname (4884), 剰余 (4720), 金曜 (4535), collate (4060), vbnewline (3753), 印刷 (3650), 日分 (3552), weekday (3305), copies (3229), 今週 (3126), 翌日 (3021), 火曜 (2926), 来週 (2849), printout (2255), 毎日 (1995)
『マクロで印刷設定』(SHINJI)
お世話になります 1シートに1週間分の予定表が入っています 1日5列で1番上(3行目)の2列目に日付(m月d日(aaa))が 5日分横にならんでいます。(1日は70列程度) 毎日、翌日分の印刷を行っておりますが これをマクロで行いたいのですが可能でしょうか。 「翌日」を検索し1日分の印刷をしたいのです。 金曜日は月曜を印刷、土日に印刷することはありません。 祭日があることを考え、印刷日をメッセージボックスで 確認してから実行したいのです。 あれこれ贅沢で申し訳ありませんが、よろしくお願いします。 < 使用 Excel:Excel2010、使用 OS:Windows7 > ---- 一日分の印刷というのは、どうやっているのでしょうか。 現在の一日分の印刷をマクロの記録にとって、提示でないでしょうか。 (Mook) 2015/02/08(日) 13:52 ---- MooKさん ありがとうございます。 1日分でA4 2枚になるように改ページプレビューで 設定してあり、毎日 金曜は1-2、火曜は3-4ページと 手動で印刷しています。下は金曜に翌月曜を印刷する時のものです。 Sub Macro1() ' Macro1 Macro ActiveWindow.SelectedSheets.PrintOut From:=1, To:=2, Copies:=1, Collate _ :=True, IgnorePrintAreas:=False End Sub よろしくお願いします。 (SHINJI) 2015/02/08(日) 14:10 ---- 印刷するシートはいつも同じシートなのですか? そうであれば、曜日に応じて印刷するページを変更するだけでもできるのでしょうか。 (Mook) 2015/02/08(日) 17:11 ---- Mookさん お手数をおかけします。説明が足りず申し訳ありません。 シートは1週1シートで、シート名はその週の月曜の日付となっています。 (今週なら「2月9日」) 最初のシートに「先週」「今週」「来週」のハイパーリンクを張り 各シートにも「先週」「来週」のハイパーリンクを張り機能させています。 毎日「翌日」の表を印刷しているのですが、PC操作苦手なスタッフがおり 印刷のページ指定が難しいとのことで、マクロでなんとか…と思った次第です。 あれこれ検索していたら、丁度MOOKさんが書き込んだマクロ Sub Sample() '// 対象のファイル Dim printFiles printFiles = Array( _ "C:¥Data¥printFile1.xlsx", _ "C:¥Data¥printFile2.xlsx", _ "C:¥Data¥printFile3.xlsx", _ "C:¥Data¥printFile4.xlsx", _ "C:¥Data¥printFile5.xlsx") '// 印刷するシートの日付 Dim dt As Date dt = Date + 1 '// 仮に明日を設定 If Weekday(dt) = vbSaturday Then dt = dt + 2 '// 土曜だったら月曜に If Weekday(dt) = vbSunday Then dt = dt + 1 '// 日曜だったら月曜に '// この日でいい? dt = CDate(InputBox("印刷日を指定してください。", "印刷日付確認", Format(dt, "yyyy/mm/dd"))) '// シート名 Dim tWsName tWsName = Format(dt, " m""月""d""日""(aaa)") Dim pFile Dim ws As Worksheet '// 各ファイルの処理 For Each pFile In printFiles '// ファイルを開いて With Workbooks.Open(pFile) '// 各シートを順番に処理 For Each ws In .Worksheets '// シート名が一致したら印刷 If Trim(StrConv(ws.Name, vbNarrow)) = tWsName Then ws.PrintOut Copies:=3 Next '// ファイルを閉じる .Close False End With Next End Sub に当たりました。 これは、明日の日付名のシート全体を印刷するので 検索対象をセルにして…とか考えていたのですが それにしても、その後の印刷範囲指定をどうすしたら… と考えていたところでした。 少し自分でも考えてみます。 (SHINJI) 2015/02/08(日) 17:35 ---- だいたいこの手の話で問題になるのはシート名や日付の書式に関することが多い気がします。 シート名は手入力で入れているでしょうか。 日付の数字は全角、半角、スペースが混在したりしていないでしょうか。 >設定してあり、毎日 金曜は1-2、火曜は3-4ページと は 設定してあり、毎日 月曜分は1-2、火曜分は3-4ページと ということでしょうか。祝日は考慮していないですが、提示された条件でのサンプルです。 Sub Sample() '// 印刷するシートの日付 Dim prDate As Date Select Case Weekday(Date) Case vbFriday prDate = Date + 3 '// 金曜は月曜を設定 Case vbSaturday prDate = Date + 2 '// 土曜は月曜を設定 Case Else prDate = Date + 1 '// その他は翌日を設定 End Select '// この日でいい? prDate = CDate(InputBox("印刷日を指定してください。", "印刷日付確認", Format(prDate, "yyyy/mm/dd"))) If Weekday(prDate) = vbSaturday Or Weekday(prDate) = vbSunday Then MsgBox "土日は印刷できません" & vbNewLine _ & Format(prDate, "m""月""d""日""(aaa)") Exit Sub End If '// その週の月曜 Dim wsDate As Date wsDate = prDate - ((prDate - 2) Mod 7) '// シート名 Dim wsName wsName = Format(wsDate, "m""月""d""日""") On Error Resume Next Dim prWS As Worksheet Set prWS = ThisWorkbook.Worksheets(wsName) On Error GoTo 0 If prWS Is Nothing Then MsgBox "指定日付のシートがありません。" & vbNewLine _ & "印刷日:" & Format(prDate, "m""月""d""日""") & vbNewLine _ & "シート:" & wsName Exit Sub End If Dim startPage As Long '// 開始ページの計算 startPage = ((prDate - 2) Mod 7) * 2 + 1 prWS.PrintOut From:=startPage, To:=startPage + 1, Copies:=1, Collate:=True, IgnorePrintAreas:=False End Sub (Mook) 2015/02/08(日) 20:18 ---- Mookさん 何から何まで全てうまく印刷できました。 本当にありがとうございました。 親切に説明を書いて頂き、全体的な流れは分かりました (細かい部分はこれから勉強します (^_^;))が、 最後の startPage = ((prDate - 2) Mod 7) * 2 + 1 prWS.PrintOut From:=startPage, To:=startPage + 1, Copies:=1, Collate:=True, IgnorePrintAreas:=False この部分の意味が難しくてわからないのですが… どのようになっているのでしょうか? お手数をおかけします。 (時間ある時で結構です) (SHINJI) 2015/02/08(日) 21:16 ---- そうですね。 そこはちょっとわかりずらい書き方でした。 Mod はExcel 関数でも剰余なので数式で、 =Mod(Date() - 2, 7 ) * 2 + 1 とすれば、確認できると思いますが、別の関数を使って StartPage = Weekday(Date, vbMonday) * 2 - 1 としても同じです。 Weekday は開始曜日(第二引数)に応じて 1 〜 7 を返す関数です。 剰余は結果が 0 〜 6 になるので、調整が +1 と -1 で異なります。 A列に日付、B列に下記式を入れてみたら曜日に応じた開始ページになるのがわかるかと 思います。 B1 =Mod(A1 - 2, 7 ) * 2 + 1 (Mook) 2015/02/09(月) 07:47 ---- Mookさま 丁寧な説明ありがとうございました。 Dim startPage As Long startPage = ((prDate - 2) Mod 7) * 2 + 1 ここで、印刷の最初のページを設定していたのですね! そして、その下で2ページ目を指定していたんですね。 見ただけでは、全くわかりませんでした… (^_^;) 本当に色々お世話になりました。 (takaz) 2015/02/09(月) 12:47 ...
https://www.excel.studio-kazu.jp/wiki/kazuwiki/201502/20150207150227.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 97054 documents and 608268 words.

訪問者:カウンタValid HTML 4.01 Transitional