- 帖子
- 15
- 主題
- 2
- 精華
- 0
- 積分
- 23
- 點名
- 0
- 作業系統
- windows 7
- 軟體版本
- Office 2010
- 閱讀權限
- 10
- 性別
- 男
- 來自
- 台中
- 註冊時間
- 2016-9-22
- 最後登錄
- 2021-3-26

|
回復 11# GBKEE
首先感謝G大花那麼多時間,還這麼快回應,超感動的!
執行後會有"變數未定義"錯誤,程式顯示在 For i = 0 To .HPageBreaks.Count ,當中的i 反白
小弟用自已原本的VBA碼,土炮解決問題如下:
因能力不足從輸出頁(來源頁)改複製範圍,就換從輸入頁(匯出頁) 下手
原本判斷[A16]向下到最後一列再offset一列, 改由從[F16]開始判斷,向下到最後一列再offset到A欄,
因F欄在輸出頁若空白,原本就無公式(無資料),所以到了匯出頁也是無資料,用以上方法便可以有複製資料連續性
很佩服非使用者的G大,能寫出符合實際用途又如此簡約有效率的程式碼!
小弟功力尚淺寫出的程式很粗糙,對G大程式碼暫時只能望而興嘆,慢慢研究啊- Sub 匯出地磅資料到新工作表()
-
- shn = ActiveSheet.Name
-
- '防呆1
- For e = 2 To Sheets.Count
- If shn & "匯出" = Sheets(e).Name Then
- Application.DisplayAlerts = False
- Sheets(shn & "匯出").Delete
- Application.DisplayAlerts = True
- Exit For
- End If
- Next
-
- Application.ScreenUpdating = False
-
- Worksheets.Add after:=Worksheets(Sheets.Count)
- Worksheets(Sheets.Count).Name = shn & "匯出"
- '抓取欄位 新增
- Worksheets(shn).Select
- Range("A1:AM15").Select
- Range("A1:AM15").Copy
- Worksheets(Sheets.Count).Select
- Range("A1").Select
- Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
- SkipBlanks:=False, Transpose:=False
- ActiveSheet.Paste
- '抓取每頁資料內容(使用迴圈)
- Worksheets(shn).Select
- Dim i As Integer, j As Integer
- j = Range("AT51").Value
-
- For i = 16 To 16 + j * 52 Step 52 '應要J-1, 但若只有一頁會有錯,多匯出一頁沒差
- Worksheets(shn).Select
- Range("a" & i & ":am" & i).Select
- Range(Selection, Selection.End(xlToRight)).Select
- Range(Selection, Selection.End(xlDown)).Select
- Selection.Copy
- Worksheets(Sheets.Count).Select
- If Worksheets(Sheets.Count).Range("F16") = "" Then
- Range("A16").Select
- ActiveSheet.Paste '先貼一次含公式
- Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, _
- SkipBlanks:=False, Transpose:=False '再貼一次把公式拿掉
- Range("F16").End(xlDown).Offset(1, -5).Clear '刪除A欄資料,以利貼上資料連續
- Else
- Worksheets(Sheets.Count).Range("F16").End(xlDown).Offset(1, -5).Select
- ActiveSheet.Paste '先貼一次含公式
- Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
- xlNone, SkipBlanks:=False, Transpose:=False '再貼一次把日期變為文字
-
- End If
- Next
- end sub
複製代碼 |
|