EXCEL関数や数式が含まれている文書の使用に関する件

306 views
Skip to first unread message

Kpaper

unread,
Feb 20, 2017, 9:27:43 PM2/20/17
to utag...@googlegroups.com
質問の前によくある質問や、過去のQ&Aや古いQ&Aに、同様の質問がないかご確認ください。

宴のバージョン:2.6.15
Unityのバージョン:5.5.0f3 (64bit)

-----------

こんにちは。はじめまして。
Excelファイルを扱う際にについての質問です。

僕はデータを書き込むとき、エクセルの他のセル値を参照するか、エクセルの関数や数式を使用して文書を作成します。

このように作成されたデータは、UTAGEに入力をしたときに問題が生じます。
おそらく「参照、関数、数式」これらの問題があるのでしょう。

一度は、文書の作成が終わった後、すべての値に変換して保存することで作業を進めていますが、
頻繁に修正とテストがある場合、ちょっと面倒なので少し困難です。

この場合には良い解決策があるか、相談したいと思います。

一度は、今回のゲームの制作完成時点までのバージョン2を使用しようと思いますが、
もしバージョン3では、修正されたものでしょうか?その場合すぐにアップグレードしたいと思います。

では、ありがとうございます。

マッドネスラボ

unread,
Feb 20, 2017, 11:57:40 PM2/20/17
to 宴ユーザーグループ
この方法を使ってもダメでしょうか?
シート自体をすべてコメントアウトする場合は、シート名の先頭に「#」を記述してください。
http://madnesslabo.net/utage/?page_id=8766#i-5


Kpaper

unread,
Feb 21, 2017, 12:25:41 AM2/21/17
to utag...@googlegroups.com


迅速な回答ありがとうございます!

申し訳ありません。僕の説明が少し不足していたようです。

#を付けたコメントで解決することができる方法はありません。


もう少し詳しくお聞きましょう。

お手数ですがよろしくお願いします。

僕のサンプルExcelファイルを一つ作ります。(添付しました。)

最初のインストール時の空のファイルへの参照を入れたサンプルファイルです。


添付した画像を確認して見れば、

エクセル上では他の#シートのキャラクターの名前を参照しています。

エクセル内では、その参照値の結果が正しく表示されているが、

UTAGEの中で参照数式がそのまま表示されている場合です。


ここで、式の代わりに、Excelで見られるのと同じ結果が表示さたらと思います。

(Excelファイル内の数式はそのまま差し置い状態で、結果の値が表示されたらと思います。)


もちろん、必ずキャラクターの名前をあんな形で使わなければなら必要はありませんが、

多くのエクセルシートを管理する際に、

他の文書の内容を参照する形で使用すると、非常に便利です。

(もちろん、作業者ごとに違うでしょう^^;)




<ゲームシーン in Unity3D>


<Character Sheet>



<#CharNameTest Sheet>



QuestionSample.xls

マッドネスラボ

unread,
Feb 21, 2017, 5:19:13 AM2/21/17
to utag...@googlegroups.com
修正してみました。これでどうでしょうか。
2.6.15の宴に添付したパッケージファイルを適用してみてください。

簡単なデータでテストしましたので、問題があるようでしたらご連絡ください。
問題ないようでしたら、宴3の今後のバージョンアップに入れて行こうと思うのですが、
宴2ではバージョンアップを止めてしまっているので、宴2を使う場合はこちらの修正を適用してから使ってみてください。




2.6.15pExcelMacro.unitypackage

Kpaper

unread,
Feb 21, 2017, 7:38:47 AM2/21/17
to utag...@googlegroups.com
こんなに早く修正してくださって、本当にありがとうございます。

先に作ったプロジェクトでテストしてみました。問題なさそうですね。
ただし、パッケージを適用した後に、エクセルファイルを再インポートする必要がありますね。
(単純にエクセルファイルを再セーブしてアセット更新)

これで解決になりました。
今週の作業からメインプロジェクトにも、このパッケージを適用して試した後、もし問題が起こる場合には、ご報告させていただきます。

------------------------

リファレンスと質問と回答から多くの助けを受けましたが、
質問を上げるのは初めてでした。

このように修正作業をしてくれるだろうとは思っていなかったので、本当に嬉しいです。

現在作業しているゲームの制作が終わったら、次のゲームは、宴3に更新しようと考えています。
まだアップグレードを購入していませんが、数日内と思いますね。
ありがとうございます。今後もよろしくお願いいたします。
(ツイッターもフォローしておいた状態で、いつも心で応援しています。:))
Message has been deleted

Kpaper

unread,
Feb 26, 2017, 3:31:31 AM2/26/17
to 宴ユーザーグループ
現在作業中のゲームに適用したところ、以下のようなエラーが発生しています。
ジャンプ先が問題があるようなログですが、
作ってくださったパッケージを適用していない状態では、問題なく動作しています。

お手数ですがご確認をお願いいたします。


NotFoundScnarioLabel
UnityEngine.Debug:LogError(Object)
Utage.AdvDataManager:IsLoadEndScenarioLabel(String) (at Assets/Utage/Scripts/ADV/DataManager/AdvDataManager.cs:282)
Utage.<CoStartScenario>c__Iterator0:MoveNext() (at Assets/Utage/Scripts/ADV/Scenario/AdvScenarioPlayer.cs:268)
UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)

Kpaper

unread,
Feb 26, 2017, 3:57:37 AM2/26/17
to 宴ユーザーグループ
これも関係ありそうですので追加します。


