根据单元格值输出表格

时间:2016-05-12 08:43:48

标签: excel vba export

我正在尝试将不同的工作表集导出为指定的地图为pdf格式。 工作簿包含多个工作表,在工作表Printlist中,我有一个指定工作表,文件名和地图的列表。 (见图)

我想编写一个宏,将带有文件名的te sheetnames打印到指定的地图但是我当前的宏没有做到这一点 ![sheet] 1 代码:

Sub PDF_maken()

Dim ws As Worksheet
Dim LR As Long
Dim r As Range
Dim Mypath As String

Set ws = ActiveWorkbook.Worksheets("Printlijst")
LR = ws.Cells(Rows.Count, 1).End(xlUp).Row

For Each r In ws.Range("B2:B" & LR)

If Not IsEmty("B" & r) Then
Mypath = ws.Range("B" & r).Text
Sheets(Array(ws.Range("D" & r).Text, ws.Range("E" & r).Text, ws.Range("F" & r).Text, ws.Range("G" & r).Text)).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
Mypath & ws.Range("C" & r).Text & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, _
 IgnorePrintAreas:=False, OpenAfterPublish:=False
End If

Next r

End Sub

1 个答案:

答案 0 :(得分:0)

过一会儿,但是如果有人遇到相同的问题,下面是修复它的代码:

Sub PDF_maken()

Dim ws As Worksheet
Dim LR As Long
Dim r As Range
Dim Mypath As String
Dim strarray As String
Dim Test As String
Dim strItem As String

Set ws = ActiveWorkbook.Worksheets("Printlijst")
LR = ws.Cells(Rows.Count, 4).End(xlUp).Row

For Each r In ws.Range("D3:D" & LR).Cells

strItem = ws.Range("E" & r.Row).Text
strItem = Replace(strItem, "~", "_")
strItem = Replace(strItem, Chr(34), "_")
strItem = Replace(strItem, "%", "_")
strItem = Replace(strItem, "#", "_")
strItem = Replace(strItem, "&", "_")
strItem = Replace(strItem, "*", "_")
strItem = Replace(strItem, ":", "_")
strItem = Replace(strItem, ",", "_")
strItem = Replace(strItem, "<", "_")
strItem = Replace(strItem, ">", "_")
strItem = Replace(strItem, "?", "_")
strItem = Replace(strItem, "{", "_")
strItem = Replace(strItem, "}", "_")
strItem = Replace(strItem, "|", "_")
strItem = Replace(strItem, "/", "_")

If Not IsEmpty("D" & r.Row) Then
Mypath = ws.Range("D" & r.Row).Text
strarray = ""
colCheck = 6
Do Until Cells(r.Row, colCheck) = ""
strarray = strarray & IIf(colCheck > 6, ",", "") & Cells(r.Row, colCheck).Value
colCheck = colCheck + 1
Loop


If InStr(1, strarray, ",") Then
Dim MyAr As Variant
    MyAr = Split(strarray, ",") '<~~ This is where we are creating an actual array


        ActiveWorkbook.Sheets(MyAr).Select
        ActiveWorkbook.Sheets(ws.Range("F" & r.Row).Text).Activate
    
   ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
Mypath & strItem & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, _
 IgnorePrintAreas:=False, OpenAfterPublish:=False


Else
  ActiveWorkbook.Sheets(strarray).ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
Mypath & strItem & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, _
 IgnorePrintAreas:=False, OpenAfterPublish:=False

End If
 End If
ws.Activate

Next r

   End Sub