Free Trial

ディスカッション

答えを見つけ、質問し、Alteryx の専門知識を共有してください。

書式付きExcelファイルに"Overwrite Sheet or Range"したのですが、一行目はoverwriteされるものの、二行目以下が書き込まれません。

hideyuki_ito
アトム

あらかじめ書式を設定したExcelファイルのテンプレートをcommandツールでコピーし、コピー&renameしたExcelファイルにデータを書き込むことを考えていますが、一行目のレコードしか書き込まれません。どこか設定を誤っているのか、ご教示いただければ幸いです。

 

まず、Output Data toolでは下記の設定をしています。出力ファイル名は前段のformuraツールで生成します。

 

hideyuki_ito_1-1677556120266.png

 

OutputFileName columnには、前段のFormuraツールで、下記のような指定をしています。A1:ZZ65535は多めの矩形範囲を指定しており、上書きするデータはこの範囲に収まります。

 

hideyuki_ito_2-1677556195160.png

 

Output Data toolのメッセージには下記が表示されていて、35行のレコードが書き込まれたように見えるのですが、書き込まれたExcelファイルを開けてみると1行目しか書き込まれていません。

 

35 records were written to "C:\Users\UUU\DDD\FFF.xlsx" (Parameters$A1:ZZ65535)

10件の返信10
gawa
15 - Aurora
15 - Aurora

@hideyuki_ito さん

Output Tool直前までは以下のようなデータが35行きているけれど

Field1Field2Field3
1abcX
2defY
3ghiZ

 

Excelを開くと👇最初の行しか書き込まれてない、という感じでしょうか?エクセルの2行目以降にセルロックかかっていたりするのでしょうかね・・・?

Field1Field2Field3
1abcX

 

 

差し支えない範囲でワークフローのスクリーンショットなどの追加情報いただけると、もう少し具体的にわかりそうな気がします。

AkimasaKajitani
17 - Castor
17 - Castor

@hideyuki_ito さん

 

Excelの範囲指定書き込み(書式保持)は、Designerのバージョンが古いとおかしな動きをしたりするので、新しいDesignerを使うことを推奨します(今回バージョンが書かれていないので判断がつかず・・・)。

 

あと、アクションツールでファイルパスを書き換えているように見えますが、意図しない別のファイルに書き込まれていないことを確認ください。ファイルパスを結合する際は、FileAddPaths関数を使うのが安全です。

 

設定については正常に見えます(フォーミュラツールの計算式については、実際の値がわからないのでなんとも言い難いです)。

Yoshiro_Fujimori
オーロラ

ご質問の趣旨に合っているかわかりませんが;

 

事前に準備したExcelのテンプレートを使うことにこだわらないのでしたら、

最初からRenderツールでAlteryx内でExcelファイルを生成する方法を試してみてはいかがでしょうか。

 

RenderツールでExcelシートの体裁を整えるのは少し面倒ですが、

Output Dataツールのややこしい問題を回避することはできると思います。

 

参考:Alteryx - Using the Render Tool to Format Excel Files - YouTube

hideyuki_ito
アトム

ありがとうございます。

はい、ご推察の通りの状況でした。


原因は不明なのですが、Templateをスクラッチで再度作成したところ、所望の機能を果たすことができました。

ただ、新しい課題が出現しまして、Templateは3枚のシートで構成されていて、うち一枚のシートに書式を設定しています。その関係で下記の動作を行うように、 Block Until Done ツールを使用しました。

1. Templateをコピー&リネームする
2. 1のファイルのsheet1を上書きする
3. 1のファイルのsheet2を上書きする
4. 1のファイルのsheet3を上書きする(書式付きシート)

2-4の順は問いません。

上記実現するために下記のような形のワークフローを書いたのですが、sheet3の書式が消えていました。Block Untile Done, Unionツールの使い方が間違っているのでしょうか?


重ねての問い合わせとなり恐縮ですが、ご教示いただけますと幸いです。

hideyuki_ito_0-1677656282398.png

 



hideyuki_ito
アトム

ちなみに使用しているAlteryx VersionはVersion: 2020.4.5.12471になります。

hideyuki_ito
アトム

度々すみません。

Unionツールを使って、filecopyをするcommandツールと出力ツールの順序関係を付ければ下記のワークフローでも問題ないように思うのですが、うまくいきません。

hideyuki_ito_0-1677659521691.png

 

AkimasaKajitani
17 - Castor
17 - Castor

@hideyuki_ito さん

 

AMP Engineはオンにされてますか? AMP Engineをオンにしていますと、お見せいただいているワークフローはおそらくうまく動かないと思います。AMP Engineがオンの場合は、Until Block Doneツールはかなり上流の方に配置する必要があります。AMPオフなら動きそうに思います(が、うまくいかないようなケースもあります)。

 

ちなみに、ユニオンツールを使った方法は、設定で#1→#2としているということでしょうか?いずれにしても難しいように思います。

 

AMPオフでもうまくいかない場合はまた別の解決策となります(CReW MacroのParallel Block Until Doneを使うか、カウントツールとフィールド不可ツールを使っていく必要があります)。

 

 

AkimasaKajitani
17 - Castor
17 - Castor

@hideyuki_ito さん

 

すみません、勢い余って書いてしまいましたが、そもそもエラーが出ているわけではない、ということであれば、基本的にはBlockUntilDoneツールの使い方ではないですね・・・。

 

20.4も公式的にはサポート切れしているので、新しいバージョンへの入れ替えを検討されても良いかもしれませんが、ちょっと原因がわからない感じです・・・。

 

感覚的には、データ出力ツールすべて「上書き時に書式設定を保持する」にしないといけないのではないかと思いますが、いかがでしょうか?

 

gawa
15 - Aurora
15 - Aurora

@hideyuki_ito さん

私の方で、書式設定されてる/されてないシートが混在したエクセルの、各々のシートにデータを書き込むWFで動作確認してみましたが、書式設定されているシートは、ちゃんと書式が保持されており、問題を再現できませんでした。Ver2022.3です。

 

同じエクセルの別のシートに書き込みを行う場合は、下図のようにブロックツールをいれて明示的に順番づけしてあげるのが無難です。というか、こうしないと”アクセスできませんでした”というエラーが出ました。

 

ご質問の内容から若干脱線するかもですが、テンプレのエクセルがある場合、私はブロブツールを使うようにしています。Commandですと、コードの書き間違いで重要なファイルが消えるのが怖いのと、管理者権限がないと動かない等、色々面倒なので。

 

一応ご参考までに、下記WFのyxzpを添付しますので、こちらで問題が再現できるかどうかお試しいただけると良いかと思われます。Book1.xlsxというテンプレファイルをtest.xlsxとしてコピーし、そのシート3枚(3枚目のみ書式設定あり&書式設定保持で書き込み)に書き込むWFです。これでも問題でるようなら、Versionの問題かもしれません。

gawa_0-1677667137173.png

3枚目は👇こんな風に、書式保持されるはずです

gawa_1-1677667674112.png