使用VBA

时间:2017-05-31 04:51:40

标签: excel vba excel-vba

我需要一个VBA来更新excel文件的名称"在那个特定的" excel文件"。文件夹中有12个文件。该文件夹的路径是D:\ Amit。这12个文件的名称是"现金报告,如11-05-2017 0000Hrs"从午夜开始(这就是0000Hrs的原因)并且它增加了2个小时,使其成为0200Hrs,0400Hrs等。我们每2小时后每天准备这些文件。有时我们会在3小时之后运行该文件,而不是在0200Hrs之后的0500Hrs而不是0400Hrs。我需要的是一个VBA文件,它打开所有这12个文件,在每个相应文件的最后一行的A列中,它提到了该特定文件的名称。 例如。它应该打开所有12个文件,然后在第一个名为Cash Report的文件中,如11-05-2017,在该文件的A列的最后一行 - 它应该提到这个特定文件的名称。

因此,如果VBA在11-05-2017 0400Hrs"然后在单元格A的最后一个单元格中,紧接在单元格中的文本或数据之后,使用偏移量,下面的空白单元格应该具有此文件的名称为"现金报告为11-05-2017 0000Hrs&#34 ;。同样,对于打开每个单独文件的所有文件以及更新A列最后一行内的相应文件名,需要类似这样的内容。

我正在尝试一些代码,但它仍然是点点滴滴。

Dim Source As String
    Dim StrFile As String

    'do not forget the last backslash in the source directory.
    Source = "C:\Users\Admin\Desktop\VBA\"
    StrFile = Dir(Source)

    Do While Len(StrFile) > 0
        Workbooks.Open Filename:=Source & StrFile
        StrFile = Dir()
    Loop

    fldr = Activeworkbook.Path 
 Dt = Application.InputBox("Enter Date as 'dd-mm-yyyy' ", format(Now," dd-mm-yyyy"
 Workbooks.open Filename:= fldr & "\Cash Report as on" & 0400 & "Hrs.xlsx"
 Range("A1").End(xlDown).Select
 Offset(1).Select

2 个答案:

答案 0 :(得分:0)

试试这个

Sub t()
    Dim Source As String
    Dim StrFile As String
    Dim wb As Workbook

    'do not forget last backslash in source directory.
    Source = "C:\Users\Admin\Desktop\VBA\"
    StrFile = Dir(Source)

    Do While Len(StrFile) > 0
        Set wb = Workbooks.Open(Source & StrFile)
        wb.ActiveSheet.Range("A" & Rows.Count).End(xlUp).Offset(1, 0) = wb.Name
        StrFile = Dir()
        wb.Close (True)
    Loop

End Sub

答案 1 :(得分:0)

尝试这样的事情。

假设:

  • Excel文件名将始终粘贴在第一张工作表中 - 如果特定工作表总是以相同的方式命名,则使用column.groupby(column.isnull().cumsum()).last().iloc[:-1] 0 3.0 1 4.0 dtype: float64 更改行Sheets(1)
  • 表格(1)中A列表格中的每一行都不为空,因为我使用Sheets("YourName")函数(thx @Darren Bartrup-Cook)

<强>代码:

COUNTA