2014-10-17 27 views
0
Sub onButtonClick() 

Dim source As Worksheet, target As Worksheet 
Set source = Workbooks("End Market Monitor.xlsm").Worksheets("Aero Graphs") 
Set target = Sheet1 

Dim ws As Worksheet 
Dim title_name As String, search As String 



search = ActiveCell.Offset(0, -5).Value 
ReDim chartArray(1 To source.ChartObjects.Count) As Chart 
For i = 1 To source.ChartObjects.Count 
    title_name = source.ChartObjects(i).Chart.ChartTitle.Text 
    counter = 1 
    If InStr(title_name, search) > 0 Then 
     Set chartArray(counter) = source.ChartObjects(i).Chart 
     counter = counter + 1 
    End If 

Next 
Set wsTemp = Sheets.Add 

    tp = 10 

    With wsTemp 
     For n = 1 To UBound(chartArray) 
      chartArray(n).CopyPicture 
      wsTemp.Range("A1").PasteSpecial 
      Selection.Top = tp 
      Selection.Left = 5 
      tp = tp + Selection.Height + 50 
     Next 
    End With 

    wsTemp.ExportAsFixedFormat Type:=xlTypePDF, Filename:=NewFileName, Quality:=xlQualityStandard, _ 
      IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True 
End Sub 

我遇到搜索變量有問題。我不斷收到對象定義的錯誤,我不知道爲什麼...我應該使用Cells.Offset嗎?另外,當我遍歷圖表數組時,我無法使用每個循環,所以我必須從1循環到數組的上限。這是可行的嗎?VBA在按鈕上導出圖表陣列點擊

+0

那一行,你得到錯誤的「定義的對象」? – JNevill 2014-10-17 18:11:16

+0

在搜索= Activecell.offset(0,-5)。同時,我得到了chartArray的copypicture方法失敗。 – 2014-10-17 18:12:15

回答

0

由於ActiveCell.Offset(0,-5)正在嘗試選取不存在的單元格,因此彈出了對象定義錯誤。如果ActiveCell在列A,B,C,D或E中,它將顯示此錯誤,因爲在A之前沒有列。也許更具體的是「ActiveCell」。

至於通過圖表循環,下面應該工作:

Dim ChartObj as Chartobject 
For each ChartObj in Source.ChartObjects 
    .... 
Next ChartObj