Qlik Community

Qlik Japan

Qlik Communityの日本語のグループです。 Qlik製品に関する日本語資料のダウンロードや質問を日本語で投稿することができます。質問に関する回答は基本的に日本語で行われます。 日本語資料はグループにJoinしなくてもダウンロード可能ですが、 質問を投稿したい場合は、CommunityへのログインをしてグループにJoin Requestを行って下さい。 承認を受けた後に質問を投稿することが可能になります。 ログインはQlikIDを登録してください。

Highlighted
yumy1945
New Contributor II

エクセルの複数シートの取り込み方について

エクセルファイルの中に複数のシート毎にデータがあります。

このシート名に統一性がないため、一度エクセルマクロでシートを合成してからQlikviewに読み込ませていますが、

複数シートを一括してQlikviewに取り込むためのスクリプト文を作成するためにはどのようにしたらよいでしょうか?

アドバイスを頂ければと思います。

Tags (1)
7 Replies
Employee
Employee

Re: エクセルの複数シートの取り込み方について

 下記リンクに参考になるスクリプトがあります。

https://community.qlik.com/t5/Qlik-Japan/%E3%82%B7%E3%83%BC%E3%83%88%E5%90%8D%E3%82%92%E9%A0%85%E7%9...

 

yumy1945
New Contributor II

Re: エクセルの複数シートの取り込み方について

お世話になります。

回答頂きありがとうございます。エクセルファイル自体をODBCで読み込んでくるという

内容についてはできていたのですが、そこから全てのシートを一括で取り込むという

ところに苦戦をしております。

頂いた情報を元に再度TRYをしてみます。

kentaroWakamatsu
Contributor

Re: エクセルの複数シートの取り込み方について

解決済みかもしれませんが、拡張子が '.xls' のエクセルなら、以下の方法で可能です。

サンプルでは、シート名に関係なく、最大10シートまでデータを順に取り込み、シートが無くなった時に発生するエラー情報を利用して処理を停止させています。

10シート以上想定される場合は、 to の後の '10' を増やしてもらえれば大丈夫です。

 

サンプルスクリプト::::::::::::::::::

Set ErrorMode = 0;  //エラーモードを0にセットする事で、エラー発生によるスクリプトの停止を防ぎます

FOR i = 1 to 10
 LET v = '@'&$(i);
 Directory;
 Data:
 LOAD data
 FROM
 データファイル.xls
 (biff, embedded labels, table is $(v));

 IF ScriptError <> 0 then //エラーが発生したらforから抜けます
  EXIT For
 END If

NEXT

Set ErrorMode = 1; //エラーモードを1に戻します

yumy1945
New Contributor II

Re: エクセルの複数シートの取り込み方について

Wakamatsu様 回答頂きありがとうございます。 すでにODBC接続の手法で対応できましたが、頂いた内容でもTRYしてみようと思います。

ODBC接続でもファイルは拡張子xlsでやっておりますが、xlsxでは不可能なのでしょうか?

xlsxでも試してみましたが、うまくいきませんでした。

kentaroWakamatsu
Contributor

Re: エクセルの複数シートの取り込み方について

以前私も代理店経由でメーカーへ問合せした事がありますが、メーカーから.xlsxは同様の指定は出来ないとの回答をもらいましたので、おそらく無理だと思います。

yumy1945
New Contributor II

Re: エクセルの複数シートの取り込み方について

Wakamatsu様 ありがとうございました。

やはりxlsでしか対応していないのですね。

シートの複数読み込みについては全てのシート読み込みで都度ODBC接続しにいったり、セルの名前定義(印刷範囲等)が

あるとそれを削除しておかないとうまくいかない等の問題がありました。

(拡張子もxlsxからxlsに変更しないといけない)

効率的な観点で見るとそのままエクセル上のマクロでやった方が早いという結論になりました。

今後別の手法でうまくできないかというところも検証していきたいと思います。

nobukitakahashi
New Contributor II

Re: エクセルの複数シートの取り込み方について

私は配列にシート名を入れ、それを for each で取り出して load するようなスクリプトを組んでいます。ロードするたびに配列にシート名を追加して使っています。