|
▼やまと さん:
こんばんは。
>お世話になっております。
>
>ファイルが200こあります。
>特定の複数シートを200こ一括で印刷したいのですがよろしくお願いします。
>ファイルは全て同じ様式になっています。
>
>ファイル名をae10:ae210を入力し、そのセルにハイパーリンクでジャンプするようにしました。そこで、1.ae10をクリック、2.そのファイル上で複数シートを選択、3.印刷、4.ファイルを閉じる という作業を自動記録でとりました。
ということは、ae10〜ae210のセルにはファイル名が入っていない可能性もありますね?
>それを、繰り返し次のファイルを印刷するためにfor..nextをくわえたのですが
>うまく動きません。
>2日前からVBAを勉強し始めた素人なのですがよろしくお願いいたします。
>
>Sub Macro2()
>
>Dim これは変数 As Long
>For これは変数 = 1 To 200
>
> Cells(39, これは変数 + 9).Select
' ちなみに↑だとae10〜ae210を取得しませんよ!!
> Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True
> Sheets(Array("表紙", "様式1-1", "様式2-1")).Select
> Sheets("様式2-1").Activate
> ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
> ActiveWindow.Close
>Next これは変数
>End Sub
私は、こんな風にしてみました。
ae10〜ae210のセルにリンクされたブックを 開いて、印刷、閉じる
を繰り返します。
一覧シートをアクティブにした状態でmainを実行してみてください
'==============================================================
Sub main()
Dim 一覧表シート As Worksheet
Dim 印刷ブック As Workbook
Dim これは変数 As Long
Application.ScreenUpdating = False
Set 一覧表シート = ActiveSheet
With 一覧表シート
For これは変数 = 10 To 210
If .Cells(これは変数, 31).Hyperlinks.Count > 0 Then
Set 印刷ブック = bk_open(.Cells(これは変数, 31).Hyperlinks(1).Address)
If Not 印刷ブック Is Nothing Then
Call bk_print(印刷ブック, Array("表紙", "様式1-1", "様式2-1"))
印刷ブック.Close False
End If
End If
DoEvents
Next
End With
Application.ScreenUpdating = True
End Sub
'==================================================
Function bk_open(flnm) As Workbook
'指定されたブックをオープン
On Error Resume Next
Set bk_open = Workbooks.Open(flnm)
If Err.Number <> 0 Then
Set bk_open = Nothing
End If
On Error GoTo 0
End Function
'==================================================
Function bk_print(bk As Workbook, pr_sheets) As Long
'指定ブックの指定されたシートを印刷
On Error Resume Next
bk.Sheets(pr_sheets).PrintOut
bk_print = Err.Number
On Error GoTo 0
End Function
200ファイルではテストしてませんが・・・。
|
|