2017-09-26 73 views
0

不知您是否可以帮助我修改此代码......它使用数据集查找指标行以匹配字段并为指标定义完成表单。这可以通过将列修改为yesno来完成一次或多次。将excel行转换为pdf循环

它目前将每个指标导出到一个单独的PDF--我希望将所选指标的范围组合为一个pdf--这在导出中可能吗?可能是这样的union打印范围?

或者如果可能将每个输出粘贴为图像以清空工作表,然后导出为PDF格式?

Sub print_selected_rows(inputData As Range, outputData As Range) 

Dim data_columns, data_rows, filter_column, i, j 
Dim ThisFile As Variant 

data_rows = getArrayRows(inputData) 
data_columns = getArrayColumns(inputData) 

For i = 1 To data_columns 
If (inputData.Cells(1, i).Value = "Select for report") Then 
    filter_column = i 
    Exit For 
End If 
Next 

Sheets("Output").Visible = True 
Sheets("Output").Select 

For i = 1 To data_rows 
If ((inputData.Cells(i, filter_column).Value = "yes") Or (inputData.Cells (i, filter_column).Value = "Yes") _ 
    Or (inputData.Cells(i, filter_column).Value = "Y") Or (inputData.Cells(i, filter_column).Value = "y")) Then 
'copy row data to output sheet 
    For j = 1 To data_columns 
     outputData.Cells(j, 3).Value = inputData.Cells(i, j).Value 
    Next 

    ThisFile = Application.GetSaveAsFilename(_ 
     "abc" & " " & _ 
     Range("selected_ID").Value, "PDF Files (*.pdf), *.pdf") 
    If VarType(ThisFile) = vbString Then 
     ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ThisFile, _ 
     Quality:=xlQualityStandard, IncludeDocProperties:=True, _ 
     IgnorePrintAreas:=False, OpenAfterPublish:=False 
    End If 
End If 
Next 

Sheets("Introduction").Visible = True 
Sheets("Introduction").Select 
Sheets("Output").Visible = False 

End Sub 

回答

0

我设法复制和粘贴作为图像来解决这一个新的工作表中使用下面的代码:

Sub print_selected_rows(inputData As Range, outputData As Range) 

Dim data_columns, data_rows, filter_column, i, j, k 
Dim ThisFile As Variant 

k = 0 

data_rows = getArrayRows(inputData) 
data_columns = getArrayColumns(inputData) 

For i = 1 To data_columns 
If (inputData.Cells(1, i).Value = "Select for report") Then 
    filter_column = i 
    Exit For 
End If 
Next 

Sheets("Output").Visible = True 
Sheets("Output").Select 

For i = 1 To data_rows 
If ((inputData.Cells(i, filter_column).Value = "yes") Or (inputData.Cells (i, filter_column).Value = "Yes") _ 
    Or (inputData.Cells(i, filter_column).Value = "Y") Or (inputData.Cells(i, filter_column).Value = "y")) Then 
'copy row data to output sheet 
    For j = 1 To data_columns 
     outputData.Cells(j, 3).Value = inputData.Cells(i, j).Value 
    Next 
     With ThisFile 
     Sheets("Output").Range("A1:J55").CopyPicture xlScreen, xlBitmap 
     Worksheets("Sheet1").Paste _ 
     Worksheets("Sheet1").Range("A1").Offset(k, 0) 
     k = k + 56 
     End With 
End If 
Next 

Sheets("Introduction").Visible = True 
Sheets("Introduction").Select 
Sheets("Output").Visible = False 
Sheets("Sheet1").Visible = False 

End Sub