2017-09-26 68 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