2017-03-21 5 views
0

"Input Info"からデータを取り出すレターテンプレートを使って、それぞれ29枚の29行に対応する1枚の入力シート "Input Info"を持つ仕事中のレタージェネレータを作成しています。すべての手紙は印刷して郵送する必要がありますが、問題は30冊の手紙が必要というわけではありません。 データシートを印刷ジョブから常に除外し、データをプルしたシートのみを印刷するために必要なコードを作成するのが面倒です(シート1のH1:H30など)(明らかに、個々のシートは手動ではありません)。私はVBAにはかなり新しいので、たくさんの検索をして、何も返さないようにしてきました。ここでは、最初のページを除外していますが、まだ印刷すると、最初のページが印刷されることがわかっています。私は仕事でVBAについてもっと学ぶので、私が今使っているものを必要とするだけで、後で分析して学ぶことができます。助けてください!Excelで特定のデータが入力されたシートのみを印刷し、1枚の印刷を除外する方法を教えてください。

Private Sub Workbook_BeforePrint(Cancel As Boolean) 
Dim ws As Variant 

Application.DisplayAlerts = False 
Application.EnableEvents = False 

For Each ws In ThisWorkbook.Worksheets 
    If ws.Name <> "Input Info" Then 
     ws.PrintOut 
    End If 
Next ws 

Application.DisplayAlerts = True 
Application.EnableEvents = True 

Cancel = True 

End Sub 

ここでは、ファイルのウォーターダウンバージョンです。 http://s000.tinyupload.com/index.php?file_id=69464232828729057900 それは正確にうまく動作しませんので、あなたが、除外に名前「入力情報」(バウンド/上下の文字に注意)で、すべてのシートを書かれているどのような事前

+0

おそらくあなたのファイルのダムダウン(匿名化)バージョンを共有できますか? – jkpieterse

+0

最終的に、最初のシートで作成した「印刷」コマンドボタンを押すと、印刷機能が実行されます。基本的には、シート1からデータをプルしなかったシートは、最初のシートだけでなくプリントジョブからも除外されます。こうすると最終結果が表示されます。[印刷]ボタンをクリックして、15行を入力すると、15/29は印刷され、入力シートは印刷されません。これは私が45人にリリースする前の最後のステップで、それは私を殺している。私は水っぽいバージョンを共有しています。ありがとうございました。 –

答えて

0

に感謝します。

私は次のことをテストしていないが、これは役立つはず:

Sub PrintLetters() 

Dim ws As Worksheet 
Dim RngCell As Range 
Dim NameList As Range 

Set NameList = ThisWorkbook.Worksheets("Input Info").Range("H1:H30") ' <- This is where you get your data from 

For Each RngCell ws In NameList.Cells 
    For Each ws In ThisWorkbook.Worksheets 
     If LCase(ws.Name) = LCase(RngCell.Value) Then ' <- LCase makes sure that you are not CaSe SenSiTIVe 
      ws.PrintOut ' or INSERT HERE WHICHEVER CODE TO PRINT ws 
      Exit For 
     End If 
    Next ws 
Next 

End Sub 

これは、このケースH1に(あなたが指定した各セルの内容を通過するのは非常に簡単な方法(.Text)である:中H30 "入力情報")、名前がワークブックのワークシートのいずれかと同じ場合は、それを印刷します(詳細は.PrintOuthere)。そうでない場合は何もしません。

+0

LBoundをLCaseに置き換え、.Textを.Valueに置き換えます(列が小さすぎると内容に合わない場合は.Textが "####"となることがあります) – jkpieterse

+0

XD oops!私は気が散った、はい私は 'LCase'を使用することを意味しました。 '.Text'について、あなたはちょうど私に何か新しいことを教えました! – Noldor130884

関連する問題