2011-09-02 1 views
0

새로운 workbook을 만들 때 오류가 발생하는 것으로 밝혀졌습니다. 65536 행의 제한이있는 Excel 2003과의 호환성 모드에서 만들어졌습니다. 붙여 넣으려는 범위가 그보다 많은 행을 가지고 있습니다. 호환성 모드에서 nto 인 통합 문서를 어떻게 추가합니까 ??은 2007 년 Excel에서 오류를 일으 킵니다. 호환성 모드가 아닌 작업 북을 추가하려면 어떻게해야합니까?

For c = 1 To Round(z/x + 0.5) 
Rows("9:" & x).Select 
Selection.Copy 
Workbooks.Add 
Range("A9").Select 
ActiveSheet.Paste 
'Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
ActiveWindow.ActivateNext 
Selection.Delete 
Rows("1:8").Copy 
ActiveWindow.ActivatePrevious 
Range("A1").Select 
ActiveSheet.Paste 
'Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
Range("E3") = c 
    ActiveWorkbook.SaveAs Filename:=FileLocation2 & "\" & g & "-" & c _ 
, FileFormat:=xlNormal, Password:="", WriteResPassword:="", _ 
    ReadOnlyRecommended:=False, CreateBackup:=False 
ThisWorkbook.Save 
ActiveWindow.Close 
Next c 
+1

'이 코드는 csv 파일에서 각 행을 복사합니다. 행을 붙여 넣는 워크 북 (워크 북 추가) 열기. 돌아가서 해당 행을 삭제하십시오. 원본 파일의 모든 행이 없어 질 때까지이 작업을 계속하십시오.'매번 얼마나 많은 행과 행을 사용할 수 있는지 명확히 할 수 있습니까? 나는 당신이 무엇을하려고하는지 (나는 요점을 얻는다. 당신이 그 지점에 도달하기 위해 취하고있는 조치가 아니라) 완전히 명확하지 않다. 활성 시트 등을 추적하는 것이 어려울 수 있으므로 명시 적으로 이름을 지정하면 혼동을 줄 수 있습니다. – jonsca

+0

매번 행 9를 x 행의 행으로 가져 가려고 시도합니다. 다른 활성 파일에 붙여 넣은 다음 원래 파일에서 해당 행을 삭제합니다. x는 코드의 앞 부분에서 수행 된 일부 계산에 의해 선택됩니다. 수백 개의 파일을 거치므로 파일의 이름이 명시 적으로 지정되지 않습니다. 하나만 아니라 모든 파일에 대해이 작업을 폴더의 각 파일에 대해 수행합니다. 이것이 도움이 되길 바란다 – Chaostryder

+0

오류가 발생합니다. 새로운 workbook을 만들었습니다. workbook.add는 65536 행의 제한이있는 Excel 2003과의 호환성 모드에서 만들어졌습니다. 붙여 넣으려는 범위가 그보다 많은 행을 가지고 있습니다. 호환성 모드에서 nto 인 통합 문서를 어떻게 추가합니까 ?? – Chaostryder

답변

2

(매우 매우 느립니다) 나는 문제를 해결했다. 그것은 통합 문서를 추가하는 문제였습니다. .xlsx 등으로 저장하십시오. 그런 다음 아무 것도 붙여 넣기 전에 다시 엽니 다. 이것은 호환성 모드에서 새로 추가 된 통합 문서를 가져옵니다.

모두에게 감사드립니다.

+0

당신이 결국 문제를 해결했기 때문에 기쁩니다 :) – JMax

3

붙여 넣기 전에 각 셀을 선택하지 않고 시도 했습니까? (당신은 VBA에서 사용하기 전에 select에 모든 세포가 필요하지 않습니다) - 당신은 당신은 단지 값을 복사하려면 복사/붙여 넣기 할 필요가 없습니다 그래서

Dim ws as Worksheet 
Set ws = ActiveSheet 
For c = 1 To Round(z/x + 0.5) 
    Workbooks.Add 
    ActiveSheet.Range("A9").Value = ws.Rows("9:" & x).Value 'you shouldn't have to use ActiveSheet but i'll keep it to show the difference between ws and ActiveSheet 
    ActiveWindow.ActivateNext 'this is dangerous because you can't be sure which window will be activated next 
    Selection.Delete   'this is dangerous too. Can't you tell which row is this instead of using Selection? Is this macro user triggered? 
    Rows("1:8").Copy 
    ActiveWindow.ActivatePrevious 'same comment as above 
    Range("A1").Paste 
    Range("E3").Value = c 
    ActiveWorkbook.SaveAs Filename:=FileLocation2 & "\" & g & "-" & c _ 
    , FileFormat:=xlNormal, Password:="", WriteResPassword:="", _ 
     ReadOnlyRecommended:=False, CreateBackup:=False 
    ThisWorkbook.Save 
    ActiveWindow.Close 
Next c 
+0

ActiveSheet.Range ("A9"). Value = ws.Rows ("9 :"& x) .Value 'ActiveSheet를 사용할 필요는 없지만 ws와 ActiveSheet의 차이를 보여 주도록하겠습니다. – Chaostryder

+0

Please jonscas에 대한 내 대답을 참조하십시오. 귀하의 coe 주셔서 감사하지만 일단 위의 부분에 도달하면 나는 메모리에서 오류 # 7을 얻을 것이다. 이것에 대한 해결책이 있습니까? – Chaostryder

+0

디버깅 할 때'x' 값이 높습니까? – JMax

관련 문제