그래서 나는 많은 다른 장소에서 온라인으로 .activate
을 사용하지 말거나 명령을 읽었습니다. 문제는 내 프로그램이 무겁게 그들에 의존합니다..activate/.select를 사용하지 않고 프로그램 작성. VBA
먼저 배경을 알려 드리겠습니다. 나는 직업의 일부를 자동화하는 프로그램을 작성 중이다. 몇 달 전에이 특정 부분의 코드를 이미 작성했으며 완벽하게 작동했습니다. 그러나 이제는 작업에 사용되는 코드를 업데이트하려고 시도하면서 오류가 발생합니다. 즉 ActiveCell.PasteSpecial
의 인스턴스입니다. 문제를 일으키는 것이 .activate
이라는 것을 읽었습니다. 왜 이것이 문제를 일으키는 원인일까요? 주요 질문으로
나는 특정 셀에서 계좌 번호를 4 일
- 을 내 코드가 필요합니다.
- 외부 프로그램에서 복사 한 "sheet2"붙여 넣기 텍스트 날짜를 "A1"로 활성화하고 붙여 넣은 데이터를 기반으로 "sheet2"의 다른 셀에서 텍스트 데이터를 수집합니다.
- "sheet1"붙여 넣기 데이터를 수집하고 다음 계좌 번호를받습니다.
- Excel과 키보드 입력 만 허용하는 다른 프로그램간에 전환하십시오. 이 단계는 성가신 일이지만 도움이 필요한 단계는 아닙니다.
여기에 제가 지금까지 가지고있는 코드가 있습니다. .activate
없이 끝내려고 할 때 방금 잃어버린 단계의 대부분을 수행하는 방법을 안다.
Sub Macro1()
'
' Macro1 Macro
'
'
'find missing emails
Dim e As Range, Rang As Range
Set Rang = Range("A2:A100")
AppActivate "Microsoft Excel"
Worksheets("Email_List").Activate
Range("A1").Activate
For Each e In Rang
If Not IsEmpty(e.Value) = True Then
ActiveCell.Offset(1, 0).Activate
Sleep 700
ActiveCell.Offset(0, 3).Activate
Sleep 700
If IsEmpty(ActiveCell.Value) Then
ActiveCell.Offset(0, -3).Activate
Sleep 700
ActiveCell.Copy
Sleep 700
AppActivate "Other Program"
Sleep 500
SendKeys "~", True
Sleep 700
SendKeys "~", True
Sleep 700
SendKeys "~", True
Sleep 700
SendKeys "~", True
Sleep 700
SendKeys "~", True
Sleep 700
SendKeys "~", True
Sleep 700
SendKeys "~", True
Sleep 700
SendKeys "1", True
Sleep 700
SendKeys "~", True
Sleep 700
SendKeys "2", True
Sleep 700
SendKeys "~", True
Sleep 700
SendKeys "1", True
Sleep 700
SendKeys "~", True
Sleep 700
SendKeys "c ", True
Sleep 700
SendKeys "^v", True
Sleep 7001
SendKeys "^x", True
Sleep 7000
SendKeys "^a", True
Sleep 7000
SendKeys "^c", True
Sleep 7000
AppActivate "Microsoft Excel"
Sleep 500
Worksheets("Data").Activate
Cells.Activate
Cells.Delete
Range("A1").Activate
ActiveCell.PasteSpecial
Sleep 500
If Range("A24").Value = "CONF# NOT FOUND, PRESS <ENTER>" Then
Sleep 700
AppActivate "Other Program"
Sleep 500
SendKeys "~", True
Sleep 700
AppActivate "Microsoft Excel"
Sleep 500
Worksheets("Email_List").Activate
ElseIf Range("A24").Value = "ENTER RESERVATION NUMBER:" Then
Range("D24").Activate
ActiveCell.Value = "=LEFT(A6,6)"
ActiveCell.Copy
AppActivate "Other Program"
Sleep 500
SendKeys "^v", True
Sleep 700
SendKeys "30", True
Sleep 700
SendKeys "~", True
Sleep 700
SendKeys "^x", True
Sleep 700
SendKeys "^a", True
Sleep 700
SendKeys "^c", True
Sleep 700
AppActivate "Microsoft Excel"
Sleep 500
Worksheets("Data").Activate
Cells.Activate
Cells.Delete
Range("A1").Activate
ActiveCell.PasteSpecial
Sleep 500
If Range("A8").Value = "3. E-FOLIO" Then
Sleep 700
AppActivate "Other Program"
Sleep 500
SendKeys ("3")
Sleep 700
SendKeys ("~")
Sleep 700
SendKeys "^x", True
Sleep 700
SendKeys "^a", True
Sleep 700
SendKeys "^c", True
Sleep 700
AppActivate "Microsoft Excel"
Sleep 500
Worksheets("Data").Activate
Cells.Activate
Cells.Delete
Range("A1").Activate
ActiveCell.PasteSpecial
Sleep 700
Range("A21").Copy
Worksheets("Email_List").Activate
ActiveCell.Offset(0, 3).Activate
ActiveCell.PasteSpecial
ActiveCell.Offset(0, -3).Activate
End If
ElseIf Range("A2").Value = "===============================================================================" Then
AppActivate "Other Program"
Sleep 500
SendKeys "30", True
Sleep 700
SendKeys "~", True
Sleep 700
SendKeys "^x", True
Sleep 700
SendKeys "^a", True
Sleep 700
SendKeys "^c", True
Sleep 700
AppActivate "Microsoft Excel"
Sleep 500
Worksheets("Data").Activate
Cells.Activate
Cells.Delete
Range("A1").Activate
ActiveCell.PasteSpecial
Sleep 500
If Range("A8").Value = "3. E-FOLIO" Then
Sleep 700
AppActivate "Other Program"
Sleep 500
SendKeys ("3")
Sleep 700
SendKeys ("~")
Sleep 700
SendKeys "^x", True
Sleep 700
SendKeys "^a", True
Sleep 700
SendKeys "^c", True
Sleep 700
AppActivate "Microsoft Excel"
Sleep 500
Worksheets("Data").Activate
Cells.Activate
Cells.Delete
Range("A1").Activate
ActiveCell.PasteSpecial
Sleep 500
Range("A21").Copy
Worksheets("Email_List").Activate
ActiveCell.Offset(0, 3).Activate
ActiveCell.PasteSpecial
ActiveCell.Offset(0, -3).Activate
End If
End If
Else
ActiveCell.Offset(0, -3).Activate
End If
End If
Next e
End Sub
제공 할 수있는 도움이 있으면 대단히 감사하겠습니다. 여기
이 질문을 [코드 검토] (http://codereview.stackexchange.com) –
에 질문해야하므로이 질문을 주제 넘게 끝내기로했습니다.이 질문을 다시 게시 해 드리겠습니다. 나를 올바른 장소로 안내해 주셔서 감사합니다. – AutomateMyJob
CR에서 검토를 기다릴 수 없습니다. 상대방에게 뵙겠습니다. :-) –