使用宏代码在云电脑上历遍每个文件夹,文件夹里的excel显示不出来(文件后缀.xlsx)

Sub Books2Sheets()
    '定义对话框变量
    Dim fd As FileDialog
    Set fd = Application.FileDialog(msoFileDialogFilePicker)
    
    '新建一个工作簿
    Dim newwb As Workbook
    Set newwb = Workbooks.Add
    
    With fd
        If .Show = -1 Then
            '定义单个文件变量
            Dim vrtSelectedItem As Variant
            
            '定义循环变量
            Dim i As Integer
            i = 1
            
            '开始文件检索
            For Each vrtSelectedItem In .SelectedItems
                '打开被合并工作簿
                Dim tempwb As Workbook
                Set tempwb = Workbooks.Open(vrtSelectedItem)
                
                '复制工作表
                tempwb.Worksheets(1).Copy Before:=newwb.Worksheets(i)
                
                '把新工作簿的工作表名字改成被复制工作簿文件名,这儿应用于xls文件,即Excel97-2003的文件,如果是Excel2007,需要改成xlsx
                newwb.Worksheets(i).Name = VBA.Replace(tempwb.Name, ".xls", "")
                
                '关闭被合并工作簿
                tempwb.Close SaveChanges:=False
                
                i = i + 1
            Next vrtSelectedItem
        End If
    End With
    
    Set fd = Nothing
End Sub

使用宏代码在云电脑上历遍每个文件夹,文件夹里的excel显示不出来,是指根本就没有获取到任何一个Excel文件呢还是报什么错了呀,如果报错了,贴下错误代码,如果没有获取到Excel文件,先检查下那个SelectedItems有没有值,其次,你选择的是一个文件夹的话,那你可以先得到文件夹的路径,然后在文件夹下查找所有Excel文件,然后循环处理:

    myPath = "F:\文件夹路径\"    
    
    myFile = Dir(myPath & "*.xls*")  '依次找寻指定路径中的*.xls,或者xlsx文件
      
    Do While myFile <> ""   '当指定路径中有文件时进行循环
           
        Workbooks.Open(myPath & myFile) '打开要处理的文件
         。。。处理文件

这段代码是用VBA编写的,主要用于将多个Excel文件中的工作表合并到一个新的工作簿中。

根据您的描述,问题似乎是在使用宏代码历遍每个文件夹时,无法正确显示包含.xlsx文件的文件夹中的Excel文件。这可能是因为在文件对话框中选择的文件没有包括.xlsx文件,或者代码中没有正确处理.xlsx文件的情况。

建议您检查文件对话框的设置,确保已选择所有需要合并的Excel文件,包括.xlsx文件。您也可以尝试修改代码以正确处理.xlsx文件。例如,可以使用类似以下代码的语句来处理.xlsx文件:

If InStr(1, tempwb.Name, ".xlsx", vbTextCompare) > 0 Then
newwb.Worksheets(i).Name = VBA.Replace(tempwb.Name, ".xlsx", "")
Else
newwb.Worksheets(i).Name = VBA.Replace(tempwb.Name, ".xls", "")
End If

此代码段将检查文件名是否包含.xlsx字符串,如果是,则将新工作表的名称设置为不包含.xlsx的文件名;否则,将新工作表的名称设置为不包含.xls的文件名。

合并工作簿参考:https://blog.csdn.net/hhhhh_51/article/details/123834366

根据你的描述、以及以上各位老师的答复,有可能是以下这种情况:
1)程序本身没有问题。
你可以先选择一个本地路径,调试一下,试试看,看程序有无问题。
如果没问题,就说明是网络的问题。
2).FileDialog、.Open等VBA函数,对于虚拟磁盘并不能很好地操作。
例如,我们用 Z:盘符定位一个网络磁盘,就存在不能存取的现象(其它软件也类似)。
虚拟磁盘存取操作与本地文件IO本质是有所不同。

'把新工作簿的工作表名字改成被复制工作簿文件名,这儿应用于xls文件,即Excel97-2003的文件,如果是Excel2007,需要改成xlsx
                newwb.Worksheets(i).Name = VBA.Replace(tempwb.Name, ".xlsx", "")