Board logo

標題: [發問] 工作表中的多張圖片如何操控? [打印本頁]

作者: baconbacons    時間: 2014-4-18 15:03     標題: 工作表中的多張圖片如何操控?

工作表中存在多張圖片 目前有幾項操控圖片的需求
分別是刪除、新增以及對調圖片
該用何函數或方法來指定特定的圖片?
以下是我用錄製得知的方法 但進一步操控時都會發生錯誤
ActiveSheet.Shapes.Range(Array("Picture 2"))
請高手指教
作者: GBKEE    時間: 2014-4-18 15:42

回復 1# baconbacons
試試看
  1. Option Explicit
  2. Sub Ex()
  3.     Dim p As Pictures, S(1 To 2) As Picture, C(1 To 4)
  4.     Set p = ActiveSheet.Pictures
  5.     p.Delete
  6.     '刪除所有相片
  7.    
  8.     Set S(1) = p.Insert("C:\Documents and Settings\hsuA\My Documents\My Pictures\EX.JPG")
  9.     '新增
  10.     With S(1)  '設定
  11.         .Left = [C10].Left
  12.         C(1) = .Left
  13.         .Top = [C10].Top
  14.         C(2) = .Top
  15.         .Width = [C10:F10].Width
  16.         C(3) = .Width
  17.         .Height = [C10:C15].Height
  18.         C(4) = .Height
  19.     End With
  20.    
  21.     Set S(2) = p.Insert("C:\Documents and Settings\hsuA\My Documents\My Pictures\EX1.JPG")
  22.     With S(2)
  23.         .Left = [H10].Left
  24.         .Top = [H10].Top
  25.         .Width = [H10:K10].Width
  26.         .Height = [H10:K15].Height
  27.     End With
  28.    
  29.     '**********對調
  30.     With S(1)
  31.         .Left = S(2).Left
  32.         .Top = S(2).Top
  33.         .Width = S(2).Width
  34.         .Height = S(2).Height
  35.     End With
  36.     With S(2)
  37.         .Left = C(1)
  38.         .Top = C(2)
  39.         .Width = C(3)
  40.         .Height = C(4)
  41.     End With        
  42. End Sub
複製代碼

作者: baconbacons    時間: 2014-4-23 09:16

回復 2# GBKEE
GBKEE大:
請教幾個問題,pictures 也可以是資料型態嗎?
第三行程式碼:C(1 To 4)的後方是不是應該加入「As Picture」?
S(1 To 2) 以及 C(1 To 4) 的意思是否為陣列S的2張相片、陣列C的4張相片?
那下列程式碼的意思是否為相片S(1)的左、上位置以[C10]為準,高以[C10:C15],寬以[C10:F10]為準
相片C(1)的左位置與S(1),相片C(2)的上位置與S(1),相片C(3)寬度與S(1),相片C(4)高度與S(1)相同
如果是這樣的話,我無法理解,因為執行起來好像有點問題…
    With S(1)  '設定
        .Left = [C10].Left
        C(1) = .Left
        .Top = [C10].Top
        C(2) = .Top
        .Width = [C10:F10].Width
        C(3) = .Width
        .Height = [C10:C15].Height
        C(4) = .Height
    End With

我再將我的想法表達更清楚一點的話…
我如果想要刪除該工作表中的第27張相片或是
新增第39張相片或是
將第51張相片與第54張相片對調
該如何操作
作者: GBKEE    時間: 2014-4-24 05:58

本帖最後由 GBKEE 於 2014-4-24 05:59 編輯

回復 3# baconbacons
  1. Option Explicit
  2. Sub Ex()
  3.     Dim S As Pictures, C(1 To 4) As Single
  4.     'Single 資料型態 Single (單精度浮點數) 變數係以 IEEE 32 位元 (4 個位元組)浮點數字的形式儲存,
  5.     '它的範圍在負數的時候是從 -3.402823E38 到 -1.401298E-45,而在正數的時候是從 1.401298E-45 到 3.402823E38。Single 的型態宣告字元為 !。
  6.    
  7.     Set S = ActiveSheet.Pictures 'Pictures :照片物件的集合
  8.     MsgBox S.Count
  9.    
  10.     '我如果想要刪除該工作表中的第27張相片
  11.     S(27).Delete
  12.    
  13.     '新增第39張相片
  14.     '參考 http://forum.twbts.com/thread-11828-1-1.html
  15.    
  16.     '將第51張相片與第54張相片對調
  17.     With S(54)                   '照片物件的集合的第54張照片
  18.         C(1) = .Left            'C(1)->讀取第54張照片的Left數值
  19.         C(2) = .Top             'C(2)->讀取第54張照片的Top數值
  20.         C(3) = .Width           'C(3)->讀取第54張照片的Width數值
  21.         C(4) = .Height          'C(4)->讀取第54張照片的Height數值
  22.         .Left = S(51).Left      'Left設定第51張照片的Left
  23.         .Top = S(51).Top        'Top設定第51張照片的Top
  24.         .Width = S(51).Width    'Width設定第51張照片的Width
  25.         .Height = S(51).Height  'Height設定第51張照片的Height
  26.     End With
  27.     With S(51)                  '照片物件的集合的第51張照片
  28.         .Left = C(1)            'Left數值為 C(1) ,S(54)先前的Left
  29.         .Top = C(2)             'Top數值為 C(2) ,S(54)先前的Top
  30.         .Width = C(3)           'Width數值為 C(3) ,S(54)先前的Width
  31.         .Height = C(4)          'Height數值為 C(4) ,S(54)先前的Height
  32.     End With
  33. End Sub
複製代碼





歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)