久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

二,、VB語句操作目錄與文件

 iamyounger 2018-09-16

對文件/文件夾的操作需要注意文件是否存在或者打開等異常情況,,不然會報錯,。

(一)重命名/移動

語法:Name 原路徑 As 新路徑

可實現(xiàn)對文件(夾)的重命名,、移動操作,,“新路徑”中目錄部分與“原路徑”目錄部分相同則是重命名,,不同則是移動,。

原路徑可能已有數(shù)據(jù),,也可能需要提取,,對于后者,,使用Dir函數(shù)獲取路徑數(shù)據(jù)再進(jìn)行操作即可,對于前者,,則需要對路徑是否存在進(jìn)行判斷,。該操作對文件與文件夾均適用。

1.重命名文件夾(已有路徑數(shù)據(jù))

案例如下圖,,判斷C列數(shù)據(jù)后4位對應(yīng)的文件夾是否存在,,如果存在將其重命名為后4+“權(quán)利人姓名”,如果不存在則將C列對應(yīng)單元格標(biāo)記,。

因為代碼所在工作簿(VBA demo.xls)在主路徑下,,所以待操作子文件夾的路徑為:

ThisWorkbook.Path + "\" & Right(Cells(rowIndex, 3).Value, 4)

實現(xiàn)代碼如下:

 

Sub FolderRename()

Dim mainPath As String

Dim rowIndex, maxRowIndex, counter As Integer

