If: Arithmetic operation resulted in an overflow

RemoteException wrapping System.OverflowException: 산술 연산으로 인해 오버플로가 발생했습니다.
   위치: Microsoft.VisualBasic.CompilerServices.Conversions.ToInteger(String Value)
   위치: lambda_method(Closure ,ActivityContext )
   위치: Microsoft.VisualBasic.Activities.VisualBasicValue`1.Execute(CodeActivityContext context)
   위치: System.Activities.CodeActivity`1.InternalExecuteInResolutionContext(CodeActivityContext context)
   위치: System.Activities.Runtime.ActivityExecutor.ExecuteInResolutionContext[T](ActivityInstance parentInstance,
Activity`1 expressionActivity)
   위치: System.Activities.InArgument`1.TryPopulateValue(LocationEnvironment targetEnvironment,ActivityInstance activityInstance,ActivityExecutor executor)
   위치: System.Activities.RuntimeArgument.TryPopulateValue(LocationEnvironment targetEnvironment,ActivityInstance targetActivityInstance,ActivityExecutor executor,Object argumentValueOverride,Location resultLocation,Boolean skipFastPath)
   위치: System.Activities.ActivityInstance.InternalTryPopulateArgumentValueOrScheduleExpression(RuntimeArgument argument,
Int32 nextArgumentIndex,
ActivityExecutor executor,
IDictionary`2 argumentValueOverrides,
Location resultLocation,
Boolean isDynamicUpdate)
   위치: System.Activities.ActivityInstance.ResolveArguments(ActivityExecutor executor,
IDictionary`2 argumentValueOverrides,
Location resultLocation,
Int32 startIndex)
   위치: System.Activities.Runtime.ActivityExecutor.ExecuteActivityWorkItem.ExecuteBody(ActivityExecutor executor,
BookmarkManager bookmarkManager,
Location resultLocation)

 

해결방안 : 보아하니, Cint에서 에러난듯. 숫자가 인티져 범위를 넘어서서 연산이 불가한것임. 그런 경우에는 숫자 범위가 더 넓은 자료형으로 바꿔주면 됨. double 이라던가....

 

 

Excel Application Scope: Exception from HRESULT: 0x800A03EC

RemoteException wrapping System.Runtime.InteropServices.COMException: 예외가 발생한 HRESULT: 0x800A03EC
   위치: UiPath.Excel.WorkbookApplication.InitializeCurrentWorkbook(WorkbookArguments workbookArguments,
Workbooks workbooks)
   위치: UiPath.Excel.WorkbookApplication.Initialize(WorkbookArguments args)

 

결론 : 그냥 엑셀 프로그램을 종료하면 됨. 종료하는 김에 백그라운드 프로세스에서 엑셀 프로그램이 있는지도 확인해보고 지워주기.

 

https://forum.uipath.com/t/exception-from-hresult-0x800a03ec-issue/23273/5

 

Exception from HRESULT: 0x800A03EC issue

I was just trying to run a test case which has Excel application scope as one of the activity. Closing the background process of excel resolved the issue

forum.uipath.com

 

Kill Process : Encounter errors while trying to kill a process

 

아니 진짜 어이가 없네

Kill Process에서 에러가 나면 Kill Process는 왜 있는거냐

진짜 어이가 없네 참나 ㅋㅋ 뭐 어쩌라는겨 ㅋ

 

- 원인 : 인터넷 익스플로어 Process Name 이 잘못되었음.

- 해결방법 : Close Window 같은 액티비티를 이용해서 먼저 Kill 하려는 익스플로어에 셀렉터를 잡아서 ' ~ .exe ' 를 확인해주고 동일하게 Process Name 변경하기... 그런데 이건 솔직히 너무 하드 코딩이자나요. 그렇게 생각되신다면 걍 Kill Process에 Continue on Error 속성을 넣어주시면 됩니다. 참나

 

익스플로어 얘 뭐냐 언제는 iexplor고 언제는 explorer고 어느장단에 맞춰서 춤춰야하냐

흠 이거 하드코딩 안하고 해결하려면 어떡해야할까

 

1) UI Element 를 따와서 필요한 부분만 Split 해서 실행시킴

