我的VBA代码有问题,我不是VBA专家。此代码与30个客户端的产品使用数据相关联。我正在使用的当前工作簿包含多个选项卡,但我只想将重点放在一个选项卡上,即“模板”选项卡,作为我所需的输出。我正在尝试设置的是一个宏,可以自动将每个客户端的数据保存到它自己的新工作簿中的特定文件夹位置。所以基本上我只想从每个客户端的整个工作簿中保存一个选项卡(即工作表)。
客户端列表来自绑定到表的数据验证列表。宏本身是一个模板,因为需要为每个单独的客户端刷新数据,以生成“.RefreshAll”选项卡中所需的输出。底层数据绑定到Power Query和链接到MS SQL Server的T-SQL。这就是我所看到的:
当文件被保存时,我收到一个
运行时错误'1004‘
因此,保存新文件失败。此外,在移动到下一个客户端之前,需要为每个单独的客户端运行并完成数据刷新。我不相信这种情况正在发生。
下面是我希望宏的工作方式:
从data validation下拉列表中的第一个客户端开始刷新completes
代码,直到它遍历了整个客户端列表。.xlsx
下面是我正在使用的当前代码:
Sub ClientDataRefresh()
With ActiveWorkbook.Worksheets("Output")
Dim r As Long, i As Long
r = Range("Clients").Cells.Count
For i = 1 To r
Range("C5") = Range("Clients").Cells(i)
ActiveWorkbook.RefreshAll
Worksheets("Output").Range("A1:O10").Columns.AutoFit
With ActiveWorkbook.Worksheets("Template")
LR = .Cells(Rows.Count, 7).End(xlUp).Row
10: If .Cells(LR, 7) = "" Then LR = LR - 1: GoTo 10
.PageSetup.PrintArea = "$A$1:$I$" & LR
End With
thisDate = Replace(Date, "\", " - ")
thisName = Sheets("Template").Range("H7").Text
filePath = "C:\Users\nalanis\Documents\Sales\"
Application.DisplayAlerts = False
ActiveWorkbook.Worksheets("Template").Select
ActiveWorkbook.Worksheets("Template").Copy
ActiveWorkbook.Worksheets("Template").SaveAs Filename:=filePath & thisName & thisDate & ".xlsx", FileFormat:=xlOpenXMLWorkbook
Application.DisplayAlerts = True
Next i
End With
End Sub
任何反馈都是非常感谢的。谢谢
新代码
Sub ClientDataRefresh()
With ActiveWorkbook.Worksheets("Output")
Dim r As Long, i As Long
r = Range("Clients").Cells.Count
For i = 1 To r
Range("C5") = Range("Clients").Cells(i)
ActiveWorkbook.RefreshAll
DoEvents
Worksheets("Output").Range("A1:O10").Columns.AutoFit
thisDate = Replace(Date, "/", "-")
thisName = Sheets("Template").Range("H7").Text
filePath = "C:\Users\nalanis\Dropbox (Decipher Dev)\Analytics\Sales\"
Application.DisplayAlerts = False
ActiveWorkbook.Worksheets("Template").Select
ActiveWorkbook.Worksheets("Template").Copy
ActiveWorkbook.Worksheets("Template").SaveAs Filename:=filePath & thisName & " " & "Usage Report" & " " & thisDate & ".xlsx", FileFormat:=xlOpenXMLWorkbook
Application.DisplayAlerts = True
Next i
End With
With ActiveWorkbook.Worksheets("Template")
LR = .Cells(Rows.Count, 7).End(xlUp).Row
10: If .Cells(LR, 7) = "" Then LR = LR - 1: GoTo 10
.PageSetup.PrintArea = "$A$1:$I$" & LR
End With
End Sub
.PageSetup.PrintArea = "$A$1:$I$" & LR
End With
Next c
End Sub
发布于 2018-06-02 01:39:37
更改此设置:
thisDate = Replace(Date, "\", " - ")
要这样做:
thisDate = Replace(Date, "/", " - ")
https://stackoverflow.com/questions/50648510
复制相似问题