[问题] VBA workbooks不重新开启档案

楼主: pomelolin (勇气、智慧、善良)   2018-08-10 23:59:48
(若是和其他不同软件互动之问题 请记得一并填写)
软件:excel
版本:2013
这是别人写的VBA, 现在想自己修改, 是从A档案各个sheet不同位置
copy到B档案各sheet不同位置, 有个表格是对照表
原本写的档案都得重新开启A档案和B档案, 但其实原本都会同时开着,
不想每次run程式都要重开档案, 上网研究好久, 依然不得其门而入
把Open删掉, 程式就出现错误了@@
麻烦版上各位先进帮忙~~
Dim scWB As Workbook, tgWB As Workbook
Dim scWS As Worksheet, tgWS As Worksheet, ws As Worksheet
Dim row As Integer
Set ws = ThisWorkbook.Worksheets("XXX")
Set scWB = Application.Workbooks.Open(ws.Cells(1, 3).Value)
Set tgWB = Application.Workbooks.Open(ws.Cells(2, 3).Value)
For row = 4 To 63
If (Len(ws.Cells(row, 2).Value) > 0) Then
ws.Cells(row, 6).Value = "GO"
Set scWS = scWB.Worksheets(ws.Cells(row, 2).Value)
Set tgWS = tgWB.Worksheets(ws.Cells(row, 4).Value)
scWS.Range(ws.Cells(row, 3).Value).Copy
tgWS.Range(ws.Cells(row, 5).Value).PasteSpecial xlPasteValues
ws.Cells(row, 6).Value = "OK"
'scWB.Close
'tgWB.Close
End If
作者: soyoso (我是耀宗)   2018-08-11 00:34:00
1.循环于workbooks的集合,判断workbook.name是否符合原文内的ws.cells(1,3)或cells(2,3),符合就set 变量=workbooks(完整档名)并设个变量(可数字、文字或布林),用于当循环执行完时都没有符合的条件,再判断该变量,来判断是否要以workbooks.open2.直接set 变量=workbooks(完整档名),没开启变量会是nothing,就可以判断当变量is nothing时workbooks.open但因set 变量一个无开启的档案,会出现阵列索引超出范围的错误讯息,因此上方要加上on error resume next

Links booklink

Contact Us: admin [ a t ] ucptt.com