InvalidOperationException: Cannot get a text value from a numeric cell
NPOI.HSSF.UserModel.HSSFCell.get_RichStringCellValue ()
NPOI.HSSF.UserModel.HSSFCell.get_StringCellValue ()
Utage.ExcelParser.ReadSheet (ISheet sheet, System.String path, Char ignoreSheetMark) (at Assets/Utage/Editor/Scripts/ExcelParser.cs:89)
Utage.ExcelParser.ReadBook (IWorkbook book, System.String path, Char ignoreSheetMark, Utage.StringGridDictionary gridDictionary) (at Assets/Utage/Editor/Scripts/ExcelParser.cs:60)
Utage.ExcelParser.Read (System.String path, Char ignoreSheetMark) (at Assets/Utage/Editor/Scripts/ExcelParser.cs:43)
Utage.AdvExcelImporter.ReadExcels (System.Collections.Generic.List`1 pathList) (at Assets/Utage/Editor/Scripts/Menu/ScenarioData/AdvExcelImporter.cs:96)
Utage.AdvExcelImporter.ImportChapter (System.String chapterName, System.Collections.Generic.List`1 pathList, Boolean checkTextCount) (at Assets/Utage/Editor/Scripts/Menu/ScenarioData/AdvExcelImporter.cs:70)
Utage.AdvExcelImporter+<Import>c__AnonStorey0.<>m__0 (Utage.ChapterData x) (at Assets/Utage/Editor/Scripts/Menu/ScenarioData/AdvExcelImporter.cs:58)
System.Collections.Generic.List`1[Utage.AdvScenarioDataProject+ChapterData].ForEach (System.Action`1 action) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Collections.Generic/List.cs:361)
Utage.AdvExcelImporter.Import (Utage.AdvScenarioDataProject project) (at Assets/Utage/Editor/Scripts/Menu/ScenarioData/AdvExcelImporter.cs:58)
Utage.AdvScenarioDataBuilderWindow.Import (System.String[] importedAssets) (at Assets/Utage/Editor/Scripts/Menu/ScenarioData/AdvScenarioDataBuilderWindow.cs:112)
Utage.AdvExcelImporter.OnPostprocessAllAssets (System.String[] importedAssets, System.String[] deletedAssets, System.String[] movedAssets, System.String[] movedFromAssetPaths) (at Assets/Utage/Editor/Scripts/Menu/ScenarioData/AdvExcelImporter.cs:23)
System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MonoMethod.cs:222)
Rethrow as TargetInvocationException: Exception has been thrown by the target of an invocation.
System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MonoMethod.cs:232)
System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MethodBase.cs:115)
UnityEditor.AssetPostprocessingInternal.PostprocessAllAssets (System.String[] importedAssets, System.String[] addedAssets, System.String[] deletedAssets, System.String[] movedAssets, System.String[] movedFromPathAssets) (at /Users/builduser/buildslave/unity/build/Editor/Mono/AssetPostprocessor.cs:27)

マッドネスラボ

unread,
Feb 26, 2017, 8:43:37 PM2/26/17
to 宴ユーザーグループ
修正しました。添付したパッケージファイルを使ってご確認お願いします。

もし、上記の修正でも修正されないようでしたら、下記のページのリンク先の再現可能なプロジェクトを送信お願いします。


FixExcelFunction.unitypackage

Kpaper

unread,
Feb 26, 2017, 10:17:39 PM2/26/17
to 宴ユーザーグループ
こんにちは。
回答ありがとうございます。
早速、修正されたパッケージをメインプロジェクトにインポートしてみました。

コード部分の修正を確認しながら慎重に適用。
実行がない問題は治りました。

ありがとうございます。

これからは適用した状態でプロジェクトの進めができるようです。

---------

少しもっとテストしてみると、あいまいな部分が一つ残っていますね。
この部分は、実行エラーの件ではないので、どのような形で伝えか悩んで、ここに残します。

エクセルの機能を使って「2」を出力するテストです、
簡単な関数を使用して、いくつかのテストみました。

//これは、「1 + 1」で出力されます。 - > FAIL数式が出力されます。
= 1 + 1

//これは、「SUM(1,1)」に出力されます。 - > FAILエクセル関数が出力されます。
= SUM(1,1)

//これは「abs2」に出力されます。 - > PASS
= "abs"&1 + 1

//エクセル関数でテキストに変換し出力してみると、通常されます。
//出力結果:2 - > PASS
= TEXT(1 + 1、 "#")

上記テストの結果のように、
いくつかの数式や関数がそのままで出てくる場合がありますが、
エクセルのTEXT()でラップして使用すると、正しい結果が出ますので、
現在の状態でも何とか仕事はできそうです。

本当にありがとうございます。

マッドネスラボ

unread,
Feb 27, 2017, 3:56:27 AM2/27/17
to 宴ユーザーグループ
ご報告ありがとうございます。
NPOIというエクセル解析用のライブラリを使っているのですが、数式や関数の解析が不安定なのかもしれません。
TEXT()でラップするという解決策の提示をいただきまして、こちらこそありがとうございます。

Kpaper

unread,
Feb 27, 2017, 6:04:26 AM2/27/17
to 宴ユーザーグループ
なるほど、NPOIですね。そうかもしれません。
それでは、以降に他の質問がある場合はまたご報告します。
お疲れ様でした。:)
Reply all
Reply to author
Forward
0 new messages