我正在Excel上构建报告,该报告必须每月进行更新。因此,我每个月都会得到一个新的Excelfile,其中包含必须在报告中汇总的数据。 该报告包含特定Excel文件的计算以及每个月的数据,例如,男性或女性客户的数量。
是否可以通过VBA创建宏来创建新Excelfile的路径,这样我就不必手动更改文件的路径了?例如,在这种情况下,我不得不通过输入公式将公式更改为'...non_activated-2019-03'
,Excel应该自动执行该公式,因为在这些计算中有60多个我必须更改文件。
=COUNTIFS('C:\Users\denni\Desktop\Reporting\Non Activated\[non_activated-2019-02.xlsx]non_activated-2019-02'!$M:$M;$B$9;'C:\Users\denni\Desktop\Reporting\Non Activated\[non_activated-2019-02.xlsx]non_activated-2019-02'!$B:$B;$C10)
答案 0 :(得分:0)
是的,有可能,当我需要创建报告和日志文件时,我自己做。只需在文件名String
中添加以下内容即可:
filename = "...non_activated-" & Year(Date) & "-" & Month(Date)
如果您希望月份号以0
开头,则只需更改如下代码即可:
Sub yourSub()
'...
filename = "...non_activated-" & Year(Date) & "-" & getMonthNumber(Date)
'...
End Sub
Function getMonthNumber(data As Date) As String
If Month(data) < 10 Then
getMonthNumber = "0" & Month(data)
Else
getMonthNumber = Month(data)
End If
End Function
有很多方法可以打开(和写入)文件。您可以尝试以下方法:
Open yourPath & yourFilename For Output As #1
Print #1, "Print somenthing on your file"
'Do your stuff
Close #1
现在,您已将文件保存在路径中。
通过使用这种方法,它每个月都会自动创建一个新文件,您可以轻松找到该文件。
仅记得检查文件是否存在,否则可以启动 一个例外。
答案 1 :(得分:0)
您可以在工作表中的单元格中使用类似的功能,然后在公式中引用该单元格,然后将其保留。
例如=GetLatestImportFile("C:\workspace\dummy data\")
Function GetLatestImportFile(strPath As String, _
Optional strLookFor As String = "non-activated")
Dim f As Scripting.FileSystemObject
Dim fld As Scripting.Folder
Dim fl As Scripting.File
Dim dt As Date
Set f = New Scripting.FileSystemObject
Set fld = f.GetFolder(strPath)
For Each fl In fld.Files
If InStr(1, fl.Name, strLookFor) > 0 Then
If fl.DateCreated > dt Then
dt = fl.DateCreated
GetLatestImportFile = fl.Name
End If
End If
Next fl
set f=nothing
set fld=nothing
set fl=nothing
End Function
答案 2 :(得分:0)
所以现在这段代码运行得很好,并用新的引用替换了旧的引用!
Sub MySub()
Dim old as String
Dim new as String
Dim i as Integer
old = "activated-2019-01"
new = "activated-2019-02"
For i=4 to 160
Cells(i,"E").FormulaLocal = Replace(Cells(i,"F").FormulaLocal, old, new)
Next i
End Sub