Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA将图纸设置为活动图纸名称_Excel_Vba - Fatal编程技术网

Excel VBA将图纸设置为活动图纸名称

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

我一直在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 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)
。请更新您的问题以包含完整代码。已添加完整代码