1

在它从工作簿 x1 复制并粘贴工作表它还应该将工作表的标题“x”重命名为单元格 B3。这应该在移至下一个工作簿之前完成。

它需要为 workBOOK x1 到 x100 执行此操作。不过,我不能按名称引用工作簿,因为它们每个都被命名为一个文本字符串,而这不是真正的可排序方法。

我知道的这段代码有效,将“x”从“x1”复制到“xmaster”,以及重命名工作表并断开链接,如下所示:

    Sub CombineCapExFiles()
    Sheets("Capital-Projects over 3K").Move After:=Workbooks("CapEx Master File.xlsm").Sheets _
        (3)
    ActiveSheet.Name = Range("B3").Value

    Application.DisplayAlerts = False

For Each wb In Application.Workbooks
    Select Case wb.Name
            Case ThisWorkbook.Name, "CapEx Master File.xlsm"
                ' do nothing
            Case Else
                  wb.Close
    End Select
Next wb

    Application.DisplayAlerts = True

End Sub

“激活上一个”窗口不起作用,也不知道如何修复它的那部分。

但是,我不确定如何构建它以遍历目录中的所有工作簿。

我应该使用这个:?

MyPath = "C:\directory here"
strFilename = Dir(MyPath & "\*.xlsx", vbNormal) 'change to xlsm if needed ?

If Len(strFilename) = 0 Then Exit Sub ' exit if no files in folder

Do Until strFilename = ""
    'Your code here
    strFilename = Dir()    
Loop

另一个限制是它不需要在 xmaster 上运行宏(它会出错,因为它没有工作表“x”,它将从以前的工作簿中重命名。)

谢谢!马修

4

2 回答 2

0

像这样?(未测试)

Option Explicit

Sub LoopFiles()

Dim strDir As String, strFileName As String
Dim wbCopyBook As Workbook
Dim wbNewBook As Workbook
Dim wbname as String   

strDir = "C:\"
strFileName = Dir(strDir & "*.xlsx")

Set wbNewBook = Workbooks.Add 'instead of adding a workbook, set = to the name of your master workbook
wbname = ThisWorkbook.FullName

 Do While strFileName <> ""
    Set wbCopyBook = Workbooks.Open(strDir & strFileName)
    If wbCopyBook.FullName <> wbname Then
        wbCopyBook.Sheets(1).Copy Before:=wbNewBook.Sheets(1)
        wbCopyBook.Close False
        strFileName = Dir()
    Else
        strFileName = Dir()
    End If
Loop

End Sub
于 2012-10-03T19:32:56.987 回答
0

该位将用于避免在 xmaster 上运行宏。

xmaster = "filename for xmaster"
MyPath = "C:\directory here"
strFilename = Dir(MyPath & "\*.xls*", vbNormal) 'this will get .xls, .xlsx, .xlsm and .xlsb files
If Len(strFilename) = 0 Then Exit Sub ' exit if no files in folder

Do Until strFilename = ""
    If strFileName = xmaster Then ' skip the xmaster file
        strFilename = Dir() 
    End If
    'Your code here
    strFilename = Dir()    
Loop

但另一方面我也帮不上忙。我在您的代码中没有看到任何激活上一个窗口部分。

于 2012-10-03T19:33:34.607 回答