返回列表 上一主題 發帖

[發問] 新手發問有關活頁中的圖片操作

回復 10# GBKEE
果然可以用更精簡的方法來撰寫 待我慢慢消化了解  感謝…
想請教Set picNumRng = .Range("A" & (25 * (k - 1) + 5 - Application.WorksheetFunction.RoundUp((k - 1) / 2, 0)))這行程式碼
為何Range前方又多了一個「.」用意為何?

另外請教GBKEE大:
因為我的表格是預設表格(列高必須是固定的)所以才會使用下列程式碼
        For i = 1 To ((countPhoto + 1) \ 2 - 1)
            Rows("1:49").Copy                                                  '複製表格
            ActiveSheet.Paste Cells(j, 1)
            j = j + 49
        Next i
會使用這方式是因為全列複製才能保持列高 如果以range範圍來複製表格範圍 列高會不一致
但此種方法的缺點就是 在我表格右手邊設計的按鈕也會一併複製 也就是複製幾次表格 就出現幾個按鈕
能否解決複製表格同時又可保持列高 而且巨集按鈕又不會影響到?
HELLO !!

TOP

本帖最後由 GBKEE 於 2014-4-8 20:04 編輯

回復 11# baconbacons
  1. Option Explicit
  2. Sub Ex()
  3.     Dim i, countPhoto, Rng As Range
  4.     countPhoto = 50
  5.     Set Rng = Rows("1:49")
  6.     For i = Rng.Rows.Count To (countPhoto + 1) * Rng.Rows.Count + 1 Step Rng.Rows.Count '間隔 Rng的列數=49
  7.         Rng.Copy                        '複製表格
  8.         With ActiveSheet.Cells(i + 1, 1)
  9.         'With 陳述式 在一個單一物件或一個使用者自訂型態上執行一系列的陳述式。
  10.         '加上 . 為這單一物件的屬性或方法
  11.             .PasteSpecial Paste:=xlPasteFormats                     '這單一物件:  僅貼上格式
  12.             .Resize(Rng.Rows.Count, Rng.Columns.Count) = Rng.Value   '這單一物件:  貼上數值
  13.         End With
  14.     Next
  15. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 12# GBKEE
GBKEE 大:
嘗試過後沒問題 感謝
正在試著了解你的寫法中
HELLO !!

TOP

[發問] 新手發問有關活頁中的圖片操作

請教各位前輩 在設計自己需求的程式 遇到問題時會怎麼解決?
1.可以巨集錄製時,先錄製來看使用何方法或物件
2.無法錄製時,到F1說明以關鍵字搜尋看有無類似說明
3.GOOGLE大神搜尋法

假設現在我的問題是要「對調」活頁中現存的圖片
我先用錄製巨集方法 得知EXCEL是用下列程式碼來選取圖片
「ActiveSheet.Shapes.Range(Array("Picture 4")).Select」
所以我也比照此法 設定變數後 再進行兩個圖片的對調
但是卻失敗了
由於先前所學知道插入圖片是ActiveSheet.Pictures.Insert
再來到說明以Pictures為關鍵字去搜尋 可是也找不到
最後的GOOGLE大神 也因為不知道該怎麼下關鍵字 找不到符合需求的
有沒有前輩願意分享經驗
HELLO !!

回復 1# baconbacons

請附檔看看
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

相片冊製作 v1.0.rar (61.14 KB) 回復 2# GBKEE
預設情形說明:
由於表格是複製編號1及編號2的表格而來 所以每次新增相片會多出兩個空白相片儲存格
如果我只是要新增1張相片的話 就必須將下方的相片往上遞補至新的表格
就效率上來說 似乎是下列方法2比較有效率
1.假設新增插入編號11的相片,刪除原先編號11之後的相片及表格,重新複製所需表格,新增編號11相片再讀入資料夾的相片自編號12開始貼
2.假設新增插入編號11的相片,複製新表格(2空白相片儲存格)插入,新增編號11相片再將活頁中的相片依序往上遞補1張

以上說明若有說明不清楚的 煩請再指教
HELLO !!

TOP

回復 3# baconbacons
歹勢 請針對工作表3(相片冊)的程式碼為主  其他還只是測試階段用
HELLO !!

TOP

本帖最後由 GBKEE 於 2014-4-10 16:09 編輯

回復 16# baconbacons

