2011-09-12 11 views
5

मैं Excel VBA, के माध्यम से एक स्प्रेडशीट ऐसी है कि जब भी मैं अपने एक्सेल फ़ाइल स्थानांतरित, छवि अभी भी दिखाई देगा के लिए एक छवि एम्बेड करने के लिए की जरूरत है। मैं यह कैसे कर सकता हूँ?एम्बेड एक्सेल स्प्रेडशीट के लिए छवि - VBA

उत्तर

13

इस कोड को सेल E10 पर पर वर्तमान शीट और यह स्थिति पर एक छवि डालने देगा:

Set oPic = Application.ActiveSheet.Shapes.AddPicture("d:\temp\mypic.jpg", False, True, 1, 1, 1, 1) 
oPic.ScaleHeight 1, True 
oPic.ScaleWidth 1, True 

oPic.Top = Range("E10").Top 
oPic.Left = Range("E10").Left 
+0

धन्यवाद, आपने मुझे सही दिशा में इंगित किया है! – danielpiestrak

2

क्या आप मैक्रो रिकॉर्डर का उपयोग करके देखें?

यह वही है यह मेरे लिए उत्पादन किया है: गूगल खोज शब्दों का उपयोग जानकारी के

Sub Macro1() 

    ActiveSheet.Pictures.Insert ("C:\mypicture.jpg") 

End Sub 

इसके अलावा टन: "डालें चित्र VBA एक्सेल का उपयोग करना"। नीचे दिए गए कोड ExcelTipसभी क्रेडिट से मूल लेखक Erlandsen डाटा परामर्श लिया जाता है।

मैक्रो नीचे आप किसी कार्यपत्रक में किसी भी श्रेणी में चित्रों सम्मिलित कर सकते हैं और वे जब तक रहेगा जैसा कि चित्र में ही उसके मूल स्थान में रहता है के साथ

चित्र क्षैतिज और/या लंबवत रूप से केंद्रित किया जा सकता है।

Sub TestInsertPicture() 
    InsertPicture "C:\FolderName\PictureFileName.gif", _ 
     Range("D10"), True, True 
End Sub 

Sub InsertPicture(PictureFileName As String, TargetCell As Range, _ 
    CenterH As Boolean, CenterV As Boolean) 
    ' inserts a picture at the top left position of TargetCell 
    ' the picture can be centered horizontally and/or vertically 
    Dim p As Object, t As Double, l As Double, w As Double, h As Double 
    If TypeName(ActiveSheet) <> "Worksheet" Then Exit Sub 
    If Dir(PictureFileName) = "" Then Exit Sub 
    ' import picture 
    Set p = ActiveSheet.Pictures.Insert(PictureFileName) 
    ' determine positions 
    With TargetCell 
     t = .Top 
     l = .Left 
     If CenterH Then 
      w = .Offset(0, 1).Left - .Left 
      l = l + w/2 - p.Width/2 
      If l < 1 Then l = 1 
     End If 
     If CenterV Then 
      h = .Offset(1, 0).Top - .Top 
      t = t + h/2 - p.Height/2 
      If t < 1 Then t = 1 
     End If 
    End With 
    ' position picture 
    With p 
     .Top = t 
     .Left = l 
    End With 
    Set p = Nothing 
End Sub 
आप नीचे दिए गए मैक्रो तस्वीरें डालने और किसी कार्यपत्रक में किसी भी श्रेणी के लिए उन्हें फिट कर सकते हैं के साथ

Sub TestInsertPictureInRange() 
    InsertPictureInRange "C:\FolderName\PictureFileName.gif", _ 
     Range("B5:D10") 
End Sub 

Sub InsertPictureInRange(PictureFileName As String, TargetCells As Range) 
    ' inserts a picture and resizes it to fit the TargetCells range 
    Dim p As Object, t As Double, l As Double, w As Double, h As Double 
    If TypeName(ActiveSheet) <> "Worksheet" Then Exit Sub 
    If Dir(PictureFileName) = "" Then Exit Sub 
    ' import picture 
    Set p = ActiveSheet.Pictures.Insert(PictureFileName) 
    ' determine positions 
    With TargetCells 
     t = .Top 
     l = .Left 
     w = .Offset(0, .Columns.Count).Left - .Left 
     h = .Offset(.Rows.Count, 0).Top - .Top 
    End With 
    ' position picture 
    With p 
     .Top = t 
     .Left = l 
     .Width = w 
     .Height = h 
    End With 
    Set p = Nothing 
End Sub 
+3

हमने अभी भी यही समाधान उपयोग किया है, लेकिन बाहरी छवि को स्थानांतरित या हटाए जाने पर यह काम नहीं करता है। – danielpiestrak

+0

तो मतदान के बजाय मुझे क्यों न पूछें !! मुझे और कोड के साथ आपकी मदद करने में खुशी होगी ... – Reafidy

+0

ओह मैं डाउनवॉटेड क्योंकि ओपी ने उल्लेख किया कि चित्रों को लिंक नहीं किया जा सका इसलिए एक्सेल फ़ाइल को स्थानांतरित किया जा सकता है, इसलिए मैंने इस विशेष प्रश्न का बुरा जवाब माना। क्षमा करें, कोई अपराध मतलब ~ मैं केवल इस साइट पर activly एक सप्ताह के बारे में अब भाग ले रहा है। शायद अगली बार मैं केवल ऊपर उठाऊंगा। – danielpiestrak

संबंधित मुद्दे