精华内容
下载资源
问答
  • 1.EXCEL VBA遍布文件夹的操作 关于VBA遍历文件夹主要用的是提供的Application.FileDialo函数来由个人进行自由选择,通过获取选择的文件夹地址之后,通过Dir函数来匹配选取文件夹下的相应的文档。相应的VBA程序代码...

    1.EXCEL VBA遍布文件夹的操作

    关于VBA遍历文件夹主要用的是提供的Application.FileDialo函数来由个人进行自由选择,通过获取选择的文件夹地址之后,通过Dir函数来匹配选取文件夹下的相应的文档。相应的VBA程序代码如下:

       Dim sel_Path As String   '//定义一个选择的文件夹
       Dim MyFile As String    '//文件夹中符合条件的文件
      
        '//选取相应的文件夹
        With Application.FileDialog(msoFileDialogFolderPicker)
            
            .Title = "请选择文件夹"
            
            If .Show = -1 Then
               sel_Path = .SelectedItems(1)       '//所选择的文件夹路径
            Else
                MsgBox "已取消操作!"
                Exit Sub
            End If
            
       End With
       
      Dim sel_PathFullName As String                            '定义一个文件的全路径名称
        
       MyFile = Dir(sel_Path & "\" & "*.csv")

    2.关于单元格地址的获取

    在写VBA的过程中,对于单元格地址的获取至关重要,它直接决定了能否完成正确的完成相应的操作。获取单元格地址主要有以下几种方法:

    2.1          以下几种获取结果如注释所示

       F_Max_Range = ActiveCell.Address()           '获得单元格的地址,形式为$A$1
       F_Max_Range = ActiveCell.Address(0, 0)       '获得单元格的地址,形式为A1
       F_Max_Range = ActiveCell.Address(0, 1)       '获得单元格的地址,形式为$A1
       F_Max_Range = ActiveCell.Address(1, 0)       '获得单元格的地址,形式为A$1
       F_Max_Range = ActiveCell.Address(1, 1)       '获得单元格的地址,形式为$A$1

             2.2        以变量的形式获取单元格地址

    以获取最后一列的最后一个单元格的地址为例:首先需要获取获取最后一列的地址,再得到总的行数,将以上两种结果进行拼接,即得出最后一列的最后一个单元格的地址。相应的关键代码如下:

    Num_Col = Wb.Worksheets(2).UsedRange.Columns.count          '总的列数
    Row_Col = Wb.Worksheets(2).UsedRange.Rows.count             '总的行数
    
    Add_Max_Col = Split(Cells(1, Num_Col).Address, "$")(1)      '获得最后一列的地址
    
    Range_Add_Max_Col = Add_Max_Col & "1"                       '最后一列的第一个单元格的地址
    Range_Add_Max_Row = Add_Max_Col & Row_Col                   '最后一列的最后一个单元格的地址

     2.3           关于单元格的偏移

    单元格偏移主要用到的函数是Offset,如偏移1个和2个单元格的关键代码:

      F_Max_Range = ActiveCell.Offset(0, 1).Address(0, 0)
      S_Max_Range = ActiveCell.Offset(0, 2).Address(0, 0)

            2.4            关于选择多个单元格

    选择多个单元格要注意单元格之间的拼接格式,要注意中间的“:”,如对以上F_Max_Range 到 S_Max_Range单元格的选择的关键代码:

    Wb.Worksheets(2).Range(F_Max_Range & ":" & S_Max_Range).Select

    3.关于复制和粘贴

    复制和粘贴极大的简化了我们的工作,VBA的复制主要通过copy函数来实现,粘贴主要通过Paste来实现。要注意复制和粘贴之前 一定要选中所要复制的列。即select。关键代码:

    '提取出相应的列到sheet2表中
    
    Dim sel_col As String          '定义需要操作的列
    sel_col = Workbooks("遍历文件夹中的csv文件(处理带逗号的VBA程序)").Worksheets(1).Range("B2").Value
    
    sel_col = Mid(sel_col, InStr(sel_col, ":") + 1)
    
    Wb.Worksheets(1).Range(sel_col).Select
    Selection.Copy
    Wb.Sheets.Add After:=ActiveSheet
    
    Wb.Worksheets(2).Select
    ActiveSheet.Paste

    4 完全代码:

    本完全代码实现了遍历相应文件夹下的所有EXCEL(CSV)文件,并复制相应的列到另一个sheet中。另外还有分列、绘图操作。关于EXCEL原文件暂不上传,读者可以根据需要进行相应的简单的修改即可。

    '//遍历文件夹部分,并选中相应的csv文件
        
        Dim sel_Path As String   '//定义一个选择的文件夹
        Dim MyFile As String    '//文件夹中符合条件的文件
        Dim count As Integer   '//一共操作文件的数目
        
        '//选取相应的文件夹
        With Application.FileDialog(msoFileDialogFolderPicker)
            
            .Title = "请选择文件夹"
            
            If .Show = -1 Then
               sel_Path = .SelectedItems(1)       '//所选择的文件夹路径
            Else
                MsgBox "已取消操作!"
                Exit Sub
            End If
            
       End With
          
       '//创建一个新的文件夹用来保存数据处理的结果
          On Error Resume Next
       Dim Save_Path_Name As String
       Save_Path_Name = sel_Path & "\" & "文件处理结果"
       VBA.MkDir (sel_Path & "\" & "文件处理结果")
      
      Dim sel_PathFullName As String                            '定义一个文件的全路径名称
      Dim Wb As Workbook                                        '定义一个要操作的工作薄
        
        MyFile = Dir(sel_Path & "\" & "*.csv")
        
        '读入文件夹中的第一个.csv文件
    
       Do While MyFile <> ""
        
        count = count + 1        '记录文件的个数
        
        sel_PathFullName = sel_Path & "\" & MyFile             '相应文件夹下的符合条件的csv文件
            
       'sel_PathFullName = Application.GetOpenFilename            '自定义文件的路径
        Set Wb = Workbooks.Open(sel_PathFullName)                 '打开所选择的文件
       'ActiveWindow.Visible = False                               静默打开并不能读取文件
    
    '提取出相应的列到sheet2表中
    
    Dim sel_col As String          '定义需要操作的列
    sel_col = Workbooks("遍历文件夹中的csv文件(处理带逗号的VBA程序)").Worksheets(1).Range("B2").Value
    
    sel_col = Mid(sel_col, InStr(sel_col, ":") + 1)
    
    Wb.Worksheets(1).Range(sel_col).Select
    Selection.Copy
    Wb.Sheets.Add After:=ActiveSheet
    
    Wb.Worksheets(2).Select
    ActiveSheet.Paste
    
    Dim F_Numcol As Long                '第一次复制后数据的列的数目
    Dim F_Add_Max_Col As String         '第一次复制后最后一列的地址
    
    F_Numcol = Wb.Worksheets(2).UsedRange.Columns.count
    '选中最后一列
    Wb.Worksheets(2).Columns(F_Numcol).Select
    F_Add_Max_Col = Split(Cells(1, F_Numcol).Address, "$")(1) & "1"       '获得最后一列的地址
    
    '对列进行分列处理
            Selection.TextToColumns Destination:=Range(F_Add_Max_Col), DataType:=xlDelimited, _
            TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
            Semicolon:=False, Comma:=True, Space:=False, Other:=True, OtherChar:= _
            "[", TrailingMinusNumbers:=True
    
    Dim Num_Col As Long               '找出表中的最后一列
    Dim Row_Col As Long               '找出表中的最后一行
    Dim Add_Max_Col As String         '最后一列的地址
    Dim Range_Add_Max_Col As String   '定义最后一列的第一个单元格的地址
    Dim Range_Add_Max_Row As String   '定义最后一行的第一个单元格的地址
    
    Num_Col = Wb.Worksheets(2).UsedRange.Columns.count          '总的列数
    Row_Col = Wb.Worksheets(2).UsedRange.Rows.count             '总的行数
    
    Add_Max_Col = Split(Cells(1, Num_Col).Address, "$")(1)      '获得最后一列的地址
    
    Range_Add_Max_Col = Add_Max_Col & "1"                       '最后一列的第一个单元格的地址
    Range_Add_Max_Row = Add_Max_Col & Row_Col                   '最后一列的最后一个单元格的地址
    
    '选中最后一列
    Wb.Worksheets(2).Columns(Num_Col).Select
    
    '对分列出的最后一列进行分列,从而删除"]"字符
     Selection.TextToColumns Destination:=Range(Range_Add_Max_Col), DataType:=xlDelimited, _
            TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
            Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
            :="]", TrailingMinusNumbers:=True
            
     '获得最后一个单元格右边的一个单元格并给其赋值V1
      Wb.Worksheets(2).Range(F_Add_Max_Col).Select
      
        '最后一个单元格右边的一个单元格的地址
      
       Dim F_Max_Range  As String
       Dim S_Max_Range  As String
    
    '   F_Max_Range = ActiveCell.Address()           '获得单元格的地址,形式为$A$1
    '   F_Max_Range = ActiveCell.Address(0, 0)       '获得单元格的地址,形式为A1
    '   F_Max_Range = ActiveCell.Address(0, 1)       '获得单元格的地址,形式为$A1
    '   F_Max_Range = ActiveCell.Address(1, 0)       '获得单元格的地址,形式为A$1
    '   F_Max_Range = ActiveCell.Address(1, 1)       '获得单元格的地址,形式为$A$1
    
       F_Max_Range = ActiveCell.Offset(0, 1).Address(0, 0)
       S_Max_Range = ActiveCell.Offset(0, 2).Address(0, 0)
    '   F_Max_Range = Split(ActiveCell.Offset(0, 1).Address, "$")(1) & "1"
    '   S_Max_Range = Split(ActiveCell.Offset(0, 2).Address, "$")(1) & "1"
       
      ActiveCell.Offset(0, 1).Value = "V1"
      ActiveCell.Offset(0, 2).Value = "V2"
      
       '给分列之后的数据定义一个标签
      Wb.Worksheets(2).Range(F_Max_Range & ":" & S_Max_Range).Select
        Selection.AutoFill Destination:=Wb.Worksheets(2).Range(F_Max_Range & ":" & Range_Add_Max_Col), Type:=xlFillDefault  
    
    '按时间排序
       Wb.Worksheets(2).Sort.SortFields.Clear
       Wb.Worksheets(2).Sort.SortFields.Add Key:=Range("A1"), _
            SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        With Wb.Worksheets(2).Sort
            .SetRange Range("A2:" & Range_Add_Max_Row)
            .Header = xlNo
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
        
        '添加图表:选中数据源
        Wb.Worksheets(2).Range(F_Max_Range).Select
        Wb.Worksheets(2).Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
        ActiveSheet.Shapes.AddChart2(227, xlLine).Select
        
        '更改图片的大小
        ActiveSheet.Shapes(1).ScaleWidth 1.6, msoFalse, _
            msoScaleFromBottomRight
    
        ActiveSheet.Shapes(1).ScaleHeight 1.8, msoFalse, _
            msoScaleFromBottomRight
               
      Wb.Worksheets(2).Range("A1").Select
      
    '将文件另存为Excel文件
    Dim L As Long
    Dim Exc_str As String
    L = Len(MyFile) - 3
    Exc_str = Save_Path_Name & "\" & Mid(MyFile, 1, L) + "xlsx"
    
    Dim FS As Object
    Set FS = CreateObject("Scripting.FileSystemObject")
    '//判断文件是否存在
      If FS.FileExists(Exc_str) Then
      
         Ans = MsgBox(Mid(MyFile, 1, L) + "xlsx" & "文件已经存在,是否覆盖现有文件", vbYesNo)
         
          If Ans = vbYes Then
          
           Kill Exc_str      '//删除存在的文件
               
            ActiveWorkbook.SaveAs Filename:=Exc_str, FileFormat:= _
             xlOpenXMLWorkbook, CreateBackup:=False
    
          End If
          
     Else
     
          ActiveWorkbook.SaveAs Filename:=Exc_str, FileFormat:= _
             xlOpenXMLWorkbook, CreateBackup:=False
             
     End If
    
     Wb.Close SaveChanges:=False    '关闭文件
     
      '第二次读入的时候不用写参数
            MyFile = Dir
            If MyFile = "" Then
                MsgBox "一共操作了" & count & " 个csv文件!"
                Exit Do         '当MyFile为空的时候就说明已经遍历完了,这时退出Do,否则还要运行一遍
            End If
    
        Loop

    遇见不易,欢迎留言评论,共同学习,共同进步,让工作变得更轻松。

    展开全文
  • '读取当前文件夹下txt文件的文件名,写入sheet1的第一列 Dim r As Long Dim Fso As Object Dim myfile As Object Dim mySheet As Worksheet Dim txtFolder As Object r = 1 Set txtFolder = CreateObject("S...
    Sub read_txt_file_name()
    '读取当前文件夹下txt文件的文件名,写入sheet1的第一列
    
    Dim r As Long
    Dim Fso As Object
    Dim myfile As Object
    Dim mySheet As Worksheet
    Dim txtFolder As Object
    
    
    r = 1
    
    Set txtFolder = CreateObject("Shell.Application").BrowseForFolder(0, "请选择txt所在文件夹:", 0, ThisWorkbook.Path) '选择文件夹,根目录为本工作簿所在文件夹
    
    If txtFolder Is Nothing Then Exit Sub '未选择文件夹则退出
    
    Set Fso = CreateObject("Scripting.FileSystemObject") '引用fso对象
    Set mySheet = ThisWorkbook.Sheets(1) '设置汇总表
    
    Application.ScreenUpdating = False '关闭屏幕刷新
    
    '__________汇总表初始化______________________________
    mySheet.Cells.Clear
    'mySheet.[A1:B1].Value = Array("文件名", "文本内容")
    '____________________________________________________
    'Dim arr(1 To 5000)
    
    For Each myfile In Fso.getfolder(txtFolder.Self.Path).Files
        If Fso.GetExtensionName(myfile) = "txt" Then '判断拓展名
            Set mySheet = ThisWorkbook.Sheets(1) '设置汇总表
            'mySheet.Cells.Clear
            mySheet.Name = "content"
            mySheet.Cells(r, 1).Value = myfile.Name '写入文件名
            'mySheet.Name = Mid(mySheet.Cells(1, 1).Value, 1, 2)
            'Sheets.Add After:=mySheet
            r = r + 1
        End If
    Next myfile
    
    Application.ScreenUpdating = True '恢复屏幕刷新
    
    Set mySheet = Nothing
    Set Fso = Nothing
    Set txtFolder = Nothing
    
    
    End Sub
    
    展开全文
  • Excel VBA 利用FileSystemObject处理文件

    千次阅读 2020-10-01 11:18:20
    Excel VBA 利用FileSystemObject类处理文件 FileSystemObject介绍 FileSystemObject是Windows Script Host Object Model对象模型的成员,能够对文件进行方便的基本操作,读取,写入,提取关键字等操作。若与...

    Excel VBA 利用FileSystemObject类处理文件

    FileSystemObject介绍

    FileSystemObject是Windows Script Host Object Model对象模型的成员,能够对文件进行方便的基本操作,读取,写入,提取关键字等操作,读取之后使用left(),right(),mid()函数可轻松的提取关键词并写入excel表格中,若与Microsoft VBScript Regular Expressions 5.5结合,可有更强的表现。

    使用方法有前期绑定和后期绑定:

    1. 前期绑定 ,在Visual Basic编辑器中选择工具菜单>>引用,将弹出如下对话框,选中红框中的选项,点击确定。
      在这里插入图片描述
    2. 后期绑定方法是creatobject(“Scripting.Filesystemobject”)

    FileSystemObject的应用

    下面的一段代码展示了利用FileSystemObject类获取指定目录下的文件和子目录,并对每个文件进行打开读取操作

    Sub ReadTxtFile()
        Dim fso As FileSystemObject '定义fso对象
        Dim fld As Folder '定义文件夹对象
        Dim subflds As Folders '定义文件夹对象的集合
        Dim fls As Files '定义文件对象的集合
        Dim f As File  '定义文件对象
        Dim c As Integer
        Dim dpath As String '定义要操作路径
        Dim txtstr As TextStream '文本流对象
    
        
        dpath = "C:\Users\Administrator\Desktop\shell" '指定操作目录
    '    Set fso = New FileSystemObject  '前期绑定设置fso对象
        Set fso = creatobject("Scripting.Filesystemobject")  '后期绑定
    
        'Function GetFolder(FolderPath As String) As Folder '函数原型
        Set fld = fso.GetFolder(dpath) '设置文件夹对象
        
        Set subflds = fld.SubFolders() '设置子目录对象集合
        'Debug.Print subflds.Count  '获取子目录的数量
        For Each d In subflds
        	'Debug.Print d.Name  '输出每一个子目录名
        
        Next
        'Function OpenTextFile(FileName As String, [IOMode As IOMode = ForReading], [Create As Boolean = False], [Format As Tristate = TristateFalse]) As TextStream    
        Set fls = fld.Files  '设置文件对象集合
    '    Debug.Print fls.Count '获取文件的数量
    '遍历所有文件并读取
        For Each f In fls
            Set txtstr = fso.OpenTextFile(fso.BuildPath(dpath, f.Name), ForReading, False, TristateFalse) 
            Debug.Print txtstr.ReadAll() '读取全部文本内容
    '一次读取一行文本内容
    '        Do While txtstr.AtEndOfStream <> True
                'Debug.Print txtstr.ReadLine()
    '        Loop
            txtstr.Close '关闭文本流对象
        Next f
        
    '将对象值设为nothing    
        Set f = Nothing  
        Set fld = Nothing
        Set fls = Nothing
        Set fso = Nothing
    End Sub

    下面介绍笔者在使用其复制文件时提示报错的解决办法

    CopyFile的过程原型,共有3个参数,最后一个参数为True时会覆盖目标路径下的文件
    'Sub CopyFile(Source As String, Destination As String, [OverWriteFiles As Boolean = True])
    使用方法: fso.CopyFile “原路径/filename”, “目标路径filename”, True
    其中原路径下的filename与目标路径下的filename可以不相同,也可以相同,但不能省略,否则就会报错,true表示覆盖已存在的文件

    CopyFolder 使用方法同上
    fso.CopyFolder “原路径/目录”, “目标路径目录”, True

    OpenTextFile函数说明

    object.OpenTextFile(FileName As String, [IOMode As IOMode = ForReading], [Create As Boolean = False], [Format As Tristate = TristateFalse]) As TextStream

    object:必选参数,为FileSystemObject对像
    FileName:必选参数,要打开的文件名
    IOMode :可选参数,可选择ForReading(以只读方式打开),ForWriting(以写入模式打开),ForAppending(以追加模式打开)
    Create :可选参数,默认为False;当原文件不存在,此参数为True时,会自动创建文件
    Format :可选参数,TristateFalse(以ASCII格式打开文件),TristateTrue(以unicode格式打开文件),TristateUseDefault(系统自动选择打开方式)

    BuildPath函数说明

    使用方法object.BuildPath(Path As String, Name As String) As String
    object:必选参数,为FileSystemObject对像
    Path :必选参数,路径,字符类型
    Name :必选参数,文件或文件夹名,字符类型

    若觉得不错,还请点赞,谢谢

    展开全文
  • 通常,我使用这段代码来检索VBA中文件夹的内容。 但这在共享点的情况下不起作用。 我能怎么做 ?Dim folder As folderDim f As FileDim fs As New FileSystemObjectSet folder = fs.GetFolder("//sharepoint.address...

    通常,我使用这段代码来检索VBA中文件夹的内容。 但这在共享点的情况下不起作用。 我能怎么做 ?

    Dim folder As folder

    Dim f As File

    Dim fs As New FileSystemObject

    Set folder = fs.GetFolder("//sharepoint.address/path/to/folder")

    For Each f In folder.Files

    'Do something

    Next f

    编辑(在shahkalpesh的好评后):

    如果在Windows资源管理器中输入地址,则可以访问共享点。 对共享点的访问需要进行身份验证,但是它是透明的,因为它依赖于Windows登录。

    您可以使用Windows资源管理器导航到sharepoint文件夹吗?

    是的! 它看起来像一个常规的网络文件夹。

    我发现必须在拥有服务器权限的同时使用SharePoint上的文件的唯一方法是将WebDAV文件夹映射到驱动器号。这是实现的示例。

    在VBA中添加对以下ActiveX库的引用:

    Windows脚本宿主对象模型(wshom.ocx)-用于WshNetwork

    Microsoft脚本运行时(scrrun.dll)-FileSystemObject

    创建一个新的类模块,将其命名为DriveMapper并添加以下代码:

    Option Explicit

    Private oMappedDrive As Scripting.Drive

    Private oFSO As New Scripting.FileSystemObject

    Private oNetwork As New WshNetwork

    Private Sub Class_Terminate()

    UnmapDrive

    End Sub

    Public Function MapDrive(NetworkPath As String) As Scripting.Folder

    Dim DriveLetter As String, i As Integer

    UnmapDrive

    For i = Asc("Z") To Asc("A") Step -1

    DriveLetter = Chr(i)

    If Not oFSO.DriveExists(DriveLetter) Then

    oNetwork.MapNetworkDrive DriveLetter &":", NetworkPath

    Set oMappedDrive = oFSO.GetDrive(DriveLetter)

    Set MapDrive = oMappedDrive.RootFolder

    Exit For

    End If

    Next i

    End Function

    Private Sub UnmapDrive()

    If Not oMappedDrive Is Nothing Then

    If oMappedDrive.IsReady Then

    oNetwork.RemoveNetworkDrive oMappedDrive.DriveLetter &":"

    End If

    Set oMappedDrive = Nothing

    End If

    End Sub

    然后可以在代码中实现它:

    Sub test()

    Dim dm As New DriveMapper

    Dim sharepointFolder As Scripting.Folder

    Set sharepointFolder = dm.MapDrive("http://your/sharepoint/path")

    Debug.Print sharepointFolder.Path

    End Sub

    映射网络驱动器可能很棘手;我发现如何映射共享点有助于解决此问题。

    这段代码看起来很有希望,但是Sub test()为Dim dm as New DriveMapper行抛出了"未定义用户定义类型"的编译错误。也许我缺少DLL参考? Ive添加了Microsoft脚本运行时以及Windows脚本宿主对象模型。使用Excel 2010。

    对不起这么晚@ shrout1做出的回应,也许您创建了一个模块而不是一个类?

    感谢您的出色解决方法。通过直接连接,我必须先手动"访问"共享点站点,然后才能建立活动连接,但是映射驱动器似乎可以解决该问题。一个问题:如何避免在调用DriveMapper类的代码完成之前取消对驱动器的映射?我还不太熟悉他们的工作方式。

    @Trm有人编辑了我的文章,以使用处理方法" Class_Terminate"将代码包装在一个类中,该方法取消了驱动器的映射。当类超出范围时,驱动器将被取消映射。您可以删除" Class_Terminate"方法...

    @ChrisHayes是的,我想了很多。我删除了它,然后每次打开连接时都被一堆映射驱动器卡住了。我通过将映射的驱动器号保存到内存并在模块中sub的末尾取消映射来进行了一些解决。不知道它是否是最优雅的解决方案。

    使用UNC路径而不是HTTP。此代码有效:

    Public Sub ListFiles()

    Dim folder As folder

    Dim f As File

    Dim fs As New FileSystemObject

    Dim RowCtr As Integer

    RowCtr = 1

    Set folder = fs.GetFolder("\\SharePointServer\Path\MorePath\DocumentLibrary\Folder")

    For Each f In folder.Files

    Cells(RowCtr, 1).Value = f.Name

    RowCtr = RowCtr + 1

    Next f

    End Sub

    要获取要使用的UNC路径,请进入文档库中的文件夹,然后下拉"动作"菜单,然后选择"在Windows资源管理器中打开"。复制在那里看到的路径并使用它。

    请参阅此以启用FileSystemObject。

    此外:

    myFilePath = replace(myFilePath,"/","")

    myFilePath = replace(myFilePath,"http:","")

    还要替换空间:

    myFilePath = replace(myFilePath,"","%20")

    我把这个问题弄乱了一下,找到了一个非常简单的两行解决方案,只需替换'http'和所有正斜杠,如下所示:

    myFilePath = replace(myFilePath,"/","")

    myFilePath = replace(myFilePath,"http:","")

    它可能不适用于每个人,但它对我有用

    如果您使用的是安全站点(或同时考虑到这两个站点),则可能需要添加以下行:

    myFilePath = replace(myFilePath,"https:","")

    实际上,以上内容对我来说似乎并不完整,应该阅读https :(除了以上代码)myFilePath = Replace(myFilePath, Split(myFilePath,"")(2), Split(myFilePath,"")(2) &"@SSL"),这最终会将https:my.SharePoint.com转换为\\my.SharePoint.com@SSL\(在所有替换之后)。

    恕我直言,最酷的方法是通过WebDAV(没有网络文件夹,因为通常不允许这样做)。可以通过这篇优秀文章中介绍的ActiveX Data Objects实现(代码可以直接在Excel中使用,最近使用了此概念)。

    希望这可以帮助!

    http://blog.itwarlocks.com/2009/04/28/accessing-webdav-in-microsoft-word-visual-basic/

    原始链接已失效,但至少文本内容仍在archive.org上可用:

    http://web.archive.org/web/20091008034423/http://blog.itwarlocks.com/2009/04/28/accessing-webdav-in-microsoft-word-visual-basic

    截至2013年2月7日,本文链接似乎已失效。有谁知道本文是否还在其他地方?

    @armstrhb:www.archive.org上有一个副本,但似乎只有文本可用,而没有图形。

    我花了一些时间解决这个问题-在打开文件之前,我试图验证文件是否存在。

    最终,我想出了一个使用XML和SOAP的解决方案-使用EnumerateFolder方法并提取包含文件夹内容的XML响应。

    我在这里写了博客。

    驱动器映射到共享点(也是https)

    通过映射驱动器将共享点内容迭代为文件系统对象,对我来说很有效。技巧是如何设置映射:

    d928066fce8d03ddd07b3db623d00074.png

    然后复制路径(以http *开头)(请参见下文)

    6dfe26ddaa38dc45cf0627a34c134ab1.png

    使用资源管理器或命令在地图驱动器中使用此路径(即net use N: https:://thepathyoujustcopied)

    注意:https在Windows7 / 8上可以正常运行,而在XP上则不能。

    这可能对您有用,但由于每台PC的驱动器号不同,因此我更喜欢采用不同的方法。这里的技巧是从共享点开始(而不是从作为Web服务器访问共享点的VBA脚本开始)。

    建立与Excel工作表的数据连接

    在共享点中,浏览到要监视的视图

    将视图导出到excel(2010年:库工具; libarry |导出到Excel)

    a39946a2808d3634250757d2bc1235e3.png

    查看此excel时,您会发现一个数据源设置(选项卡:数据,连接,属性,定义)

    f9637d45ee717d4b60c3a0c87c12a898.png

    您可以在vba中包含此查询,也可以在表中维护数据库链接,以通过VBA在表上进行迭代。请注意:上图没有显示实际的数据库连接(命令文本),它将告诉您如何访问我的共享点。

    截至2013年9月10日,以上引用的链接似乎已失效。有机会有更新版本吗?

    链接的文件不是我的。我已经在文章中添加了缺少的信息。

    尝试将共享点库映射到Windows中的驱动器号。然后在代码中选择驱动器和路径。

    展开全文
  • vba遍历文件夹中的文件夹 使用方便 (Ease of use) The goal is to read and create cabinet folders with no third-party tools or libraries that are not already present in the user's machine. As you will see...
  • Excel VBA编程

    万次阅读 多人点赞 2019-04-11 16:45:51
    文章目录如何创建VBAVBA语法规则声明变量给变量赋值让变量存储的数据参与运算关于声明变量的其他知识变量的作用域特殊的变量——数组声明多维数组声明动态数组其他创建数组的方法数组函数利用UBound求数组的最大索引...
  • Excel VBA 基础教程

    2019-01-01 18:51:06
    .................................................................................................................1 1.1 VBA是什么...........................................................................
  • Excel VBA基础教程

    2018-02-13 09:09:00
    https://www.w3cschool.cn/excelvba/excelvba-basics.html Excel VBA语言基础 VBA语言的基础认识 详解VBA编程是什么 excel处理录制的宏 Excel中控件的常规使用方法 VBA的变量含义和...
  • Excel VBA对象2

    千次阅读 2016-11-27 23:57:04
    4.3.1 Workbook对象是Workbooks集合中的一个成员 2. 怎样引用集合中的某个工作簿 法一:使用索引号引用工作簿 要引用Workbooks集合中的第3个Workbook,...法二:利用工作簿名引用工作簿 Workbooks("Book1") Workbook
  • Excel vba

    2011-03-31 11:18:47
    移動飛信 http://club.excelhome.net/thread-744110-1-1.html Function GetWtitle(ByVal url As String)...
  • Excel VBA实用技巧大全 附书源码

    热门讨论 2010-10-08 18:59:24
    01007获取打开Excel文件时的默认路径 01008获取模板保存的默认路径 01009获取库文件夹的路径 01010获取路径分隔符 01011获取Excel主窗口标题栏的名称 01012获取Excel窗口的状态(大小) 01013获取Excel主窗口的高度...
  • ExcelVBA程序设计.doc

    2011-04-05 21:32:51
    第八章 利用VBA操纵文件和文件夹 144 1.获取当前文件夹的名称(CURDIR函数) 144 2.更改文件或文件夹名称(NAME函数) 145 3.检查文件或文件夹是否存在(DIR函数) 145 4.获得文件修改的日期和时间(FILEDATETIME...
  • 详细介绍了Excel VBA 的使用技巧,主要内容包括:宏的应用技巧、VBE 使用技巧、程序控制流程、Range 对象操作、Worksheet 对象操作、Workbook 对象操作、Application 对象操作、Window 对象操作、Chart 对象操作、...
  • EXCEL VBA 备忘录

    2018-02-06 09:25:30
    workbooks 工作簿集合,表示打开的所有工作簿 book1 工作簿的名称 worksheets 工作表集合,表示指定工作簿的所有工作表 运算符:+ - * / \(整除) ^(指数运算) Mod(求模运算,取余数) 比较...
  • Excel VBA编程教程(基础一)

    千次阅读 多人点赞 2020-07-10 19:27:39
    VBA介绍 Visual Basic for Applications(VBA)是 VisualBasic 的一种宏语言,是微软开发出来在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。主要能用来扩展 Windows 的应用程序功能,特别是Microsoft ...
  • 来吧!带你玩转 Excel VBA

    千次阅读 2013-08-15 10:03:06
    带你玩转 Excel VBA(含CD光盘1张)(双色)(附带近500个VBA思考练习题,Exceltip.net出品) 罗刚君  杨嘉恺 编著 ISBN 978-7-121-20627-6 2013年7月出版 定价:85.00元 648页 16开 编辑推荐...
  • VBA 有很多用于文件操作的语句和函数,能满足绝大多数场景下的文件操作要求。本文将按操作目的一一进行介绍。
  • EXCEL VBA常用语句

    2011-02-14 10:31:00
    定制模块行为 (1) Option Explicit '强制对模块内所有变量进行声明 Option Private Module '标记模块为私有,仅对同一工程中其它模块有用,在宏对话框中不显示 ...(2) On Error Resume Next '忽略错误继续执行VBA
  • excel vba 数据分析

    千次阅读 2019-01-20 12:20:00
    VBA(Visual Basic for Application)是Microsoft Office系列软件的内置编程语言,其语法结构与Visual Basic编程语言互相兼容,采用的是面向对象的编程机制和可视化的编程环境。 第一节 标识符 一.定义 标识符是一...
  • 各种Excel VBA的命令

    千次阅读 2008-07-06 21:30:00
    各种Excel VBA的命令 ━━━━━━━━━━━━━━━━━━━━━━━━━━ 本示例为设置密码窗口 (1) If Application.InputBox("请输入密码:") = 1234 Then [A1] = 1 密码正确时执行 Else: MsgBox "密码错误,...
  • EXCEL VBA编程基础

    2009-05-05 09:12:00
    Excel 最重要的应用就是利用公式进行计算。无论输入是纯粹的数字运算,还是引用其他单元格计算,只要在一个单元格中输入公式,就能得到结果。这个直接显示结果的设计对于绝大多数场合来说都是适用的,但某些情况下就...
  • 来吧 带你玩转 Excel VBA
  • Excel VBA之FSO-2.3文件夹的移动前景提要在之前我们也是接触了一些关于FSO的运用,在VBA的世界中,FSO在文件方面的操作还是非常的强大的,日常的工作中,我们很多的数据并不一定存在在excel,有时候还会存在在文本...
  • EXCEL VBA常用语句100句

    千次阅读 2009-07-31 10:23:00
    以下转自:http://www.bbioo.com/blog/bio/guohui/1524.htm  EXCEL VBA常用语句100句定制模块行为Option Explicit 强制对模块内所有变量进行声明*****Option Private Module 标记模块为私有,仅对同一工程中其它...
  • Excel VBA编程常用语句300句

    万次阅读 2011-10-28 12:04:41
    Excel VBA编程常用语句300句 ************** * VBA 语句集 * * (第 1 辑) * ************** **************** * 定制模块行为 * **************** (1) Option Explicit '强制对模块内所有变量进行声明 ...
  • excel 宏不会打开 查一下百度

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,205
精华内容 482
关键字:

利用excelvba打开文件夹