需求:doc1为计算软件输出excel文件,doc2为项目需要格式文件。
遍历doc1中的sheet,确认目标sheet,然后将doc1中的数据复制到doc2中。
方法1:For each ....next 遍历目标文件sheet
Sub transdata()
Dim myfile1, myfile2 As String
Dim m, n As Integer
Dim doc1, doc2 As Workbook '定义为一个workbook对象,而不是workbooks,workbooks为数组。
Dim mysheet As Worksheet '定义为一个worksheet对象,worksheets为数组。
Dim mycheck1
Dim objectname As String
myfile1 = Application.GetOpenFilename() 'getopenfilename()不打开文件,只返回为含路径的名称, 为字符串类型。
Debug.Print myfile1 'Debug.print 在立即窗口打打印myfile1 内容
Set doc1 = Workbooks.Open(myfile1) 'open()打开一个workbook文件
mycheck1 = VarType(doc1) 'Vartype()用于数据类型,对象类型返回值为9,用于验证对象类型。
Debug.Print mycheck1
myfile2 = Application.GetOpenFilename()
Set doc2 = Workbooks.Open(myfile2) '普通类型变量,如整型变量,字符串,用let赋值,一般省略。对象用set赋值,不能省略。
objectname = "Sheet1"
For Each mysheet In doc1.Worksheets
If mysheet.Name = objectname Then 'objectname可以不赋值,If语句中可以直接判断。但是if语句内= 为逻辑判断,不能用于赋值。
doc2.Worksheets("Sheet1").Range("A1") = 100
End If
Next
doc1.Close savechanges:=False '关闭文件,不保存。
doc2.Close savechanges:=True '关闭文件,保存修改。
MsgBox "运行结束"
End Sub
方法2:用For ...next 循环从sheet1依次读取全部sheet。(有时间更新)
具体参考以下链接:
(2条消息) VBA 循环遍历某一个excel文件的sheet名_頑張ろう!的博客-CSDN博客_vba遍历sheet页
周日快乐。