2) 백그라운드 프로세스를 가져와서 ' explo ' 만 매칭 시켜서 값 가져옴 (근데 원하는 값이 아닐수도 있음)

 

흠..... 와 대박 화병날것같아

Invoke VBA : Programmatic access to Visual Basic Project is not trusted

 

위의 에러는 invoke VBA 액티비티로 매크로 코드를 삽입했지만,

엑셀 프로그램 자체에서 외부 프로그램에서 작동하는 매크로를 실행하지 못했다는 에러문이다.

따라서, 이런 에러문이 났을 때는 엑셀 프로그램에서 외부 매크로를 사용할 수 있도록 설정해야한다.

 

[외부 매크로 사용 허용하는 방법]

 

엑셀 프로그램을 켠 후, 옵션에 들어갑니다.

 

[보안센터 - 보안 센터 설정] 으로 들어가주세요.

UiPath 라는 외부 프로그램이 Excel 프로그램을 통해서 매크로를 사용하려면, 보안상 허용을 받아야하는가 봅니다.

특정 프로그램을 허가한다는 내용보다는, 설정 하나만 바꿔주면 모든 외부 프로그램에 대하여서 매크로를 적용시킬 수 있도록 하는 보안 관련 기능인 것 같습니다.

 

 

[매크로 설정] 으로 들어가셔서 다음과 같이 설정하시고 저장하시면 됩니다.

 

 

 

 

모듈을 테스트 하던 중에 에러가 났다.

변수에 값이 들어가지 않아 연산을 할 수 없다는 에러였다.

그래서 Null 값이 들어가는 에러가 발생한다고 말씀드렸는데,

Nothing 이어도 그러냐고 하셔서 그렇다고는 했지만 머릿속에서는 그게 뭔 소리야 물음표 백만개를 그렸다.

그리고 깨닫게 되었다.

 

Null과 Nothing은 다른 개념이구나.........

 

* 참조 URL (다음의 글들을 참고 했습니다.)

http://blog.naver.com/PostView.nhn?blogId=rosa0189&logNo=60133624819

 

(101) "", Empty, Nothing, Null, vbNullChar, vbNullString, Missing 차이점 (엑셀 VBA 매크로)

"", Empty, Nothing, Null, vbNullChar, vbNullString 등의 차이점이 궁금하여 구글로 찾아보다가 ...

blog.naver.com

https://stackoverflow.com/questions/23130320/what-is-the-difference-between-vbnullstring-string-empty-and

 

What is the difference between vbNullString, String.Empty and ""?

All of these txtUsername.Text <> vbNullString txtUsername.Text <> String.Empty txtUsername.Text <> "" seem to return the same result. So, what's the difference between vbNullStr...

stackoverflow.com

 

 

 

간단히 요약해보자면 다음과 같다.

"" length 가 0인 값 (메모리 개념에서는 6 byte 할당됨. 값 존재)
Empty 객체는 존재하되, 초기화 하지 않은 상태. 변수는 존재하지만 아무것도 대입하지 않음.
Nothing 객제 참조를 삭제
Null 알 수 없는 값. 아무것도 참조 하지 않는 값.
vbNullChar 값이 0인 문자
vbNullString 메모리가 할당되지 않은 값이 0인 문자열
Missing 누락

 

 

 

일단 사실대로 말하자면, 누가봐도 닷넷에서 긁어왔당.

그리고 더 찾아보니까 더 많은 유형의 Exception이 존재했다.

각 Exception의 발생 조건에 관하여서는 각 링크로 가면 볼 수 있다.

 


 

Microsoft.Build.BuildEngine.InternalLoggerException

Microsoft.Build.BuildEngine.InvalidProjectFileException

Microsoft.Build.BuildEngine.InvalidToolsetDefinitionException

Microsoft.Build.BuildEngine.RemoteErrorException

Microsoft.Build.Exceptions.BuildAbortedException

Microsoft.Build.Exceptions.InternalLoggerException

Microsoft.Build.Exceptions.InvalidProjectFileException

Microsoft.Build.Exceptions.InvalidToolsetDefinitionException

Microsoft.Build.Framework.LoggerException

Microsoft.CSharp.RuntimeBinder.RuntimeBinderException

Microsoft.CSharp.RuntimeBinder.RuntimeBinderInternalCompilerException

