Sub CpyProdSch()
Dim wbkOpen As Workbook
Dim wb2 As Workbook
Dim wsName As String
Dim strFileName As String
Dim strFilePath As String
Dim MsgBoxResult As Long
strFilePath = "\\Ykf001\grpdata\PUBLIC\Operations\Converting Schedule\"
' this could also be a constant
strFileName = Dir(strFilePath)
Set wbkOpen = Workbooks.Open(strFilePath & strFileName, False, True)
'It stops here - or at least it appears to - defaults back to VBA view and does nothing further
ActiveWorkbook.ActiveSheet.Range("A1:BN500").Select
Selection.Copy
Workbooks("Raw Data pRODUCTION.xlsx").Worksheets("production Data").Range("A1:C1").Select.PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=True, Transpose:=False
Application.CutCopyMode = False
End If
wbkOpen.Close False
Application.ScreenUpdating = True
正如您所看到的,我有一个可变的工作簿名称,因为我可以引用它的唯一方法是知道它正在访问的文件夹中唯一的excel文件 - 所以这不像激活已知工作簿那么简单名称。
现在看来这部分代码OPENS工作簿很好,它只是不会在工作簿中做任何事情因为我认为我指的是错误的。
此外,包含数据的工作表名称更改: 目前它说的是8月29日,在7月14日之前,它的变量,但它始终是第一张。出于某种原因,当工作簿打开但它打开到第二张表时。
我需要激活刚刚打开的工作簿中的第一张工作表,以便将范围复制并粘贴到我的“原始生产数据”工作簿中。
这是现在的代码[code]设置wbkOpen = Workbooks.Open(strFilePath& strFileName,False,True) 片材(1).Activate 设置wbkOpen = ActiveWorkbook
wbkOpen.Sheets(1).Range("A2").Copy
Workbooks("Raw Data pRODUCTION.xlsx").Worksheets("Production Data").Range("A1").Select.PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=True, Transpose:=False
Application.CutCopyMode = False
[/code]
它仍然只是打开工作簿并停止。我把它修剪成只选择纸张(1),打开书后没有任何反应。代码WAS今天早上工作。我很困惑。
我做了一些修补,所以这很奇怪。
无论文件路径是什么,sub是什么,或者每次打开工作簿时excel工作簿是什么,宏都会停止。
这与动作完全无关,因为一旦该文件打开,宏就会停止。
有什么想法吗?
答案 0 :(得分:1)
这实际上相当令人震惊,这完全有用,只是为了表明总会有新的东西需要学习。而不是这样做:
Set wbkOpen = Workbooks.Open(strFilePath & strFileName, False, True)
你可以这样做:
Workbooks.Open strFilePath & strFileName, False, True
Sheets(1).Activate
Set wbkOpen = ActiveWorkbook
适合我。
答案 1 :(得分:0)
ActiveWorkbook.ActiveSheet.Range("A1:BN500").Select
Selection.Copy
应该是
wbkOpen.Sheets(1).Range("A1:BN500").Copy
Workbooks.Open返回它打开的工作簿,以便您可以使用它。(请注意,甚至不需要wbkOpen。因为新打开的工作簿始终是活动工作簿)您可以使用Sheets(1)获取工作簿的第一张工作表。 .select然后selection.copy可以简化为.copy
在
Workbooks("Raw Data pRODUCTION.xlsx").Worksheets("production Data").Range("A1:C1").Select.PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=True, Transpose:=False
Application.CutCopyMode = False
是一个没有用的选择,所以它应该是
Workbooks("Raw Data pRODUCTION.xlsx").Worksheets("production Data").Range("A1:C1").PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=True, Transpose:=False
Application.CutCopyMode = False