返回列表 上一主題 發帖

[發問] 請問各位前輩關於多個excel設定欄位問題

[發問] 請問各位前輩關於多個excel設定欄位問題

不好意思、請問前輩們一下~
小弟此vba功能為針對同一個資料夾下的所有excel中的(Sheet1)的第9~14欄位進行設定欄位大小為(13.5),
但因句集中"欄位轉換"使用open方式進行修改、故如果小弟的excel有超過50筆以上則需花上不少時間,
能否請問前輩、小弟的內容是否有其它方式可進行修改呢?


註:Sheet1為固定處理分頁

轉換test檔.rar (19.19 KB)
感謝~

程式碼:(有點長..)

Sub 標案名稱轉換()
   
    Sheets("轉換頁").[a2:a65535].ClearContents
    Worksheets("轉換頁").Cells(1, 2) = ActiveWorkbook.Path
    fs = Dir(Worksheets("轉換頁").Cells(1, 2) & "\*.*")
Do Until fs = ""
r = r + 1
Worksheets("轉換頁").Cells(r + 1, 1) = fs
fs = Dir
Loop

End Sub

Sub 標案名稱轉換1() '刪除其它非excel檔案

Dim LastRow As Long, r As Long

    '判斷最後使用的列,將這個列數指派給 LastRow 變數

    LastRow = Worksheets("轉換頁").UsedRange.Rows.Count

    'LastRow 的計算方式:判斷使用範圍中的列數,加上使用範圍中第一個列數,再減去 1

    LastRow = LastRow + Worksheets("轉換頁").UsedRange.Row - 1

    Application.ScreenUpdating = False

    '迴圈使用 Step -1 會由下而上進行處理,當刪除列之後會將所有下方的列往上移動。
   

   
    '此區塊為刪除"非xl*檔"
    For r = LastRow To 2 Step -1

       If Worksheets("轉換頁").Cells(r, 1) Like "*xl*" Then
       Else
       Worksheets("轉換頁").Rows(r).Delete
       End If
    Next r
   
  '此區塊為刪除"轉換test檔 "字列
    For r = LastRow To 2 Step -1

       If Worksheets("轉換頁").Cells(r, 1) Like "轉換test檔*" Then Worksheets("轉換頁").Rows(r).Delete
    Next r


End Sub
Sub 欄位轉換()

    Dim wb(1 To 2) As Workbook
      Application.DisplayAlerts = False '是用來略過刪除時提醒的對話方塊, 若還要確認, 則可不用此指令
      
    Set wb(1) = ThisWorkbook
    For i = 2 To wb(1).Worksheets("轉換頁").[a65536].End(3).Row
    Set wb(2) = Workbooks.Open(Worksheets("轉換頁").Cells(1, 2) & "\" & Worksheets("轉換頁").Cells(i, 1))
   
   
   
     wb(2).Worksheets("Sheet1").Rows("9:14").Select
        Selection.RowHeight = 13.5
            
        
   

    wb(2).Close True

Next

Application.DisplayAlerts = True

    Set wb(1) = Nothing
    Set wb(2) = Nothing

End Sub

Sub 資料總呼叫()
    Call 標案名稱轉換
    Call 標案名稱轉換1
    Call 欄位轉換

End Sub

回復 2# luhpro

感謝luhpro前輩細心指導、這個方式執行起來跟原本的執行速度相差好幾倍..尤其是在多檔案情況下時間差距更明顯,
感謝前輩的幫忙指導~

TOP

        靜思自在 : 世上有兩件事不能等:一、孝順 二、行善。
返回列表 上一主題