从最新文件导出数据的问题

问题描述

我在 Excel VBA 中的宏有问题。这是我的第一个宏...所以,我有一个文件,按钮在哪里,它打开另一个文件。在另一个文件中,我创建了一个用户窗体,用户无法在其中检查哪个区域将执行“某事”。这是我问题的开始。我希望,当用户检查该区域时,打开该区域 xd 文件夹中的最新文件,因此我找到了代码并且它可以工作,下一个文件打开,我想拆分这个最新文档的一部分,其中是某些东西的数量并且它也有效,但我想将此 numba()+1 添加到此文件中,其中具有 checkig 区域可能性的用户表单,另外我想在此拆分后将 numba() 导出到另一个文件关闭文件,从我导出 numba(),但是当我执行 Workbooks(My Path&Latest File).Close SaveChanges=False 时,Vba 显示错误。所以你能帮我解决这个问题吗?如何将这个 numba+1 从打开最新文件导出到这个准确的,我实际上工作的地方?

或者你有什么想法,我怎样才能在不打开它的情况下只导出这个最新文件名称?然后我将导出onlu名称,拆分它并为该文档制作下一个数字......下面我添加代码,感谢您的帮助:)

Private Sub CommandButton1_Click()

    Dim MyPath As String
    Dim MyFile As String
    Dim LatestFile As String
    Dim LatestDate As Date
    Dim LMD As Date
    
    MyPath = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
    If Right(MyPath,1) <> "\" Then MyPath = MyPath & "\"
    MyFile = Dir(MyPath & "*.xlsx",vbnormal)
    If Len(MyFile) = 0 Then
        MsgBox "No files were found...",vbExclamation
        Exit Sub
    End If
    do while Len(MyFile) > 0
        LMD = FileDateTime(MyPath & MyFile)
        If LMD > LatestDate Then
            LatestFile = MyFile
            LatestDate = LMD
        End If
        MyFile = Dir
    Loop

    Workbooks.Open MyPath & LatestFile
    
    Dim numba() As String
    numba() = Split(Range("I6"),"-")
    
    
    Call NAZWA

Sub NAZWA()
This.Workbooks.Activate

Worksheets("Tabelle1").Activate

Range("I6") = "xx-xxxx-"

End Sub

解决方法

请尝试Workbooks(LatestFile).close

Workbooks 集合仅保留工作簿名称,而不保留其全名...

,

使用这种技术:

Dim MyOpenWb As Workbook
Set MyOpenWb = Workbooks.Open(MyPath & LatestFile) 'set a reference to the opened workbook for later use

'access any worsheet/cell in that workbook like
MyOpenWb.Worksheets("Sheet1").Range("A1").Value = "write into Sheet1 cell A1"

'make sure every Range/Cells/Columns/Rows has a workbook/worksheet specified
'otherwise it is not clear where Excel should look for Range("I6")
Dim numba() As String
numba() = Split(MyOpenWb.Worksheets("Tabelle1").Range("I6"),"-")

'do your stuff here …

'Close it
MyOpenWb.Close SaveChanges:=True 'or False

当您打开工作簿时,请将其设置为变量,例如 MyOpenWb。然后,您可以使用此变量访问工作簿并关闭它。因此,一旦它打开,您就不必再处理它的名称或路径。

避免使用 .Select.Activate 而是通过如下命名工作簿和工作表来访问范围:

ThisWorkbook.Worksheets("Tabelle1").Range("I6").Value = "xx-xxxx-"

您可能会从阅读中受益 How to avoid using Select in Excel VBA