当尝试运行excel多个实例时,粘贴失败

我有3个同时运行的Excel-vba实例。 有时,有时候,复制和粘贴失败。 当失败时,我只是再次运行这部分代码,它运行良好。 它可以发生在我的代码的任何粘贴方法。

我知道这只发生在多个Excel的实例,我想知道为什么。 很高兴帮助!

'Copy to a new Sheet Call findAndSelectRange("Fabricante", "Grand Total", 5) ' make one selection Selection.Copy Workbooks("FFQ.xlsm").Activate Sheets.Add After:=Workbooks(WORKBOOK_MAIN).Sheets(Workbooks(WORKBOOK_MAIN).Sheets.count) ActiveSheet.Name = sheetName1 'ThisWorkbook.Worksheets.Select (ThisWorkbook.Worksheets.Count) Range("A2").Select ActiveSheet.Paste 

您正在进行大量的select和激活,而不是仅仅参考您需要的工作簿/工作表/单元格,这可能会使得问题变得更糟糕。

说如何处理FindAndSelectRange过程的结果有点困难 – 虽然我认为这会更好一些,返回Range对象的FindAndReferenceRange函数。

希望你能从下面的代码中select一些有用的东西(注意我不select或激活任何东西)。

 Sub Test1() 'Variables to hold references to both workbooks and new worksheet. Dim WORKBOOK_MAIN As Workbook Dim wrkBk As Workbook Dim wrkSht As Worksheet 'Set references to workbooks. Set WORKBOOK_MAIN = ThisWorkbook Set wrkBk = Workbooks("FFQ.xlsm") 'Set wrkBk = Workbooks.Open("fullpath & name") 'Create new sheet and set reference to it. wrkBk.Worksheets.Add After:=wrkBk.Worksheets(wrkBk.Worksheets.Count) Set wrkSht = wrkBk.Worksheets(wrkBk.Worksheets.Count) 'Copy cell from B2 to A2. 'The info before `Copy` could be returned by your `findAndSelectRange` function. 'If the function returns a valid range reference you could just write: 'findAndSelectRange("Fabricante", "Grand Total", 5).Copy Destination:=wrkSht.Range("A2") WORKBOOK_MAIN.Worksheets("Sheet1").Range("B2").Copy _ Destination:=wrkSht.Range("A2") 'If you're only interested in the unformatted value you could use: 'wrkSht.Range("A2") = findAndSelectRange("Fabricante", "Grand Total", 5).Value End Sub