Microsoft.Extensions.CommandLineUtils.CommandParsingException

Microsoft.Extensions.Options.OptionsValidationException

Microsoft.JScript.CmdLineException

Microsoft.JScript.ParserException

Microsoft.VisualBasic.ApplicationServices.CantStartSingleInstanceException

Microsoft.VisualBasic.ApplicationServices.NoStartupFormException

Microsoft.VisualBasic.Compatibility.VB6.WebClassContainingClassNotOptional

Microsoft.VisualBasic.Compatibility.VB6.WebClassCouldNotFindEvent

Microsoft.VisualBasic.Compatibility.VB6.WebClassNextItemCannotBeCurrentWebItem

Microsoft.VisualBasic.Compatibility.VB6.WebClassNextItemRespondNotFound

Microsoft.VisualBasic.Compatibility.VB6.WebClassUserWebClassNameNotOptional

Microsoft.VisualBasic.Compatibility.VB6.WebClassWebClassFileNameNotOptional

Microsoft.VisualBasic.Compatibility.VB6.WebClassWebItemNotValid

Microsoft.VisualBasic.Compatibility.VB6.WebItemAssociatedWebClassNotOptional

Microsoft.VisualBasic.Compatibility.VB6.WebItemClosingTagNotFound

Microsoft.VisualBasic.Compatibility.VB6.WebItemCouldNotLoadEmbeddedResource

Microsoft.VisualBasic.Compatibility.VB6.WebItemCouldNotLoadTemplateFile

Microsoft.VisualBasic.Compatibility.VB6.WebItemNameNotOptional

Microsoft.VisualBasic.Compatibility.VB6.WebItemNoTemplateSpecified

Microsoft.VisualBasic.Compatibility.VB6.WebItemTooManyNestedTags

Microsoft.VisualBasic.Compatibility.VB6.WebItemUnexpectedErrorReadingTemplateFile

Microsoft.VisualBasic.CompilerServices.IncompleteInitialization

Microsoft.VisualBasic.CompilerServices.InternalErrorException

Microsoft.VisualBasic.FileIO.MalformedLineException

Mono.Security.Interface.TlsException

System.AggregateException

System.ApplicationException

System.InvalidTimeZoneException

System.SystemException

System.TimeZoneNotFoundException

System.Activities.InvalidWorkflowException

System.Activities.VersionMismatchException

System.Activities.WorkflowApplicationException

System.Activities.DynamicUpdate.InstanceUpdateException

System.Activities.ExpressionParser.SourceExpressionException

System.Activities.Expressions.LambdaSerializationException

System.Activities.Presentation.Metadata.AttributeTableValidationException

System.Activities.Statements.WorkflowTerminatedException

System.AddIn.Hosting.AddInSegmentDirectoryNotFoundException

System.AddIn.Hosting.InvalidPipelineStoreException

System.ComponentModel.Composition.CompositionContractMismatchException

System.ComponentModel.Composition.CompositionException

System.ComponentModel.Composition.ImportCardinalityMismatchException

System.ComponentModel.Composition.Primitives.ComposablePartException

System.ComponentModel.DataAnnotations.ValidationException

System.ComponentModel.Design.ExceptionCollection

System.Composition.Hosting.CompositionFailedException

System.Configuration.SettingsPropertyIsReadOnlyException

System.Configuration.SettingsPropertyNotFoundException

System.Configuration.SettingsPropertyWrongTypeException

System.Configuration.Provider.ProviderException

System.Data.Linq.ChangeConflictException

System.Diagnostics.Eventing.Reader.EventLogException

System.Diagnostics.Tracing.EventSourceException

System.DirectoryServices.ActiveDirectory.ActiveDirectoryObjectExistsException

System.DirectoryServices.ActiveDirectory.ActiveDirectoryObjectNotFoundException

System.DirectoryServices.ActiveDirectory.ActiveDirectoryOperationException

System.DirectoryServices.ActiveDirectory.ActiveDirectoryServerDownException

System.DirectoryServices.Protocols.DirectoryException

System.IdentityModel.AsynchronousOperationException

System.IdentityModel.RequestException

System.IdentityModel.Metadata.MetadataSerializationException

System.IdentityModel.Protocols.WSTrust.WSTrustSerializationException

