[[20150218205042]] 『他の複数ブックの日付セルから印刷』(キミコ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『他の複数ブックの日付セルから印刷』(キミコ)

よろしくおねがいします。

 現在、担当者別の複数ブックがあります。
 各ブックには、「2月」「3月」…のシートがあり
 その中に、同じフォーマットの表が並んでおり
 1行目B列に日付(m月d日(aaa)があります。
 各シート内には、表が縦に10〜20並んでいます。
 表は1列目に日付、残り29列が文字と罫線で全30行です。
 現在、日付をクリックしてから、下のマクロで表を印刷しておりますが

 Sub Sample()
  On Error GoTo Error01
  ActiveSheet.PageSetup.PrintArea = Activecell.Resize(30,7).Offset(0,-1).Address
  ActiveSheet.PrintOut
  ActiveSheet.PageSetup.PrintArea = ""
  Exit Sub
  Error01:
  MsgBox "範囲指定できません"
 End Sub

 今回お聞きたいのは、マクロで複数ブックの日付を検索し、明日の表を
 いっぺんに印刷できるようにできないでしょうか?ということです。
 (土日は休社ですので、金曜日は月曜の印刷にできると嬉しいですが)
 あまりにも調子がよすぎる内容で、難しいかもしれませんが
 よろしくお願いします。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


まずは一つのブックで確認できてから複数ブックについて考えればどうでしょうか。

 Sub test()
    Dim d As Date
    Dim ret
    Dim s As String
    Dim r As Range
    Dim m As Long

    d = WorksheetFunction.WorkDay(Date, 1)
    ret = Application.InputBox("印刷したい日付は?", "入力", Format(d, "yyyy/m/d"))
    If Not IsDate(ret) Then Exit Sub

    d = CDate(ret)
    s = Format(d, "m月")

    On Error Resume Next
    Set r = ActiveWorkbook.Sheets(s).Columns(2)
    m = Application.Match(CLng(d), r, 0)
    On Error GoTo 0

    If m > 0 Then
         r.Cells(m).Resize(30, 7).Offset(0, -1).PrintPreview
    Else
        MsgBox "その日付は印刷できません"
    End If

 End Sub

(マナ) 2015/02/18(水) 22:09


マナさま ありがとうございます。
 教えて頂いたマクロで印刷できました。
 ここから、各ブックを巡回して検索するようにするのは
 どうしたら良いのでしょうか…
 他の検索で
 printFiles = Array( _
  "C:\Users\キミ\Desktop\A.xlsx", _
  "C:\Users\キミ\Desktop\B.xlsx")
 みたいにブックを指定してするとよさそうですが、
 他のブックを巡回して検索する方法がわかりません。
 お手数をお掛けしますが、教えていただけるでしょうか。
(キミコ) 2015/02/19(木) 06:37

    s = Format(d, "m月")

 の後ろをこんなように変更でしょうか。

    Dim wbPath
    For Each wbPath In Array( _
            "C:\Users\キミ\Desktop\A.xlsx", _
            "C:\Users\キミ\Desktop\B.xlsx")
        With Workbooks.Open(wbPath)
            On Error Resume Next
            Set r = .Sheets(s).Columns(2)
            m = Application.Match(CLng(d), r, 0)
            On Error GoTo 0

            If m > 0 Then
                 r.Cells(m).Resize(30, 7).Offset(0, -1).PrintPreview
            Else
                MsgBox wbPath & "では、その日付は印刷できません"
            End If
            .Close False
        End With
    Next
(Mook) 2015/02/19(木) 14:20

Mookさん ありがとうございます。
 教えて頂いた内容で、全てうまく行きました。
 大変勉強になりました。
(キミコ) 2015/02/19(木) 18:52

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.