我有一個名爲'EvaluationLog.xlsm
'的工作簿,我需要將第一個工作表中的特定單元格(不是整行)轉移到另一個名爲'IndicatorLog.xlsm
'位於同一目錄中。目標工作表也是第一個。我正在嘗試將宏寄存在'IndicatorLog
'工作簿中。應用程序定義的或對象定義的錯誤(1004) - Excel VBA
從源每行中的特定細胞,如果在列「O」的內容是「否」,或者如果「j」列的內容是「初始」僅被複制。實際的源數據從第8行開始,目標範圍也從第8行開始。
我有兩個問題。第一個是我在第一行嘗試複製單元格的時候遇到了這個錯誤'應用程序定義或對象定義的錯誤(1004)'。
這是該行:TargetSheet.Range("A" & NRow).Value = WorkBk.ActiveSheet.Range(「A」 & i).Value
的第二個問題是,當我已經有源工作簿打開,我得到一個關於試圖再次打開它,即使我有一個功能,儘量避免警告。 :(
我分配宏表單按鈕任何幫助,將不勝感激:)
這裏有兩個Excel文件:!
下面的代碼:
Sub MergeFromLog()
Dim TargetSheet As Worksheet
Dim NRow As Long
Dim SourceFileName As String
Dim WorkBk As Workbook
Dim LastRow As Integer, i As Integer, erow As Integer
' Set destination file.
Set TargetSheet = ActiveWorkbook.Worksheets(1)
' Set source file.
SourceFileName = ActiveWorkbook.Path & "\2015-2016 Evaluation Log.xlsm"
' NRow keeps track of where to insert new rows in the destination workbook.
NRow = 8
' Open the source workbook in the folder
If CheckFileIsOpen(SourceFileName) = False Then
Set WorkBk = Workbooks.Open(SourceFileName)
Else
Set WorkBk = Workbooks(SourceFileName)
End If
LastRow = WorkBk.ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row
For i = 8 To LastRow
If WorkBk.ActiveSheet.Range("O" & i) = "No" Or WorkBk.ActiveSheet.Range("J" & i) = "Initial" Then
' Copy Student Name
TargetSheet.Range("A" & NRow).Value = WorkBk.ActiveSheet.Range(「A」 & i).Value
' Copy DOB
TargetSheet.Range("B" & NRow).Value = WorkBk.ActiveSheet.Range(「C」 & i).Value
' Copy ID#
TargetSheet.Range("C" & NRow).Value = WorkBk.ActiveSheet.Range(「D」 & i).Value
' Copy Consent Day
TargetSheet.Range("D" & NRow).Value = WorkBk.ActiveSheet.Range(「L」 & i).Value
' Copy Report Day
TargetSheet.Range("E" & NRow).Value = WorkBk.ActiveSheet.Range(「N」 & i).Value
' Copy FIE within District Timelines?
TargetSheet.Range("F" & NRow).Value = WorkBk.ActiveSheet.Range(「O」 & i).Value
' Copy Qualified?
TargetSheet.Range("H" & NRow).Value = WorkBk.ActiveSheet.Range(「A」 & i).Value
' Copy Primary Eligibility
TargetSheet.Range("I" & NRow).Value = WorkBk.ActiveSheet.Range(「U」 & i).Value
' Copy ARD Date
TargetSheet.Range("J" & NRow).Value = WorkBk.ActiveSheet.Range(「R」 & i).Value
' Copy ARD within District Timelines?
TargetSheet.Range("K" & NRow).Value = WorkBk.ActiveSheet.Range(「S」 & i).Value
' Copy Ethnicity
TargetSheet.Range("M" & NRow).Value = WorkBk.ActiveSheet.Range(「F」 & i).Value
' Copy Hisp?
TargetSheet.Range("N" & NRow).Value = WorkBk.ActiveSheet.Range(「G」 & i).Value
' Copy Diag/LSSP
TargetSheet.Range("O" & NRow).Value = WorkBk.ActiveSheet.Range(「X」 & i).Value
NRow = NRow + 1
End If
Next i
End Sub
Function CheckFileIsOpen(chkSumfile As String) As Boolean
On Error Resume Next
CheckFileIsOpen = UCase(Workbooks(chkSumfile).Name) Like UCase(chkSumfile)
On Error GoTo 0
End Function
我不認爲'CheckFileIsOpen'會做你想做的事。試試[這](http://stackoverflow.com/questions/9373082/detect-whether-excel-workbook-is-already-open-using-vba),也許。 –
嘗試修復您的語法'「A」' - 應該''A「'應該修復您的錯誤(1004) – 0m3r
」智能報價「不能與VBA兼容:) –