首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >数据刷新期间将工作簿工作表保存到新文件位置时出现VBA错误

数据刷新期间将工作簿工作表保存到新文件位置时出现VBA错误
EN

Stack Overflow用户
提问于 2018-06-02 01:36:13
回答 1查看 167关注 0票数 0

我的VBA代码有问题,我不是VBA专家。此代码与30个客户端的产品使用数据相关联。我正在使用的当前工作簿包含多个选项卡,但我只想将重点放在一个选项卡上,即“模板”选项卡,作为我所需的输出。我正在尝试设置的是一个宏,可以自动将每个客户端的数据保存到它自己的新工作簿中的特定文件夹位置。所以基本上我只想从每个客户端的整个工作簿中保存一个选项卡(即工作表)。

客户端列表来自绑定到表的数据验证列表。宏本身是一个模板,因为需要为每个单独的客户端刷新数据,以生成“.RefreshAll”选项卡中所需的输出。底层数据绑定到Power Query和链接到MS SQL Server的T-SQL。这就是我所看到的:

当文件被保存时,我收到一个

运行时错误'1004‘

因此,保存新文件失败。此外,在移动到下一个客户端之前,需要为每个单独的客户端运行并完成数据刷新。我不相信这种情况正在发生。

下面是我希望宏的工作方式:

从data validation下拉列表中的第一个客户端开始刷新completes

  • "Template“数据复制location

  • File

  • 刷新completes

  • ”Template“工作表并将其从工作簿保存到新工作簿中

  • 新工作簿放置在新文件中.xlsx名称包括客户名称、今天的日期,并从之前为下一个客户端重复1-6次的文件中删除

代码,直到它遍历了整个客户端列表。.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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-02 01:39:37

更改此设置:

thisDate = Replace(Date, "\", " - ")

要这样做:

thisDate = Replace(Date, "/", " - ")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50648510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档