Board logo

標題: 圖片處理問題 [打印本頁]

作者: hugh0620    時間: 2011-6-26 03:15     標題: 圖片處理問題

本帖最後由 hugh0620 於 2011-6-26 03:20 編輯

Dear 大大

          小弟有一個圖片處理的問題~ 想求知~ 該如何處理會更好
          亦有搜索過圖片的相關文章~ 沒有適當的方式
          將問題PO上來给大大們指教小弟一番
          附件是我的問題範本
          問題如下
         1. 圖片名稱的修改,是否可以直接將圖片的名稱改成編號(A、B、C…..),以減少D欄位的資料設定。
             可直接使用編號找到圖片,然會匯出到指定的位置"                                                                       
         2. 圖片匯到指定的sheet位置後會有偏移的問題,該如何處理呢?                                                                       
         3. 在Output中,有一個問題,就是匯出時圖片要先清楚後,再依新的Output中C欄位的資料順序將圖片貼上,
             但是依在Output中按鈕的程式碼,會有造成錯誤,該如何修改呢?"       

       Hsieh大大有提供一篇圖片的驗證方式應用~
       http://blog.xuite.net/saladoil/excel/8835494        
      
      但不適用小弟要處理的方式~ 因為小弟的資料,會因為每次OUTPUT時資料會變動~ 無法用驗證的方式處理~
      亦考慮到使用者的EXCEL程度無法調整~ 所以~ 要死寫~ 可擴充資料的方式~ 以便利使用者使用~                                                       
       [attach]6825[/attach]
作者: oobird    時間: 2011-6-26 10:58

  1. Sub 圖片命名()
  2.     Dim p As Shape
  3.     With Sheet1
  4.         For Each p In .Shapes
  5.             r = p.TopLeftCell.Row
  6.             p.Name = .Cells(r, 3).Value
  7.         Next
  8.     End With
  9. End Sub
複製代碼
  1. Private Sub CommandButton1_Click()
  2. With Sheet2
  3. '====問題點=========
  4. For Each shp In .Shapes
  5. If shp.Type = 13 Then shp.Delete
  6. Next
  7. '====問題點=========
  8. Do Until .Range("C" & 3 + K) = ""
  9.         x = .Range("C" & 3 + K).Value
  10.          Sheet1.Shapes(x).Copy
  11.          .Select
  12.          .Paste
  13.          Selection.Top = .Range("d" & 3 + K).Top
  14.          Selection.Left = .Range("d" & 3 + K).Left
  15. K = K + 1
  16. Loop
  17. End With
  18. End Sub
複製代碼

作者: hugh0620    時間: 2011-6-26 12:34

回復 2# oobird


    感謝O大大~ 程式簡單明膫  只是有幾行不太了解~
    等內化後~ 應該可以用的蠻應手的~

    謝謝大大唷~ 感恩~ 有不了解的再請教大大~ 謝謝~  ^^
作者: hugh0620    時間: 2011-6-27 12:16

回復 2# oobird


    大大~ 我發現一個問題
   如果將Output中的按鈕"圖片資料匯出"改放在Data
   由data中執行匯出的動作,就會產生一個錯誤訊息
    [執行階段錯誤'70': 沒有使用權限]

     大大~ 我修改了好幾次~ 還是會出現這個錯誤 請救一下
作者: oobird    時間: 2011-6-27 14:34

任何vba都不可能適用於所有狀況
你要自己依來源地置結構作修改
尤其是資料庫都設有存取權限
作者: hugh0620    時間: 2011-6-27 16:04

回復 5# oobird
     大大
     後來~ 我使用IF  P.TYPE<>13 THEN GOTO的方式,排除掉問題
     下面的程式碼修改/執行後沒有問題
    A = Sheet1.Range("C65536").End(xlUp).Row
    Sheet1.Rows("2:" & A).RowHeight = 81
    Sheet1.Columns("E:E").ColumnWidth = 12.88
    Dim p As Shape

    With Sheet1
        For Each p In .Shapes
        If p.Type <> 13 Then GoTo 1
            R = R + 1
            p.Name = R
1
        Next

        For Each p In .Shapes
        If p.Type <> 13 Then GoTo 2
            R = p.TopLeftCell.Row
            p.Name = .Cells(R, 3).Value
            p.Top = .Cells(R, 5).Top
            p.Left = .Cells(R, 5).Left
            p.LockAspectRatio = msoFalse
            p.Height = 75
            p.Width = 73.5
2
        Next

    End With


With Sheet2

'====問題點=========

For Each shp In .Shapes


If shp.Type = 13 Then shp.Delete

Next

'====問題點=========

Do Until .Range("C" & 3 + K) = ""

        x = .Range("C" & 3 + K).Value

         Sheet1.Shapes(x).Copy

         .Select

         .Paste

         Selection.Top = .Range("d" & 3 + K).Top

         Selection.Left = .Range("d" & 3 + K).Left

K = K + 1

Loop




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