返回列表 上一主題 發帖

有關插入圖片的問題

有關插入圖片的問題

各位先進大家好!
        不好意思!小弟又來打擾了。小弟的問題是:我在活頁簿裡插入很多張同樣的圖片(學校的校徽),每隔幾行就會出現一張,但是在語法裡有隱藏行列的語法:
    .Cells.Rows.Hidden = False
    .Range("a" & 1 + 26 * k, .Range("a1041")).EntireRow.Hidden = True
    .Range("a1041", Range("a1041").End(xlDown)).EntireRow.Hidden = True
問題在於,有圖片的行列被隱藏,一旦又被取消隱藏之後,就會發現圖片被壓縮了。不知這個問題如何解決呢?

感謝版大!我又去網路上找了一下有關EnableEvents的資料,讓我多上了一課,也圓滿的解決這個問題了。

TOP

回復 32# skyutm
EnableEvents 屬性 如果指定物件能觸發事件,則本屬性為 True。讀/寫 Boolean。
  1. Sub macor24()
  2.     '解除保護「成績儲存」表格↓'
  3.    Application.EnableEvents = False  '停止物件能觸發事件
  4.     Sheets("成績儲存").Unprotect Password:="6323"
  5.     '解除保護「成績儲存」表格↑
  6.     Dim a, b, u, v, r, n As String
  7.     a = Sheets("基本設定").Range("a6").Value
  8.     b = Sheets("基本設定").Range("a8").Value
  9.     u = Sheets("基本設定").Range("j1").Value
  10.     v = Sheets("基本設定").Range("j2").Value
  11.    r = "C:\Documents and Settings\Administrator\桌面\"
  12.     n = a & "學年度" & b & "學期" & u & "年" & v & "班成績檔"
  13.    
  14.     Sheets("成績儲存").Copy
  15.     With ActiveWorkbook
  16.          Application.DisplayAlerts = False
  17.          .SaveAs Filename:=r & n & ".xls", FileFormat:=51
  18.          Application.DisplayAlerts = False
  19.          '保護「成績儲存」表格↓'
  20.          Sheets("成績儲存").Activate
  21.          ActiveSheet.EnableSelection = xlUnlockedCells
  22.          Sheets("成績儲存").Protect Password:="6323"
  23.          '保護「成績儲存」表格↑'
  24.          .Close savechanges:=True
  25.     End With
  26.     Application.EnableEvents = True '恢復物件能觸發事件
  27. End Sub
複製代碼
  1. Option Explicit
  2. Sub Worksheet_Activate()
  3. ' ***  On Error Resume Next  可刪掉
  4.     Application.ScreenUpdating = False
複製代碼

TOP

回復 31# GBKEE
版大您好!再次感謝。附上檔案。工作表是「成績儲存」它是「學籍簿」工作表的複製。巨集是macro24

新路成績系統.rar (379.76 KB)

TOP

回復 30# skyutm
加一行On Error Resume Next,這樣就可以解決了。(不知這樣有無風險嗎?
是有的 如有錯誤的語法或變數書寫錯誤, VBA是不處裡的.
請附檔看看

TOP

回復 29# GBKEE
回復版大,問題還是存在耶,因為剛剛實驗時是在新的檔案裡加幾行語法,結果檔案關閉後再重開語法就不見了。等到我運用在自己的成績系統之後,問題就出現了。因為被複製的工作表語法是寫在Worksheet_Activate裡,所以只要複製檔案時,還未關閉,語法錯誤行就會出現(還來不及關閉)。
後來我又想出一個辦法,就是在被複製的工作表語法裡面,加一行On Error Resume Next,這樣就可以解決了。(不知這樣有無風險嗎?)

TOP

回復 28# skyutm
執行2 4# 的程式碼後 須將檔案關閉,然後再打開才會無巨集
  1. Workbooks(1).Sheets(1).Copy        '->複製Sheets(1) 的工作表會在新增的活頁簿      
  2. With ActiveWorkbook                     '>新增的活頁簿
  3.         Application.DisplayAlerts = False
  4.         .SaveAs "d:\無巨集.xlsx", FileFormat:=51 ' xlExcel8
  5.       '**  副檔名:xlsx  為無VBA巨集 的活頁簿
  6.       '***'存檔後 還是有巨集
  7.         Application.DisplayAlerts = False
  8.      .Close            '26#新加的程式碼  *** 關閉檔案
  9.     End With
  10.     Workbooks.Open ("d:\無巨集.xlsx")   '26#新加的程式碼  *** 開啟檔案
複製代碼

TOP

回復 27# skyutm
版大您這麼一認真起來,我倒是有些被搞迷糊了。我比較了前後兩個語法只差在
Option Explicit
.Close
Workbooks.Open ("d:\無巨集.xlsx")
這三行而已,而我不懂,為何這樣語法的差異會造成不同的結果?

TOP

回復 26# GBKEE
版大實在是太熱心了,鍥而不捨終於測試成功了,最後這個可以,檔案內已無巨集!

TOP

回復 25# skyutm
請問你執行程式後有將此檔案關閉,然後在打開看看,此檔案依然是有巨集存在嗎?
再試試看
  1. Sub Ex() '練習試試看   活頁簿,工作表: 須皆沒上鎖的狀態
  2.     Workbooks(1).Sheets(1).Copy            ' Sheets(1) 請先製作VBA巨集
  3.     'Workbooks("TEST").Sheets("TEST").Copy   ' Sheets(1) 請先製作VBA巨集
  4.     With ActiveWorkbook
  5.         Application.DisplayAlerts = False
  6.         .SaveAs "d:\無巨集.xlsx", FileFormat:=51 ' xlExcel8
  7.          '**  副檔名:xlsx  為無VBA巨集 的活頁簿
  8.         Application.DisplayAlerts = False
  9.         .Close
  10.     End With
  11.     Workbooks.Open ("d:\無巨集.xlsx")
  12. End Sub
複製代碼

TOP

        靜思自在 : 有心就有福,有願就有力,自造福田,自得福緣。
返回列表 上一主題