Excel VBA将图纸设置为活动图纸名称
我一直在ActiveWorkbook.Sheets(1)=wsData上遇到错误。用户将选择一个csv文件,查找匹配项,然后将csv文件匹配项放入第4列和第6列,并将单元格值放入此工作簿第11列和第12列(其他匹配项将偏移到下两列) 如何在不知道的情况下设置图纸名称?我认为这将工作,因为它在前面的线程中提到Excel VBA将图纸设置为活动图纸名称,excel,vba,Excel,Vba,我一直在ActiveWorkbook.Sheets(1)=wsData上遇到错误。用户将选择一个csv文件,查找匹配项,然后将csv文件匹配项放入第4列和第6列,并将单元格值放入此工作簿第11列和第12列(其他匹配项将偏移到下两列) 如何在不知道的情况下设置图纸名称?我认为这将工作,因为它在前面的线程中提到 Dim wb As Workbook Dim ws As Worksheet Dim cel1 As Range, cel2 As Range Dim mywb As S
Dim wb As Workbook
Dim ws As Worksheet
Dim cel1 As Range, cel2 As Range
Dim mywb As String, wsData As String
thiswb = ActiveWorkbook.Name
NewFile = Application.GetOpenFilename("Excel CSV Files (*.csv*),*.csv*", , "Select Report")
'Check if file selected
If NewFile = "False" Then
MsgBox "No file was selected. Please try again.", vbExclamation
GoTo WalkOut
End If
'Open wb
Workbooks.Open Filename:=NewFile, ReadOnly:=True
Application.ScreenUpdating = False
'Check for matching part and paste data to col k
With NewFile
importwb = ActiveWorkbook.Name
Set wsData = ActiveWorkbook.Sheets(1)
'Set wsData = ActiveWorkbook.Sheets(1)
For Each cel1 In ThisWorkbook.Sheets("Limited Data").UsedRange.Columns("H").Cells
Dim offs As Long: offs = 3 ' <-- Initial offset, will increase by 2 after each match
For Each cel2 In Workbooks(importwb).Worksheets(wsData).UsedRange.Columns("Z").Cells
If cel1.Value = cel2.Value Then
cel1.Offset(, offs).Value = cel2.Offset(, -22).Value ' <- wb2(d) to wb1(K)
cel1.Offset(, offs + 1).Value = cel2.Offset(, -20).Value ' <- wb2(f) to wb1(L)
offs = offs + 2 ' <-- now shift the destination column by 2 for next match
End If
Next
Next
End With
Workbooks(importwb).Close savechanges:=False
WalkOut:
End Sub
Dim wb As工作簿
将ws设置为工作表
调光cel1作为范围,cel2作为范围
Dim mywb作为字符串,wsData作为字符串
thiswb=ActiveWorkbook.Name
NewFile=Application.GetOpenFilename(“Excel CSV文件(*.CSV*),*.CSV*”,“选择报告”)
'检查是否选择了文件
如果NewFile=“False”,则
MsgBox“未选择任何文件。请重试。”,请使用感叹号
后藤罢工
如果结束
“开放wb
工作簿。打开文件名:=NewFile,只读:=True
Application.ScreenUpdating=False
'检查匹配零件并将数据粘贴到列k
使用新文件
importwb=ActiveWorkbook.Name
设置wsData=ActiveWorkbook.Sheets(1)
'Set wsData=ActiveWorkbook.Sheets(1)
对于此工作簿中的每个cel1.Sheets(“有限数据”)。使用范围列(“H”)单元格
长时变暗:offs=3'这大部分是猜测。看看这些变化,试着去理解它们。这样,您就可以自己更正代码,使其正常工作:
Sub Something()
Dim wb As Workbook
Dim ws As Worksheet
Dim newFile As String
newFile = Application.GetOpenFilename("Excel CSV Files (*.csv*),*.csv*", , "Select Sequenced APT Parts and Tools Report")
'Check if file selected
If newFile = "False" Then
MsgBox "No file was selected. Please try again.", vbExclamation
Exit Sub
End If
'Open wb
Set wb = Workbooks.Open(Filename:=newFile, ReadOnly:=True)
'Check for matching part and paste data to col k
Set ws = wb.Sheets(1)
For Each cel1 In ThisWorkbook.Sheets("Limited Warranty Data").UsedRange.Columns("H").Cells
Dim offs As Long: offs = 3 ' <-- Initial offset, will increase by 2 after each match
For Each cel2 In ws.UsedRange.Columns("Z").Cells
If cel1.Value = cel2.Value Then
cel1.Offset(, offs).Value = cel2.Offset(, -22).Value ' <- wb2(d) to wb1(K)
cel1.Offset(, offs + 1).Value = cel2.Offset(, -20).Value ' <- wb2(f) to wb1(L)
offs = offs + 2 ' <-- now shift the destination column by 2 for next match
End If
Next
Next
wb.Close savechanges:=False
End Sub
Sub Something()
将wb设置为工作簿
将ws设置为工作表
将新文件设置为字符串
newFile=Application.GetOpenFilename(“Excel CSV文件(*.CSV*),*.CSV*”,“选择已排序的APT零件和工具报告”)
'检查是否选择了文件
如果newFile=“False”,则
MsgBox“未选择任何文件。请重试。”,请使用感叹号
出口接头
如果结束
“开放wb
设置wb=Workbooks.Open(文件名:=newFile,只读:=True)
'检查匹配零件并将数据粘贴到列k
设置ws=wb.Sheets(1)
对于本工作簿中的每个cel1。工作表(“有限保修数据”)。使用表格列(“H”)单元格
Dim offs As Long:offs=3'我猜:Set wsData=ActiveWorkbook.Sheets(1)
不匹配:对于工作簿中的每个cel2(importwb)。工作表(wsData)。UsedRange.Columns(“Z”).cellso,如果我将wsData调暗为字符串,我会在Set wsData上获得所需的对象,那么在没有看到所有内容的情况下,很难解释代码。例如——我们看到wsData
,并假设您的意图是将其用作工作表
对象(注意变量名称开头的ws
),但很明显,以这种方式使用时,情况并非如此:工作表(wsData)
。请更新您的问题以包含完整代码。已添加完整代码