- 締切済み
excelデータベースによる差込印刷について質問です。
新しい職場で使用されているデータベースがあるのですが、オートフィルタによる絞り込み後のデータのみ(可視セルのみ)の差込印刷ができなくて困っています。 データベースは「date.xls」ファイルに各データが格納され、「入力及び印刷.xls」ファイルのコマンドボタンにて入力・プリントアウトを行っています。 現状でも印刷ボタンはあるのですが、オートフィルタされたデータの一番上から一番下までのデータが全て印刷されてしまうようです(不可視セルも含めて) 以下に関係してそうなコードを記載します。 【印刷】 Private Sub CommandButton3_Click() '印刷 Dim Msg Dim i As Long, k As Long, eflag As Long UserForm1.Hide If StartData = 0 Or SaisyuData = 0 Then Exit Sub ' エラーが発生したら、エラー メッセージを作成 On Error Resume Next ' エラーのトラップを留保 Fukusya (StartData) ActiveWindow.SelectedSheets.PrintPreview 'commandpos If MsgBox("選択" & RowCount & "件 だけ印刷 ", vbOKCancel) <> vbCancel Then For i = StartData To SaisyuData Fukusya (i) ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True ActiveWindow.View = xlNormalView ' エラーの発生をチェックした後、メッセージを表示 If Err.Number <> 0 Then Msg = "エラー番号 " & Str(Err.Number) & Err.Source & " でエラーが発生" & Chr(13) & Err.Description MsgBox Msg, , "エラー", Err.HelpFile, Err.HelpContext End If Next 'commandpos End If Fukusya (SaisyuData) Calculate End Sub 【印刷コード内の各単語に関するもの】 Private Function StartData() Dim i As Long, k As Long, eflag As Long Dim start As Long k = Retu start = 0 For i = 3 To k If Workbooks("data.xls").Worksheets("data").Rows(i).Hidden = False Then start = i Exit For End If Next StartData = start End Function Private Function SaisyuData() Dim i As Long, k As Long, eflag As Long Dim stp As Long k = Retu stp = 0 For i = k To 3 Step -1 If Workbooks("data.xls").Worksheets("data").Rows(i).Hidden = False Then stp = i Exit For End If Next SaisyuData = stp End Function Private Sub Fukusya(mm As Long) 'data複写 Dim i As Long, j As Long, k As Long Dim nn As String nn = RowCount UserForm1.TextBox1.Value = nn UserForm1.TextBox4.Value = TourokuSoSu - 2 UserForm1.TextBox5.Value = Myretu - 2 k = Koumokusu j = mm 'データシートから配列に読み込み With Workbooks("data.xls").Worksheets("data") For i = 0 To k kou(3, i) = .Cells(j, i + 1).Value Next GazoSize(0) = .Cells(j, k + 3).Value GazoName(0) = .Cells(j, k + 2).Value GazoSize(1) = .Cells(j, k + 5).Value GazoName(1) = .Cells(j, k + 4).Value End With '配列からフォームに読み込み With Worksheets("入力") For i = 0 To k If kou(1, i) = "" Then Exit For .Range(kou(1, i)).Value = kou(3, i) Next End With image1 image2 End Sub 長くなって申し訳ありません。以上のようなコードになっています。 なんとか「date.xls」上で絞り込んだ可視セルのみを、「入力及び印刷.xls」ファイルに差し込んで印刷したいです。よろしくお願いいたします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
絞込みをしたデータを別の名前をつけて保存をして、差込には新しく保存したデータを使うようにすればよいのではないですか。 ここに示してあるマクロの中に絞込みのところが含まれているのか私はわからなくて申し訳ありません。
お礼
ありがとうございます。 「date.xls」ファイルと「入力及び印刷.xls」は連動していて、 「date.xls」というファイル名でないと「入力及び印刷.xls」は データを認識できない仕様のようです。 つまり、新しいファイル名にしてしまうと差込印刷ができません。