やりたいこと
Aのエクセルから2つの年月日を抜き出し、1年追加した後、
Bのエクセルに20XX年XX月XX日~20XX年XX月XX日と書き込みたいです。
【代入式】
kaishi1 = kaishibi
kaishi2 = datetime.Parse(kaishi1)
kaishi2 = datetime.parse(kaishi2.tostring(“yyyy/MM/dd”)).addYears(1)
kaishi3 = kaishi2.ToString(“D”,ci).Substring(0,10)
【変数】
名前:kaishibi 変数の型:GenericValue
名前:kaishi1 変数の型:GenericValue
名前:kaishi2 変数の型:DateTime
名前:kaishi3 変数の型:String
名前:ci 変数の型:CultureInfo
これで書き込めても、書き込める時とエラーが発生する時があります。
エラーが発生する時は月と日付の桁数が短いとエラーになるようです。
デバッグで確認すると桁数が短いとsyuuryoubi1と3の値が取れなくなってしまいます。(Substringを(0,9)にするとエラーは出ません)
日付と月が2桁の場合、20XX年XX月XX というようになってしまい”日”が書き込んだ際に無くなってしまいます。
Substring(0,10)の10を編集すればエラーが消えますが、違う年月日を抜き出したときに桁数が違うとエラーになります。
うまく説明できなくてすいません、何かいい方法はありますでしょうか。
エラー内容
ソース: stringへ代入
メッセージ: インデックスおよび長さは文字列内の場所を参照しなければなりません。
パラメーター名:length
例外の種類: System.ArgumentOutOfRangeException
IncludeExceptionDetailInFaults=true により作成された可能性のある ExceptionDetail の値:
System.ArgumentOutOfRangeException: インデックスおよび長さは文字列内の場所を参照しなければなりません。
パラメーター名:length
場所 System.String.Substring(Int32 startIndex, Int32 length)
場所 lambda_method(Closure , ActivityContext )
場所 Microsoft.VisualBasic.Activities.VisualBasicValue1.Execute(CodeActivityContext context) 場所 System.Activities.CodeActivity
1.InternalExecuteInResolutionContext(CodeActivityContext context)
場所 System.Activities.Runtime.ActivityExecutor.ExecuteInResolutionContext[T](ActivityInstance parentInstance, Activity1 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, IDictionary2 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)