【发布时间】:2017-07-18 04:05:41
【问题描述】:
Sub CostPriceMain()
Dim SourceWkb As Workbook
Dim TargetWkb As Workbook
Dim SourceWksht As Worksheet
Application.ScreenUpdating = False
Application.DisplayAlerts = False
NewFile = Application.GetOpenFilename(FileFilter:="Microsoft Excel Files
(*.xlsx; *.xls), (*.xlsx; *.xls), All Files, *.*", FilterIndex:=1)
If NewFile = False Then Exit Sub
If NewFile <> False Then
Set SourceWkb = Workbooks.Open(NewFile)
End If
Set TargetWkb = Workbooks.Open("C:\WK24.xlsx") ' warning - XLS file could cause problems - see note
For Each SourceWksht In SourceWkb.Worksheets
If SourceWksht.Visible Then
SourceWkb.Sheets("Price List").Range("C:E").Copy
TargetWkb.Sheets("Price List").Range("C:E").PasteSpecial Paste:=xlValues
End If
Next SourceWksht
TargetWkb.Close False
SourceWkb.Close False
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Done = MsgBox("Task Complete", vbOKOnly)
End Sub
我的主要问题似乎与
SourceWkb.Sheets("Price List").Range("C:E").Copy
TargetWkb.Sheets("Price List").Range("C:E").PasteSpecial Paste:=xlValues
它运行没有问题,但实际上并没有复制数据,我似乎无法弄清楚为什么 我试过了
TargetWkb.Sheets("Price List").Range("A:A").Value = SourceWkb.Sheets("Price
List").Range("A:A")
Bit 在没有数据的情况下仍然得到相同的结果,有什么想法吗?
【问题讨论】:
-
您确定工作表名称和范围是否正确?是不是在复制数据或语句的那一部分没有触发?使用
F8单步执行宏,看看它是否运行了该行。我认为问题可能出在逻辑上。您正在循环访问源代码中的工作表,但没有对可见工作表执行任何操作。 -
为什么要遍历工作表(例如,
For Each SourceWksht In SourceWkb.Worksheets,如果您要复制特定工作表的数据?