'取工作簿路徑

  mainPath = ThisWorkbook.Path

  maxRowIndex = Range("C65536").End(xlUp).Row

  counter = 0

  Columns("C:C").Interior.Pattern = xlNone

  For rowIndex = 2 To maxRowIndex

  '判斷工作簿路徑+C列(右4)數(shù)據(jù)組成的路徑是否存在

    If Dir(mainPath + "\" & Right(Cells(rowIndex, 3).Value, 4), vbDirectory) <> "" Then

    '存在,就把 工作簿路徑+C列(右4)數(shù)據(jù)組成的路徑所表示的文件夾重命名為 工作簿路徑+C列(右4)數(shù)據(jù)+D列數(shù)據(jù)組成的路徑

        Name mainPath + "\" & Right(Cells(rowIndex, 3).Value, 4) As mainPath + _

        "\" & Right(Cells(rowIndex, 3).Value, 4) & Cells(rowIndex, 4).Value

        counter = counter + 1

    Else

    '路徑不存在就給對應(yīng)單元格加背景色標(biāo)記

        Cells(rowIndex, 3).Interior.Color = 15773696

    End If

  Next rowIndex

  MsgBox "完成改名,!共改名" & counter & "個文件夾,。" & Chr(10) & "找不到對應(yīng)文件夾的C列數(shù)據(jù)已標(biāo)記為藍(lán)色"

End Sub

 

2.移動文件(沒有路徑數(shù)據(jù))

案例為將下圖主路徑下的文件移動到1601文件夾里。首先,,需要獲取文件的路徑(Dir函數(shù)1.1“遍歷文件夾下的文件”)到Excel A列,,在B列組合新文件路徑,然后Name  A列原路徑 As  B列新路徑即可,。

※組合新文件路徑可以使用替換,、工作表函數(shù)、VBA代碼等方式實現(xiàn),;加入容錯語句 On Error Resume Next,,可以在發(fā)生錯誤時自動跳過。

 

上圖A列是文件路徑,B列是組合后的路徑,;下圖是執(zhí)行后的結(jié)果,。

為什么VBA demo.xls 沒有被移動?代碼在此工作簿,,它正處于打開占用狀態(tài),。

為什么代碼沒有報錯?加入了容錯語句 On Error Resume Next

 

Sub GetFilePath()

    Columns(1).Clear

    Dim fileName As String

    Dim rowIndex As Integer

    fileName = Dir("C:\Users\Administrator\Desktop\vba\demo\")

    rowIndex = 1

    Do While fileName <> ""

        Cells(rowIndex, 1).Value = "C:\Users\Administrator\Desktop\vba\demo\" & fileName

        rowIndex = rowIndex + 1

        fileName = Dir

    Loop

End Sub

 

Sub Move()

    On Error Resume Next

    Dim maxRowIndex, lastRowIndex, index As Integer

    maxRowIndex = Rows.Count

    lastRowIndex = Cells(maxRowIndex, 1).End(xlUp).Row

    For index = 1 To lastRowIndex

        Name Cells(index, 1).Value As Cells(index, 2).Value

    Next index

End Sub

 

(二)文件復(fù)制/重命名

語法:FileCopy “原路徑”, “新路徑”

 

Sub FileCopyDemo()

   FileCopy "F:\vstorredist.exe", "F:\C#\vstorredist.exe"

End Sub

 

該語句還可以實現(xiàn)在復(fù)制過程中給文件改名,,相比較Name 原路徑 As 新路徑來說,,使用FileCopy語句進(jìn)行重命名是“安全”的。

 

Sub FileCopyDemo()

   FileCopy "F:\vstorredist.exe", "F:\C#\vstorredist1.exe"

End Sub

 

關(guān)于批量處理的樣本代碼,,即:

在工作表中取路徑,、以及是否需要判斷路徑存在、如何判斷在“(一)重命名/移動”中已經(jīng)說明,,下不復(fù)述,。

(三)刪除文件

語法:Kill “文件路徑”

1.遍歷刪除特定文件

既然是刪除特定文件,那必然是有一個判斷的過程,,常用InStr函數(shù)判斷字符串是否存在,。本例是要刪除下圖擴展名為“.txt”的文件。路徑均存在,,故代碼中不做存在判斷,。

 

Sub KillTxt()

    Dim maxRow, lastRow, index As Integer

    maxRow = Rows.Count '取工作表行數(shù)

    'B列最大行索引位置向前找到最后一個非空單元格,取其行號

    lastRow = Cells(maxRow, 2).End(xlUp).Row

    For index = 2 To lastRow Step 1

    '如果路徑中存在“txt”,,即索引大于0……

        If InStr(Cells(index, 2).Value, "txt") > 0 Then

            Kill Cells(index, 2).Value

        End If

    Next index

End Sub

 

 

 

 




2.通配符匹配刪除

你一定遇到過文件復(fù)制重復(fù)出現(xiàn)下圖中的情況,,這種情況適合用通配符去匹配刪除。

還記得通配符嗎,?在“一,、獲取文件夾、文件路徑——1.2使用通配符匹配文件”,。




Sub KillAllMatchFile()

      Kill "C:\Users\Administrator\Desktop\vba\demo\1601\* (?).xlsx"

End Sub

 

(四)創(chuàng)建/刪除文件夾

1.創(chuàng)建文件夾

語法:Mkdir path

必要的 path 參數(shù)是用來指定所要創(chuàng)建的目錄或文件夾的字符串表達(dá)式,。path 可以包含驅(qū)動器。如果沒有指定驅(qū)動器,,則MkDir 會在當(dāng)前驅(qū)動器上創(chuàng)建新的目錄或文件夾,。

在案例代碼中使用自定義函數(shù)GetMainDirectory獲取了主文件夾路徑,然后與表格A列的數(shù)據(jù)組成新文件夾路徑以創(chuàng)建文件夾,。

※自定義GetMainDirectory使用Application.FileDialog屬性打開“文件瀏覽對話框”拾取路徑,,可參考一、獲取文件夾,、文件路徑——(二)Application.FileDialog屬性(番外篇),。

 

Sub CreateFolder()

    Dim maxRow, lastRow, index As Integer

    Dim MainDirectory As String

    MainDirectory = GetMainDirectory(msoFileDialogFolderPicker) & "\"

    maxRow = Rows.Count

    lastRow = Cells(maxRow, 1).End(xlUp).Row

    For index = 1 To lastRow Step 1

       MkDir MainDirectory & Cells(index, 1).Value

    Next index

End Sub

 

Function GetMainDirectory(ByVal DialogType As MsoFileDialogType) As String

  With Application.FileDialog(DialogType)

    If .Show = True Then

        GetMainDirectory = .SelectedItems(1)

    End If

  End With

End Function

 

2.刪除文件夾

語法:Rmdir path

必要的 path 參數(shù)是一個字符串表達(dá)式,,用來指定要刪除的目錄或文件夾。path 可以包含驅(qū)動器,。如果沒有指定驅(qū)動器,,則 RmDir 會在當(dāng)前驅(qū)動器上刪除目錄或文件夾。如果想要使用 RmDir 來刪除一個含有文件的目錄或文件夾,,則會發(fā)生錯誤,。在試圖刪除目錄或文件夾之前,先使用 Kill 語句來刪除所有文件,,即只能刪除空文件夾,。

該函數(shù)實際用到的地方不多,不建議使用,。


    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多