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
Mein Hauptproblem Kopieren scheint mitSheets keine Daten über
SourceWkb.Sheets("Price List").Range("C:E").Copy
TargetWkb.Sheets("Price List").Range("C:E").PasteSpecial Paste:=xlValues
Es läuft ohne eine Fragen zu sein, aber es ist nicht wirklich die Daten über das Kopieren, und ich kann nicht zu arbeiten scheinen, warum ich versuchte
TargetWkb.Sheets("Price List").Range("A:A").Value = SourceWkb.Sheets("Price
List").Range("A:A")
Bit immer noch das gleiche Ergebnis keine Daten erhalten, irgendwelche Ideen?
Sind Sie sicher, dass die Blattnamen korrekt sind und die Bereiche? Kopieren Sie nicht die Daten * oder * wird dieser Teil der Anweisung nicht ausgelöst? Gehen Sie mit "F8" durch das Makro, um zu sehen, ob es diese Zeile sogar ausführt. Ich denke, das Problem könnte in der Logik liegen. Sie durchlaufen Arbeitsblätter in der Quelle, aber nichts mit den sichtbaren Blättern. – BruceWayne
Warum durchlaufen Sie die Arbeitsblätter (zB 'For Each SourceWksh in SourceWkb.Worksheets', wenn Sie die Daten eines bestimmten Arbeitsblatts kopieren? – Jeeped