Skip to main content

Insert a Chart Built in a Workbook Into Another Workbook

Insert a Chart Built in a Workbook Into Another Workbook

Insert into allocated Cells region in a workbook resulted charts built in a different workbook, Can this be done? How would you integrate that chart into some kind of place holder in the workbook that is expecting to get that chart

 Sub CopyChart()  
 ' Copy Chart 'Chart 1' from ThisWorkbook Worksheet 'Sheet1'  
 ' to Workbook 'BookB.xlsm' Worksheet 'Sheet1',  
 ' at specified position.  
 '--  
 Dim wbkSource As Workbook  ' Source Workbook  
   Dim wksSource As Worksheet  ' Source Worksheet  
 ' Top-Left cell where Chart is going to be pasted  
   Dim cSourceTopLeft As Range  
   Dim sTargetTopLeft As String  ' Chart Top-Left cell address  
   '--  
 Dim wbkTarget As Workbook  ' Target Workbook  
   Dim wksTarget As Worksheet  ' Target Worksheet  
   ' Top-Left cell where Chart is going to be pasted  
   Dim cTargetTopLeft As Range  
   Dim sFileNameTarget As String  
   '--  
 Dim oChart As Excel.Chart  
   Dim oChartObject As Excel.ChartObject  
   ' Follows original Chart dimension variables  
   Dim h As Single   ' Chart Heihgt  
   Dim w As Single   ' Chart Width  
   ' Customize the following constant  
   ' (the of increase / decrease of chart (%))  
   'Const csngRATIO As Single = 15 ' = increase 15%  
   ' 0r...  
   Const csngRATIO As Single = -10  ' = decrease 10%  
   '--  
 ' Name of original chart can be seen in Name Box.  
   Const csCHARTNAME As String = "Chart 1"  
   '--  
 ' Customize path and file name  
   ' In this example, my chart is embeded in  
   ' 'ThisWorkbook' = CodeName of Workbook where is stored this vba code  
   '--  
   ' Reference workbooks and worksheets  
   Set wbkSource = ThisWorkbook  
   Set wksSource = wbkSource.Worksheets("Sheet1")  
   With wksSource  
     ' Reference specified Chart  
     Set oChart = .ChartObjects("Chart 1").Chart  ' Reference Chart by Name  
     ' or aaa  
     Set oChart = .ChartObjects(1).Chart  ' Reference Chart by Index  
     sTargetTopLeft = oChart.Parent.TopLeftCell.Address  
     ' It's the same as:  
     'sTargetTopLeft = .ChartObjects(1).TopLeftCell.Address  
     'MsgBox sTargetTopLeft  
     h = oChart.Parent.Height  
     w = oChart.Parent.Width  
   End With  
   ' Reference Workbook 'BookB.xlsm' (where Chart is going to be pasted)  
   ' a) Try reference Workbook if is already open  
   On Error Resume Next  
   Set wbkTarget = Workbooks("BookB.xlsm")  
   If wbkTarget Is Nothing Then  
     ' b) If workbook is not open, then open it  
     ' b2) Construct workbook full name (Path+filename)  
     ' In this example, workbook 'BookB.xlsm' is saved in the same  
     ' folder as 'BookA.xlsm'. Customize path.  
     sFileNameTarget = wbkSource  
     ' Check if top right character is application path separator  
     If Right(sFileNameTarget, 1) <> Application.PathSeparator Then  
       sFileNameTarget = sFileNameTarget & _  
                Application.PathSeparator  
     End If  
     sFileNameTarget = sFileNameTarget & "BookB.xlsm" ' Add File name  
     ' If Workbook is not open (a Is Nothing), then open workbook  
     Set wbkTarget = Workbooks.Open(Filename:=sFileNameTarget)  
   End If  
   '--  
   ' Final check if 'BookB.xlsm' referenced  
   If wbkTarget Is Nothing Then  
     MsgBox "Workbook 'BookB.xlsm' open problem." & vbLf & _  
         "Please check path and file name...", _  
         vbExclamation, "Open BookB "  
     Exit Sub  '>>> Stop execution <<<  
   End If  
   On Error GoTo 0  
   ' Reference Target range (customize reference)  
   Set wksTarget = wbkTarget.Worksheets("Sheet1")  
   With wksTarget  
     ' Reference Target Top-Left cell  
     Set cTargetTopLeft = .Range(sTargetTopLeft) ' The same place as original  
     ' or your customized address  
     Set cTargetTopLeft = .Range("E3")  
   End With  
   wbkTarget.Activate  
   wksTarget.Select  
   cTargetTopLeft.Select  
   Application.ScreenUpdating = False  
   ' Delete previously Target Chart at the same  
   ' position only (if exists).  
   On Error Resume Next  
   For Each oChartObject In wksTarget.ChartObjects  
     ' If the same Top-Left cell address,  
     ' then delete Chart  
     If oChartObject.TopLeftCell.Address = _  
       cTargetTopLeft.Address Then  
       oChartObject.Delete  
       Exit For  '>>>  
     End If  
   Next  
   On Error GoTo 0  
   '++++++++++++++++++++++++++++++  
   ' Copy ChartArea  
   oChart.ChartArea.Copy  
   ' Paste at Target worksheet  
   ActiveSheet.Paste  
   '++++++++++++++++++++++++++++++  
   For Each oChartObject In wksTarget.ChartObjects  
     ' If the Top-Left cell address = 'A1' then  
     ' make the same Chart position as original.  
     ' You can define explicit values for Left and Top  
     ' Chart position, or use Top-Left value of  
     ' any cell, e.g.: oChartObject.Left = Eange("C3").Left  
     If oChartObject.TopLeftCell.Address = "$A$1" Then  
       oChartObject.Left = cTargetTopLeft.Left  
       oChartObject.Top = cTargetTopLeft.Top  
       ' A copy of the chart may not be the same size  
       ' like the original.  
       oChartObject.Width = w * (100 + csngRATIO) / 100  
       oChartObject.Height = h * (100 + csngRATIO) / 100  
       Exit For  '>>>  
     End If  
   Next  
   ' Save Target workbook  
   wbkTarget.Save  
   Application.ScreenUpdating = True  
   cTargetTopLeft.Select  
   MsgBox "Over..." & vbLf & "Copy of Chart is " & _  
       IIf(csngRATIO > 0, "increased", "reduced") & " " & _  
       Format(Abs(csngRATIO) / 100, "0.00%"), _  
       vbInformation, "Copy Chart"  
   ' Release Object variables from memory  
   Set wbkSource = Nothing  
   Set wbkTarget = Nothing  
 End Sub  

