VBA插入圖片隨文件保存(非引用方式)

VBA插入圖片隨文件保存(非引用方式)

1.1. 需求分析

接收到xxx公司項目正在使用的Excel自動生成報告的宏,可以看出,大致就是把測試截圖全自動插入到報告文件中梢莽。

image.png

1.1.1. 已知問題

生成的報告文件有一個最大的問題就是當(dāng)目錄下的測試截圖被刪除時嗓袱,測試報告當(dāng)中的圖片就會顯示為空, 這顯然不是我們想要的效果。

image.png

查看宏代碼得知Pictures.Insert只是引用了路徑下的圖片胸蛛,圖片不能隨文件一起保存污茵,所以要解決這個問題。

        Workbooks("" & Filename & "").Activate
        Sheets("測試截圖").Select
        Range("A8:R27").Select

        file = Dir(ThisWorkbook.Path & "\" & zhanMing & "\測試截圖\整體覆蓋RxLevel.*")
        ActiveSheet.Pictures.Insert(ThisWorkbook.Path & "\" & zhanMing & "\測試截圖\" & file & "").Select 'Pictures.Insert方法葬项,因為在文檔中只存儲圖片的鏈接信息泞当,圖片不能隨文件一起保存
        Selection.ShapeRange.LockAspectRatio = msoFalse
       ' Selection.ShapeRange.IncrementLeft -10
       ' Selection.ShapeRange.IncrementTop -10
        Selection.ShapeRange.Height = 285
        Selection.ShapeRange.Width = 485

1.2. 解決方案

使用Shapes.AddPicture 方法來保存文件

語法:
Shapes.AddPicture( Filename , LinkToFile , SaveWithDocument , Left , Top , Width , Height )

image.png

示例

This example adds a picture created from the file Music.bmp to myDocument.

Set myDocument = Worksheets(1) 
myDocument.Shapes.AddPicture("c:\microsoft office\clipart\music.bmp", True, True, 100, 100, 70, 70)

1.2.1. 代碼的修改

1.新建一個子過程:

Sub InsertPicture(path As String, ran As Range)
'Path為文件路徑
'ran為要插入的單元格區(qū)域
Set myDocument = ActiveSheet
myDocument.Shapes.AddPicture(path, True, True, ran.Left, ran.Top, ran.Width, ran.Height).Placement = xlMoveAndSize
End Sub

2.把原宏中所有類似的代碼都改為以下格式


'原始代碼示例
        Range("C14:D14").Select
        file = Dir(ThisWorkbook.Path & "\" & zhanMing & "\現(xiàn)場照片\天線側(cè)面照片_第2小區(qū).*")
        ActiveSheet.Pictures.Insert(ThisWorkbook.Path & "\" & zhanMing & "\現(xiàn)場照片\" & file & "").Select
        Selection.ShapeRange.LockAspectRatio = msoFalse
        Selection.ShapeRange.Height = 170
        Selection.ShapeRange.Width = 285

'修改后示例
        file = Dir(ThisWorkbook.path & "\" & zhanMing & "\現(xiàn)場照片\天線側(cè)面照片_第2小區(qū).*")
        Call InsertPicture(ThisWorkbook.path & "\" & zhanMing & "\現(xiàn)場照片\" & file & "", Range("C14:D14"))

3.測試后生成的文件大小比原來的文件大了好多,里面的圖片也真正保存到Excel文件中了民珍。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末襟士,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子穷缤,更是在濱河造成了極大的恐慌敌蜂,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件津肛,死亡現(xiàn)場離奇詭異章喉,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)身坐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進(jìn)店門秸脱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人部蛇,你說我怎么就攤上這事摊唇。” “怎么了涯鲁?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵巷查,是天一觀的道長。 經(jīng)常有香客問我抹腿,道長岛请,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任警绩,我火速辦了婚禮崇败,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己后室,他們只是感情好缩膝,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著岸霹,像睡著了一般疾层。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上松申,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天云芦,我揣著相機(jī)與錄音,去河邊找鬼贸桶。 笑死舅逸,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的皇筛。 我是一名探鬼主播琉历,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼水醋!你這毒婦竟也來了旗笔?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤拄踪,失蹤者是張志新(化名)和其女友劉穎蝇恶,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體惶桐,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡撮弧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了姚糊。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贿衍。...
    茶點(diǎn)故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖救恨,靈堂內(nèi)的尸體忽然破棺而出贸辈,到底是詐尸還是另有隱情,我是刑警寧澤肠槽,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布擎淤,位于F島的核電站,受9級特大地震影響秸仙,放射性物質(zhì)發(fā)生泄漏揉燃。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一筋栋、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧正驻,春花似錦弊攘、人聲如沸抢腐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽迈倍。三九已至,卻和暖如春捣域,著一層夾襖步出監(jiān)牢的瞬間啼染,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工焕梅, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留迹鹅,地道東北人。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓贞言,卻偏偏與公主長得像斜棚,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子该窗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評論 2 349