返回列表 上一主題 發帖

[發問] 請問VBA可以做到兩檔案比對後再產生另一檔案的比對結果嗎?

本帖最後由 stillfish00 於 2013-8-15 17:49 編輯

回復 46# happycoccolin
若有的檔案是B5欄開始有的是B6欄開始 可以怎麼判斷?

不知道,
而且你的A_0814.xlsx檔案挺怪的!
[A4]儲存格明明沒文字(也沒有不可見字元),卻又不是空白儲存格(尋找>特殊目標>空白,不會找到)
用Ctrl+上下也都會跳過。

第一次遇到這種情形~

若是新表格所有欄位都要有TITLE 可以都填上嗎~

改一下
  1.   arNewHeader = Array("Q", "W", "E", "R", "T", "Y", "U", "I") '自己填上全部新標題名稱
複製代碼
還有這邊
  1.     With .Sheets(1)
  2.       For i = LBound(cIndexOld) To UBound(cIndexOld)
  3.         .Cells(1, cIndexNew(i)).Resize(r).Value = Application.WorksheetFunction.Index(ar, 0, cIndexOld(i))
  4.       Next
  5.       .[A1].Resize(, UBound(arNewHeader) + 1).Value = arNewHeader
  6.     End With
複製代碼

TOP

回復 49# happycoccolin
  1. Sub TEST()
  2.   Dim ar, r As Long, i As Long
  3.   Dim cIndexOld, cIndexNew, arNewHeader
  4.   Dim f, findTitle
  5.   
  6.   cIndexOld = Array(2, 3, 4, 5, 7, 8)   'A檔案中要搬動的欄
  7.   cIndexNew = Array(2, 4, 21, 24, 43, 44)   '搬到B檔位置
  8.   arNewHeader = Array("Q", "W", "E", "R", "T", "Y", "U", "I") '自己填全部B檔標題名稱
  9.   
  10.   f = Application.GetOpenFilename(FileFilter:="Excel 活頁簿 (*.xlsx),*.xlsx", Title:="選擇來源檔案")
  11.   If Not TypeName(f) = "String" Then Exit Sub '取消則結束
  12.   
  13.   Application.ScreenUpdating = False
  14.   With Workbooks.Open(f)
  15.     With .Sheets(1)
  16.       Set findTitle = .Cells.Find("Item", , xlValues, xlWhole, xlByRows, xlNext)  '找標題 Item
  17.       If findTitle Is Nothing Then MsgBox "找不到標題": Exit Sub
  18.       
  19.       With findTitle.CurrentRegion
  20.         ar = .Parent.Range(findTitle, .Cells(.Rows.Count, .Columns.Count)).Value
  21.       End With
  22.     End With
  23.     .Close False
  24.   End With
  25.   Application.ScreenUpdating = True
  26.   
  27.   r = UBound(ar)
  28.   With Workbooks.Add
  29.     With .Sheets(1)
  30.       For i = LBound(cIndexOld) To UBound(cIndexOld)
  31.         .Cells(1, cIndexNew(i)).Resize(r).Value = Application.WorksheetFunction.Index(ar, 0, cIndexOld(i))
  32.       Next
  33.       .[A1].Resize(, UBound(arNewHeader) + 1).Value = arNewHeader
  34.     End With
  35.    
  36.     If MsgBox("是否要儲存檔案?", vbYesNo) = vbYes Then
  37.       f = Application.GetSaveAsFilename(FileFilter:="Excel 活頁簿 (*.xlsx),*.xlsx", Title:="另存為新檔")
  38.       If Not TypeName(f) = "String" Then Exit Sub '取消則結束
  39.       .SaveAs f, FileFormat:=xlWorkbookDefault
  40.     End If
  41.   End With
  42. End Sub
複製代碼

TOP

回復 52# happycoccolin
要給儲存格範圍,如
With Workbooks.Add
       With .Sheets(1)
          .[A1:H1].Font.Name = "Tahoma"  '字體名稱
          .[A1:H1].Font.Size = 10 '字體大小
       End With
End With

TOP

回復 54# happycoccolin
.Cells 就代表工作表中的所有儲存格了
  1. With Workbooks.Add
  2.        With .Sheets(1).Cells
  3.           .Font.Name = "Tahoma"  '字體名稱
  4.           .Font.Size = 10 '字體大小
  5.        End With
  6. End With
複製代碼

TOP

        靜思自在 : 我們要做好社會的環保,也要做好內心的環保。
返回列表 上一主題