由於表格是複製編號1及編號2的表格而來 所以每次新增相片會多出兩個空白相片儲存格
Q:為何一次要,複製編號1及編號2的表格

1.假設新增插入編號11的相片,刪除原先編號11之後的相片及表格,重新複製所需表格,新增編號11相片再讀入資料夾的相片自編號12開始貼
Q: 新增插入編號11的相片,為何是:刪除原先編號11之後的相片及表格,而不包含原先編號11相片及表格,
    為何是:自編號12開始貼,不是自編號11開始貼

2.假設新增插入編號11的相片,複製新表格(2空白相片儲存格)插入,新增編號11相片再將活頁中的相片依序往上遞補1張
Q:為何要: 複製新表格(2空白相片儲存格)插入,多一空白位置爾後將相片依序往上遞補1張(多此一舉)

是這樣嗎?
  1. Sub Ex()
  2.     Dim myFSO As New FileSystemObject
  3.     Dim Rng As Range, i As Integer
  4.     Dim myPath As String
  5.     Dim E As Variant
  6.     myPath = ThisWorkbook.Path & "\原始相片"            '相片的資料夾
  7.     If myFSO.GetFolder(myPath).Files.Count > 0 Then     '有檔案
  8.         With ActiveSheet                                '指定工作表
  9.             .Pictures.Delete                            '刪除所有相片
  10.             Set Rng = .[A3:O25]                         '相片表格
  11.             .Rows("26:" & .UsedRange.Rows.Count).Clear   '清除 第一張相片以後的表格
  12.             For Each E In myFSO.GetFolder(myPath).Files '檔案物件集合
  13.                 If UCase(E) Like "*.JPG" Then           'E (檔案物件)傳回完整路徑名稱 , Like 比對是否有".JPG"的字元
  14.                     With Rng.Offset((i) * Rng.Rows.Count + (i * 1)) '相片的表格位置
  15.                         If i > 0 Then                    '第2張後
  16.                             Rng.Copy
  17.                             .PasteSpecial xlPasteFormats
  18.                             .Value = Rng.Value
  19.                             .Range("A3") = i + 1         '相片的表格位置的Range("A3")
  20.                         End If
  21.                         .Range("C22") = E
  22.                         .Range("B3").Select              '相片的表格位置的Range("B3")
  23.                     End With
  24.                     With .Pictures.Insert(E)                                      '插入P檔案物件(相片)
  25.                         .ShapeRange.LockAspectRatio = msoFalse
  26.                         .Top = Selection(1, 1).Top
  27.                         .Left = Selection(1, 1).Left
  28.                         .Width = Selection.Width
  29.                         .Height = Selection.Height
  30.                     End With
  31.                     i = i + 1
  32.                 End If
  33.             Next
  34.         End With
  35.     End If
  36.     MsgBox myPath & " 資料夾中" & IIf(i > 0, "共" & i & "張", "沒有") & "相片"
  37. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 18# GBKEE
GBKEE大:歹勢讓您久等了,回應如下

由於表格是複製編號1及編號2的表格而來 所以每次新增相片會多出兩個空白相片儲存格
Q:為何一次要,複製編號1及編號2的表格
A:因為兩個空白表格可以剛好完整一頁,且每頁最上方表格為標題列,如果只插入單一空白表格,接下來的表格都會跑掉
1.假設新增插入編號11的相片,刪除原先編號11之後的相片及表格,重新複製所需表格,新增編號11相片再讀入資料夾的相片自編號12開始貼
Q: 新增插入編號11的相片,為何是:刪除原先編號11之後的相片及表格,而不包含原先編號11相片及表格,為何是:自編號12開始貼,不是自編號11開始貼
A:新增插入編號11意即保留編號1~10的相片,將原先編號11之後的相片及表格順移一格,但由於上述兩空白填滿一頁的限制,所以必須新增新頁(兩空白表格),欲新增的編號11相俧置於編號11,原先的編號11就下移至編號12,接下來的相片就依序接上,這樣不知道能否理解…
2.假設新增插入編號11的相片,複製新表格(2空白相片儲存格)插入,新增編號11相片再將活頁中的相片依序往上遞補1張
Q:為何要: 複製新表格(2空白相片儲存格)插入,多一空白位置爾後將相片依序往上遞補1張(多此一舉)
A:如上述答案

所建議程式碼待我研究一下再請教
HELLO !!

TOP

        靜思自在 : 犯錯出懺悔心,才能清淨無煩惱。
返回列表 上一主題