Skip to main content
Announcements
Global Transformation Awards! Applications are now open. Submit Entry
cancel
Showing results for 
Search instead for 
Did you mean: 
yumy1945
Contributor III
Contributor III

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

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

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

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

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

7 Replies
hka
Employee
Employee

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

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
Contributor III
Contributor III
Author

お世話になります。

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

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

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

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

kentaroWakamatsu
Creator II
Creator II

解決済みかもしれませんが、拡張子が '.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
Contributor III
Contributor III
Author

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

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

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

kentaroWakamatsu
Creator II
Creator II

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

yumy1945
Contributor III
Contributor III
Author

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

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

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

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

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

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

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

nobukitakahashi
Contributor II
Contributor II

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