System.IdentityModel.Selectors.CardSpaceException

System.IdentityModel.Selectors.IdentityValidationException

System.IdentityModel.Selectors.PolicyValidationException

System.IdentityModel.Selectors.ServiceBusyException

System.IdentityModel.Selectors.ServiceNotStartedException

System.IdentityModel.Selectors.StsCommunicationException

System.IdentityModel.Selectors.UnsupportedPolicyOptionsException

System.IdentityModel.Selectors.UntrustedRecipientException

System.IdentityModel.Selectors.UserCancellationException

System.IdentityModel.Services.AsynchronousOperationException

System.IdentityModel.Services.FederatedAuthenticationSessionEndingException

System.IdentityModel.Services.FederationException

System.IdentityModel.Services.WSFederationMessageException

System.IO.IsolatedStorage.IsolatedStorageException

System.IO.Log.SequenceFullException

System.Management.Instrumentation.InstrumentationBaseException

System.Management.Instrumentation.WmiProviderInstallationException

System.Net.Http.HttpRequestException

System.Net.Mail.SmtpException

System.Net.PeerToPeer.PeerToPeerException

System.Reflection.Metadata.ImageFormatLimitationException

System.Runtime.AmbiguousImplementationException

System.Runtime.CompilerServices.RuntimeWrappedException

System.Runtime.DurableInstancing.InstancePersistenceException

System.Runtime.Remoting.MetadataServices.SUDSGeneratorException

System.Runtime.Remoting.MetadataServices.SUDSParserException

System.Runtime.Serialization.InvalidDataContractException

System.Security.RightsManagement.RightsManagementException

System.ServiceModel.Channels.InvalidChannelBindingException

System.Text.Json.JsonException

System.Threading.BarrierPostPhaseException

System.Threading.LockRecursionException

System.Threading.Tasks.TaskSchedulerException

System.Web.Query.Dynamic.ParseException

System.Web.Security.MembershipCreateUserException

System.Web.Security.MembershipPasswordException

System.Web.UI.ViewStateException

System.Web.UI.WebControls.EntityDataSourceValidationException

System.Web.UI.WebControls.LinqDataSourceValidationException

System.Windows.Automation.NoClickablePointException

System.Windows.Automation.ProxyAssemblyNotLoadedException

System.Windows.Controls.PrintDialogException

System.Windows.Forms.AxHost.InvalidActiveXStateException

System.Windows.Xps.XpsException

System.Windows.Xps.XpsWriterException

System.Workflow.Activities.Rules.RuleException

System.Workflow.ComponentModel.WorkflowTerminatedException

System.Workflow.ComponentModel.Compiler.WorkflowValidationFailedException

System.Workflow.ComponentModel.Serialization.WorkflowMarkupSerializationException

System.Workflow.Runtime.WorkflowOwnershipException

System.Xaml.XamlException

Windows.UI.Xaml.LayoutCycleException

Windows.UI.Xaml.Automation.ElementNotAvailableException

Windows.UI.Xaml.Automation.ElementNotEnabledException

Windows.UI.Xaml.Markup.XamlParseException

 

 

 

ref : https://docs.microsoft.com/ko-kr/dotnet/api/system.exception?view=netframework-4.6.1#definition

 

Exception 클래스 (System)

응용 프로그램을 실행하는 동안 발생하는 오류를 나타냅니다.Represents errors that occur during application execution.

docs.microsoft.com

 

 

엑셀이나 기타 응용 소프트웨어로 작업하다가 실행시키면

백그라운드 프로세스나, 현재 사용중인 소프트웨어의 충돌로 에러가 날 수 있는데,

이에 대하여 백그라운드 프로세스에 어떤 것이 있는지 확인하면 미리 예외 처리를 할 수 있다.

(예를 들어 엑셀이라던가... 엑셀이라던가... 엑셀이라던가...)

 


이런식으로 Process.~ 에서는 다양한 프로세스에 관련된 메서드를 확인할 수 있다.

Kill Process로 백그라운드 프로세스를 종료시키는 방법이 아니더라도

Throw 같은 액티비티로 에러를 주거나, Add Log Field 액티비티로 로그를 출력할수도 있다.

 

** Add Log Fieldhttps://forum.uipath.com/t/add-log-field/5496

 

