2017-10-27 9 views
-1

セルをE5で値を変更すると、自動的に特定のフィールドを塗りつぶすシート1のシートを他のシート上のテーブルから検索して返します。 シートテーブル)。複数の値に基づいてシートを印刷するExcelマクロ

私の目標は、今sheetTable上の列の値の範囲を選択し、それらの一つ一つがシート1にE5をセルに割り当て、それぞれを印刷することです。

それでは、私は値を持つ3つのセルを選択しましょう:45、50と66、私はマクロを実行すると、それはそれはE5と印刷次の使用例は、シート1のセルに50を割り当てます、E5および印刷次の使用例は、シート1をセルに45を割り当てますであり、最後にセルE5に66を割り当て、シート1を印刷します。

Private Sub Worksheet_Change(ByVal Target As Range) 
Dim KeyCells As Range 
Dim shape As Excel.shape 
' The variable KeyCells contains the cells that will 
' cause an alert when they are changed. 
Set KeyCells = Range("e5") 


If Not Application.Intersect(KeyCells, Range(Target.Address)) _ 
     Is Nothing Then 


For Each shape In ActiveSheet.Shapes 
    shape.Delete 
Next 

InsertPictureInRange Range("f2").Value & Range("e5").Value & ".jpg", _ 
    Range("c9") 
InsertPictureInRange Range("f2").Value & Range("e5").Value & "_1.jpg", _ 
    Range("i9") 

If Range("e5").Value = "" Then Exit Sub 

End If 

End Sub 

答えて

1

以下は、選択によって実行し、セルE5に値を貼り付け、Sheet1の、そして「PRINTTOFILE」ダイアログボックスを開きます。そこから、ファイルの場所と名前を手動で入力する必要があります。

Dim Rng As Range 
Set Rng = Selection 

Dim Sheet1 As Worksheet 
Set Sheet1 = Sheets("Sheet1") 

    For Each Cell In Rng 
     Sheet1.Range("e5").Value = Cell.Value 
     Sheet1.PrintOut Copies:=1, printtofile:=True, collate:=True, ignoreprintareas:=False 
    Next Cell 

これはあなたに少なくとも半分を取得します。おそらく私よりも経験豊富な人が、VBAを使ってファイルの場所と名前を入力する方法を追加することができます。

+0

ありがとうございます。それは少し助けたが、働いていない。これは同じシートでのみ機能します。私が必要とするのは、他のシート(テーブルがあるシート)の範囲を選択することです。また、私は、pdfにsheet1を印刷し、pdfファイルの名前をE5の値で指定するコードが必要です。したがって、テーブルシート上の3つのセルを値34,44,55で選択すると、次のファイルが作成されます。34.pdf、44.pdf、55.pdf –

+0

ああ、わかります。明確にしていただきありがとうございます。私が避けている 'SendKeys'を使う以外に、ExcelからPDFファイルを保存する方法があるかどうかはわかりません。私は自分の答えを更新し、それぞれの価値についての印刷ダイアログをどのように開くのかを示します。そこから、ファイルの場所とシートの名前を手動で入力する必要があります。完全な答えではない、私は知っている。私はExcelからファイルにPDFを保存する方法を探し続けます。 –

関連する問題