Vba 使用GetOpenFilename";从其他工作表导入数据;对象范围的默认方法失败";

Vba 使用GetOpenFilename";从其他工作表导入数据;对象范围的默认方法失败";,vba,excel,Vba,Excel,我试图创建一个按钮,将数据从用户选择的文件(上个月)导入到用户选择的文件(本月) 我定义了变量,所有变量都能正常工作,直到达到实际的导入位,即我将第一个工作簿的范围设置为第二个工作簿的范围,我得到以下错误: 运行时错误“1004” 对象“范围”的方法“\u Default”失败 两个文档的行数相同。以下是适用的代码: Option Explicit Public Sub ImportData() Dim InputFilename As Variant Dim OutputFil

我试图创建一个按钮,将数据从用户选择的文件(上个月)导入到用户选择的文件(本月)

我定义了变量,所有变量都能正常工作,直到达到实际的导入位,即我将第一个工作簿的范围设置为第二个工作簿的范围,我得到以下错误:

运行时错误“1004”

对象“范围”的方法“\u Default”失败

两个文档的行数相同。以下是适用的代码:

Option Explicit
Public Sub ImportData()
    Dim InputFilename As Variant
    Dim OutputFilename As Variant
    Dim InputFile As Variant
    Dim InputSheet As Worksheet
    Dim OutputFile As Variant
    Dim OutputSheet As Worksheet

      'Copy data from user-defined sheet to current open sheet
      
      'User selects file to export data from
          InputFilename = Application.GetOpenFilename()
              Set InputFile = Workbooks.Open(InputFilename)
              Set InputSheet = InputFile.Sheets("Total Inventory")

      'User defines file to import into
          OutputFilename = Application.GetOpenFilename()
              Set OutputFile = Workbooks.Open(OutputFilename)
              Set OutputSheet = OutputFile.Sheets("Total Inventory")

Dim FirstRow As Integer
Dim LastRow As Integer
Dim UsedRange As Range
Dim LastColumn As Range

  'Find last Row of input file
    InputSheet.Activate
    FirstRow = 7
    LastRow = ActiveSheet.UsedRange.Rows.Count

 'Find last Column of input file
   Set LastColumn = InputSheet.Cells.Find(What:="*", _   
                                     after:=InputSheet.Cells(1), _
                                     Searchorder:=xlByColumns, _
                                     SearchDirection:=xlPrevious, _
                                     MatchCase:=False)_
                                     .Columns

OutputSheet.Range(OutputSheet.Cells(FirstRow, 2), _
    OutputSheet.Cells(LastRow, 2)).Value = _
InputSheet.Range(InputSheet.Cells(FirstRow, LastColumn), _
    InputSheet.Cells(LastRow, LastColumn)).Value

InputFile.Close

End Sub

任何想法都将不胜感激。

LastColumn
范围
并导致
单元格(第一行,LastColumn)
关于
单元格
->

尝试以下小修改:

  'Find last Column of input file
   Dim LastColumnNum As Integer
   Set LastColumn = InputSheet.Cells.Find(What:="*", _
                                     after:=InputSheet.Cells(1), _
                                     Searchorder:=xlByColumns, _
                                     SearchDirection:=xlPrevious, _
                                     MatchCase:=False)

    LastColumnNum = LastColumn.Column

OutputSheet.Range(OutputSheet.Cells(FirstRow, 2), _
    OutputSheet.Cells(LastRow, 2)).Value = _
InputSheet.Range(InputSheet.Cells(FirstRow, LastColumnNum), _
    InputSheet.Cells(LastRow, LastColumnNum)).Value
试试这个:

Option Explicit
Public Sub ImportData()
Dim InputFilename As String
Dim OutputFilename As String
Dim FirstRow As Integer
Dim LastRow As Integer
Dim LastColumn As Integer

Dim InputFile As Workbook
Dim OutputFile As Workbook
Dim OutputSheet As Worksheet
Dim InputSheet As Worksheet

Dim UsedRange As Range


'Copy data from user-defined sheet to current open sheet

'User selects file to export data from
InputFilename = Application.GetOpenFilename()
Set InputFile = Workbooks.Open(InputFilename)
Set InputSheet = InputFile.Sheets("Total Inventory")

'User defines file to import into
OutputFilename = Application.GetOpenFilename()
Set OutputFile = Workbooks.Open(OutputFilename)
Set OutputSheet = OutputFile.Sheets("Total Inventory")


'Find last Row of input file
FirstRow = 7
LastRow = InputSheet.Range("A" & Rows.Count).End(xlUp).Row

'Find last Column of input file
LastColumn = InputSheet.Cells(1, Columns.Count).End(xlToLeft).Column

'Copy the data
OutputSheet.Range(OutputSheet.Cells(FirstRow, 2), _
                    OutputSheet.Cells(LastRow, 2)).Value = _
InputSheet.Range(InputSheet.Cells(FirstRow, LastColumn), _
                    InputSheet.Cells(LastRow, LastColumn)).Value

InputFile.Close

End Sub

您在Cells()中输入了一个范围,以便它可以工作

不幸的是,这并不能解决问题。我仍然在“InputSheet.Range…”行中遇到错误。@Meringue90:检查当错误发生时,
LastRow
LastColumnNum
的值是多少神圣鲭鱼!成功了!非常感谢。太神了这非常接近,它不会给我错误,但是当我查看输出表的第一列时,它都是零。它实际上并不复制数据。