プロが教える店舗&オフィスのセキュリティ対策術

新しい職場で使用されているデータベースがあるのですが、オートフィルタによる絞り込み後のデータのみ(可視セルのみ)の差込印刷ができなくて困っています。

データベースは「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」ファイルに差し込んで印刷したいです。よろしくお願いいたします。

A 回答 (1件)

絞込みをしたデータを別の名前をつけて保存をして、差込には新しく保存したデータを使うようにすればよいのではないですか。


ここに示してあるマクロの中に絞込みのところが含まれているのか私はわからなくて申し訳ありません。
    • good
    • 0
この回答へのお礼

ありがとうございます。

「date.xls」ファイルと「入力及び印刷.xls」は連動していて、
「date.xls」というファイル名でないと「入力及び印刷.xls」は
データを認識できない仕様のようです。

つまり、新しいファイル名にしてしまうと差込印刷ができません。

お礼日時:2008/04/12 20:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!