Add log field

Hi All, Could anyone explain about add log field activity.Please don’t direct me to the activities guide. Regards, Rahul

forum.uipath.com


** 관련 URL

https://forum.uipath.com/t/check-if-excel-process-is-open-and-close/224619

 

Check if excel process is open and close

Hello everybody, I need to check if excel is currently open and if true, end it. I use get processes (output= “currentProcess”) to check all processes and then use an if activity with this condition: Process.ToString.Contains(“EXCEL”) Unfortunately

forum.uipath.com

 

 

데이터를 처리해줄때마다 한 줄 씩, 한 셀 씩 입력해야한다.

한번에 쓰려고 했었는데 그러면 중간에 어떤 데이터가 누락되었는지 알 수 없기 때문이다.

번거로워도 한 줄 씩 입력해줘야한다.

Write cell이나 Write Range는 세로 방향으로 써내려가기 때문에 못쓰고...

결국 가로로 한 셀씩 이동하면서 쓰는 것을 직접 짜게 되었다.

그러기 위해서는 컬럼의 인덱스, 즉 A B C D E... 같은 것들을 구해야하는데

그러기 위해서는 아스키코드를 활용해야한다.

 

출처 https://enter.tistory.com/49

 

보다시피 내가 사용해야하는 알파벳 대문자는 A 65부터 Z 90까지의 숫자이다.

포럼을 돌아다니다가 엄청난 플로우를 발견했다.

https://forum.uipath.com/t/write-data-horizontaly-in-excel/19413

 

Write data horizontaly in excel

Hu guys, can anybody solve my problem. I use extract data to extract a structured data of single column with 3 values. when i normally use write range it writes the data to A1 column What i want to do is to write that three entries in cell A1 B1 C1. i.e. h

forum.uipath.com

답변해주신 분이 쿨하게 플로우만 남기고 사라지셨다...

설명을 요구하는 질문자의 답글을 보면서 아 그러게 왜 이걸 답 안해주지 했는데 ㅋㅋ 결국 내가 이해함..

 

 

이 플로우는 결국 컬럼의 인덱스 문자를 얻기 위한 플로우이다.

ColumnName은 나중에 WriteCell에서 다음과 같이 응용될 수 있다.

ColumnName.Trim + "1".toString A1, B1, C1 ···
ColumnName.Trim + (oldDT.Rows.Count+1).toString 이 두가지 표현식은 내가 읽어온 DT의 마지막줄 다음부터 입력하는 표현식이다.
(Read 할때, Haeder가 있으면 +2, 없으면 +1)
ColumnName.Trim + (oldDT.Rows.Count+2).toString

 

1) modulo = (columnNumber-1) mod 26

modulo 는 아스키 코드로 표현하기위해 65에 더할 숫자를 의미한다.

"/26" 을 해준 이유는, 알파벳이 26개라서 그렇다.

A는 아스키코드 10진수로서 표현하면 65인데 65부터 1씩 더할수록 B, C, D, E ··· 점차 진행된다.

그 1씩 더하는 것을 표현한 것이 modulo 이다.

columnNumber가 3이면 65+2 이니까 C가 된다. 이처럼 알파벳 26가지의 숫자를 표현할 수 있는 조건을 생성한다.

 

2) columnName = Conver.ToChar(65+modulo).toString 

이런 식으로 표현해주면 숫자를 아스키코드로 인식하기 때문에 알파벳 대문자로 반환한다.

궁금해서 그냥 CChar(65+1) 을 해봤는데 그럼 오류가 난다.

아스키코드로 할건지, 아님 정말 문자열로 표현할건지 명확하게 해달라고 에러문이 뜬다.

 

3) Convert.ToInt32((columnNumber - modulo) / 26)

columnNumber를 0으로 초기화해주는 표현식이다.

 

 

뭐 이런 식으로 하면... 컬럼 인덱스를 VB 코드 없이 구할 수 있다.

포럼에 검색해보니 컬럼 인덱스를 구하기 위해서 VB 코드만 주는걸 보았는데...

꼭 그런 방법이 아니더라도 플로우로 구현할수도 있었다.

invoke Code나 Invoke VBA는 오류가 있을 수 있으니 ㅎㅎ

+ Recent posts