初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2017-04-16 12:53:18

kobayashi552
Member

Excelファイルの取り込みについて

win8 ver11です。

スクリプトでExcelファイルを取込む流れを自動化しているのですが、実はこのファイルは事情があってweb形式で保存されているからなのか
ファイルメーカーに取込めないため(エラーが起きます)一旦、Excelで開いて2003ブック形式(.xls)に保存し直してから作業...と余計な
作業を1つしなければなりません。

何か回避策などありましたら、ご指導ください。
よろしくお願いします。

Offline

#2 2017-04-17 19:42:14

wader
Member

Re: Excelファイルの取り込みについて

サポートしている形式しかインポートできません。
Excel側でマクロを作るとか、標準はxls形式にしておき必要なときにweb形式で保存するとか、では。

Offline

#3 2017-04-17 22:55:36

Shin
Member

Re: Excelファイルの取り込みについて

その html ファイルを解析すれば良いかも。
欲しいテーブル内のデータは、<table> タグの中に保存してあるはずですので、それをスタイルシートを書いて読み込むか、テキスト解析してデータを取り込む様な事をしても良いと思いますよ。<table> タグの中は、タグのついた単純なデータの羅列ですので、中間テーブルを作れば、そんなに難しく無いです。

Offline

#4 2017-04-18 09:52:12

qb_dp
Member

Re: Excelファイルの取り込みについて

以下のPowerShellを実行すれば、

「一旦、Excelで開いて2003ブック形式(.xls)に保存」この作業を自動で行なえます。

$F = 'ファイルパス\Book1.mht'
$C = 'ファイルパス\Book1.xlsx'
$E = New-Object -ComObject Excel.Application
$E.Workbooks.open($F)
$E.DisplayAlerts = $false
$W = $E.Worksheets.Item(1)
$W.SaveAs($C,51)
$E.Workbooks.Close()
$E.Quit()

#.xlsx=51,.xls=56

参考:
https://susumushibata.wordpress.com/201 … %E6%8F%9B/
https://excwlvba.blogspot.jp/2013/04/xlfileformat.html

Offline

#5 2017-04-24 09:54:53

kobayashi552
Member

Re: Excelファイルの取り込みについて

qb_dpさん、ありがとうございます。

PowerShellはどのPCにも入っているのでしょうか。

使ったことがないので、もう少し詳しく手順をご説明頂けると
たすかります。

よろしくお願いいたします。

Offline

#6 2017-04-24 18:19:16

qb_dp
Member

Re: Excelファイルの取り込みについて

PowerShellは、Windows 7 以降、標準搭載です。

FileMakerから実行するには、

$F = 'ファイルパス\Book1.mht';
$C = 'ファイルパス\Book1.xlsx';
$E = New-Object -ComObject Excel.Application;
$E.Workbooks.open($F);
$E.DisplayAlerts = $false;
$W = $E.Worksheets.Item(1);
$W.SaveAs($C,51);
$E.Workbooks.Close();
$E.Quit();

上記スクリプトを、フィールド名:Script に記述して、以下の様なスクリプトで実行。

変数を設定 [$Script; 値:Quote ( Substitute (フィールド名Script ; ¶ ; "" ) )]
Event を送信 [「aevt」; 「odoc」; "powershell -Command " & $Script ]

Offline

#7 2017-05-31 14:10:05

kobayashi552
Member

Re: Excelファイルの取り込みについて

qb_dpさん、大変遅くなりましたが、検証してみました。
結果、躓いています。

引き続きご指導願えればと存じます。

>上記スクリプトを、フィールド名:Script に記述して、

ファイルパスを事前に取得する必要がありますので、ここはスクリプトのフィールド設定で
"$F = '" & $InptFNamePath & "';¶" &
"$C = '" & $InptFNamePath & "';¶" &
"$E = New-Object -ComObject Excel.Application;¶" &
"$E.Workbooks.open($F);¶" &
"$E.DisplayAlerts = $false;¶" &
"$W = $E.Worksheets.Item(1);¶" &
"$W.SaveAs($C,56);¶" &
"$E.Workbooks.Close();¶" &
"$E.Quit();"
とした上で、
変数を設定 [$Script; 値:Quote ( Substitute (フィールド名Script ; ¶ ; "" ) )]
Event を送信 [「aevt」; 「odoc」; "powershell -Command " & $Script ]
としていますが、当該ファイルはまだweb形式のまま。

Excelファイルは拡張子は.xlsですが、中身がweb形式で保存されたもののようで、
.mhtのファイルではないこと、また、$F、$Cが同じファイル名というのが気になりますが
いかがでしょうか。

また、取込むファイルがxlsxとxlsとバラバラなのでこの辺りの分岐も必要に
なりそうです。

よろしくお願いします。

Offline

#8 2017-05-31 17:30:22

kobayashi552
Member

Re: Excelファイルの取り込みについて

いろいろと調整しているうちに、動くようになりました。おそらく単なる誤入力です。
お騒がせしました、また、ありがとうございました。

ただ、Event を送信後、powershellが動作しているうちに、FMでは次のステップに進んでしまうので
時間差があります。当方の環境ですと3秒位なのでスクリプトの一時停止で何とかなりそうですが、
環境が変わった場合でも対応できるように、Event の送信の完了を待つことはできなのでしょうか。

Offline

#9 2017-06-01 08:50:33

qb_dp
Member

Re: Excelファイルの取り込みについて

FileMaker 12 以降の場合は、fmpプロトコル を使用して、待つような事が出来ますが、
http://qbxxdp.blogspot.jp/2017/04/filem … e-dir.html

FileMaker 11では、使えません。

プラグインを使用すれば、PowerShellの実行を待つことが出来ます。

ScriptMakerPS | FileMaker Plugin for Windows :
https://sites.google.com/site/scriptmakerps/home

上記プラグインで

変数を設定 [$er; 値:SMPS_Exe( PowerShell Script )]

とすれば、PowerShellの処理が待てます。

Offline

#10 2017-06-01 21:38:51

kobayashi552
Member

Re: Excelファイルの取り込みについて

qb_dpさん、ありがとうございます。

Event を送信後の処理は当該ファイルの取込みですので、Loop で取込み続け 対象レコード>0 で抜けるという荒業で
しのげるかな、と思っていますがちょっと強引すぎるでしょうか。

Offline

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.009 seconds, 7 queries executed - Memory usage: 522.17 KiB (Peak: 527.08 KiB) ]