Popular posts from this blog

Resolved : Power BI Report connection error during execution

Getting Below Power BI Report connection error during execution . Error: Something went wrong Unable to connect to the data source undefined. Please try again later or contact support. If you contact support, please provide these details. Underlying error code: -2147467259 Table: Business Sector. Underlying error message: AnalysisServices: A connection cannot be made. Ensure that the server is running. DM_ErrorDetailNameCode_UnderlyingHResult: -2147467259 Microsoft.Data.Mashup.ValueError.DataSourceKind: AnalysisServices Microsoft.Data.Mashup.ValueError.DataSourcePath: 10.10.10.60;T_CustomerMaster_ST Microsoft.Data.Mashup.ValueError.Reason: DataSource.Error Cluster URI: WABI-WEST-EUROPE-redirect.analysis.windows.net Activity ID: c72c4f12-8c27-475f-b576-a539dd81826a Request ID: dfb54166-c78f-4b40-779f-e8922a6687ad Time: 2019-09-26 10:03:29Z Solution: We found report connection not able to connect to SQL Analysis service so tried below option. ...

Song- Khamoshiyan Piano keyboard Chord,Notation and songs Lyrics

Song Aankhen Khuli Ho lyrics notation

Song : Aankhen Khuli Ho Movie: Mohabbatein Notes used : W=>Western - C D E F G- A- B-/ H=>Hindustani - S R G M P- D- N- ( Here for western, G=G-, A=A-, & B=B- ) ( For hindustani, P=P-, D=D-, & N=N- ) Song I : Aankhen Khuli...Ho Ya.. Ho Bandh W=> A.... C... B..C.. E.. E...... A... A.... H=> D... S... N..S.. G G....... D... D.... Deedaar Un Ka Ho.o.taa Hai.. W=> A...B....A....D.BAG....ADB... H=> D...N...D.....R.NDP...DRN... Kaise Kahoon Main O..Yaaraa W=> B..D.. D....E.... D.....C..C..C... H=> N..R.. R....G... R.....S..S..S..... Ye Pyaar Kaise Hota Hai W=> E...B.....DB...AG...B..AA H=> G...N....RN...DP...N...DD (Tururu ru ru, ru ru rururu ru......) W=> AA...GA...BCE..., B...DB..GA H=> DD...PD...NSG..., N..RN.. PD Song II: Aa.aj He Kisi..par Yaa.ro.on..., Marke De..Khe..gein Hum W=> E....FEDCBABC.D.. D D......., G A B C.... E.......D...D..... H=> G....MGRSNDNS.R. R R......., P D N S.....G........R...R.... Pyaar Ho...