彰化一整天的論壇

 找回密碼
 立即註冊
查看: 154|回復: 4

判斷檔案大小加以分類

[複製鏈接]
發表於 2019-4-12 13:47:10 | 顯示全部樓層 |閱讀模式
本帖最後由 louiswei1986 於 2019-4-12 13:56 編輯

小弟有一VBA程式用於將指定檔案複製歸檔,
現想判斷檔案大小,如超過500K即歸入NEWF,
如未超過則歸入NEWX,試問如何執行。

我有查到Filelen的用法,
但很不幸我連前面定義檔案都有困難...

再麻煩大大解惑,謝謝。

Sub M_Pic()

Dim MPF, MIF, NEWF, fs, PicFile As Object
Dim Xrow As Integer

'關閉警告&畫面更新
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    ActiveWorkbook.CheckCompatibility = False

MPF = "C:\Users\user\Desktop\MPUSH\"
MIF = "C:\Users\user\Desktop\MITEM\"
Xrow = Worksheets("Turn").Cells(Rows.Count, 1).End(xlUp).row
NEWF = "C:\Users\user\Desktop\" & Format(Date, "YYYY") - 1911 & Format(Date, "MMDD") & "M\"
NEWX = "C:\Users\user\Desktop\" & Format(Date, "YYYY") - 1911 & Format(Date, "MMDD") & "X\"
Set fs = CreateObject("Scripting.FileSystemObject")

    MkDir (NEWF)
    MkDir (NEWX)


For i = 1 To Xrow - 1

    fs.CopyFile MPF & 10000 + i & "_0_\*.jpg", NEWF
    fs.CopyFile MIF & 10000 + i & "_0_\*.jpg", NEWF

    Next i

    Application.ScreenUpdating = True
    msgbox "完成了" & Xrow - 1 & "個資料夾!"

End Sub


回復

使用道具 舉報

發表於 2019-4-13 11:49:06 | 顯示全部樓層
您可以使用FileLen函數
  1. Dim fLen As Long
  2. fLen = FileLen( "C:\Users\John\Documents\data.txt" )
  3. ' fLen is now equal to 18292.
複製代碼

再搭配if去判斷.
資料來源:https://www.excelfunctions.net/vba-filelen-function.html
回復 支持 反對

使用道具 舉報

 樓主| 發表於 2019-4-15 09:39:07 | 顯示全部樓層
imingho 發表於 2019-4-13 11:49
您可以使用FileLen函數

再搭配if去判斷.

請問我用for i 的方式是不是不能直接套用filelen?

For i = 1 To Xrow - 1

    MPFlen = FileLen(MPF & 10000 + i & "_0_\*.jpg")
    MIFlen = FileLen(MIF & 10000 + i & "_0_\*.jpg")
   
    If MPFlen > 490000 Then
        fs.CopyFile MPF & 10000 + i & "_0_\*.jpg", NEWF
        Else
        fs.CopyFile MPF & 10000 + i & "_0_\*.jpg", NEWX
    End If
   
    If MIFlen < 210000 Then
        fs.CopyFile MIF & 10000 + i & "_0_\*.jpg", NEWX
        Else
        fs.CopyFile MPF & 10000 + i & "_0_\*.jpg", NEWF
    End If
   
    Next i

執行階段錯誤'52';
不正確的檔案名稱或數目
回復 支持 反對

使用道具 舉報

發表於 2019-4-15 09:42:28 | 顯示全部樓層
louiswei1986 發表於 2019-4-15 09:39
請問我用for i 的方式是不是不能直接套用filelen?

For i = 1 To Xrow - 1

不能用萬用字元*號,只可以單一檔名稱.
回復 支持 反對

使用道具 舉報

 樓主| 發表於 2019-4-17 10:29:25 | 顯示全部樓層
imingho 發表於 2019-4-15 09:42
不能用萬用字元*號,只可以單一檔名稱.

已解決,謝謝!
回復 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

 ㄚ母滴雞湯
 員林香純滴雞精

Archiver|手機版|小黑屋|彰化一整天的論壇(Excel,Office)  |网站地图

GMT+8, 2019-7-22 06:14 , Processed in 0.115048 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表