|
お世話になっております。 csvをexcelに一括で貼り付けたいのですが、うまくいきません。 ご教授願いませんでしょうか?
元 = fopen("zai.csv") 出力 = fopen("在庫.csv",F_READ or F_WRITE) fput(出力,"更新日,機種,梱包,在庫,注残,機種,梱包,在庫,注残",1) for i = 2 to fget(元, F_LINECOUNT) IFB fget(元,i,2) = "17A4" THEN 一行 = fget(元,i,35)+","+"177A"+","+fget(元,i,2)+","+fget(元,i,5)+","+fget(元,i,12) ENDIF IFB fget(元,i,2) = "19A4" THEN 一行 = 一行+","+"199A"+","+fget(元,i,2)+","+fget(元,i,5)+","+fget(元,i,12) ENDIF next ifb fget(出力,2,1) <> copy(一行,1,6) then fput(出力,一行,2,F_INSERT) endif fclose(元) fclose(出力)
出力 = fopen("在庫.csv") SENDSTR(0,fget(出力, F_ALLTEXT ))
Excel = XLOPEN("C:在庫.xlsx") XLACTIVATE(Excel, "Sheet1") KBD(VK_CTRL, DOWN) KBD(VK_V, CLICK) KBD(VK_CTRL, UP)
XLCLOSE(Excel)
|
No.2646 2016/07/17(Sun) 00:34:37
|
☆ Re: csvをexcelに一括で貼り付けたい / ある |
|
|
エクセルで読み込めば一発だと思いますが、UWSCでやりたいのだと解釈して進めます。 XLOPEN等は触ったことがないので、慣れている方で書かせてもらいました。
//------------- Excel=createoleobj("Excel.Application") Excel.visible=true Excel.workbooks.add()
fid=fopen("在庫.csv",f_read) 元=fget(fid,f_alltext) fclose(fid)
data=split(元,"<#cr>") //行を分割 for n=0 to resize(data) data[n]=split(data[n],",") //行の中のデータを分割 for i=0 to resize(data[n]) Excel.cells(n+1,i+1).value=data[n][i] next next
|
No.2647 2016/07/17(Sun) 02:39:42
|
|
☆ Re: csvをexcelに一括で貼り付けたい / 森 |
|
|
提示スクリプトに XLOPENが含まれているので、Pro版をお持ちのようですね。 貼り付け(セルへの入力)は、 XLSETDATAを使うと便利ですよ。
Excel = XLOPEN("在庫.xlsx") f = fopen("在庫.csv") for i = 1 to fget(f, F_LINECOUNT) for j = 1 to 9 data = fget(f, i, j) XLSETDATA(Excel, data, i, j, "Sheet1") // セル位置とシート名を指定して貼り付け next next fclose(f) XLCLOSE(Excel)
【余談1】 データを配列に格納してから、A1セル指定で一括入力する方が処理が早いかも知れません。
【余談2】 ちなみに、CSVデータのカンマをタブに変換しておくと、[CTRL]+[V]で貼り付け可能です。 ※貼付範囲の大きさが違うというエラーが出るかも知れません。 ※エクセルはタブ区切りということではありません。
【余談3】 提示スクリプトを見て気になったのですが、CSVはエクセルにデータを一括貼付する元データを作るためだけに使っているのですか? もしそうだとしたら、XLSETDATAを使って最初からエクセルに入力していくように作った方がベストだと思います。
|
No.2648 2016/07/17(Sun) 08:53:56
|
|
☆ Re: csvをexcelに一括で貼り付けたい / sen |
|
|
ありがとうございます。
>【余談3】 >提示スクリプトを見て気になったのですが、 >CSVはエクセルにデータを一括貼付する元データを作るためだけに >使っているのですか?
新しいデータを2行目にうまく挿入できなくて、そうなりました。 意味がないなとは、感じてました。
|
No.2650 2016/07/17(Sun) 11:21:07
|
|
☆ Re: csvをexcelに一括で貼り付けたい / 森 |
|
|
やっぱりそうでしたね^^ では、以下のスクリプトで大丈夫だと思います。 元データが無いからテストしていませんので、不具合があれば適当に調整して下さい。 ※19A4よりも手前の行に17A4が必ずあるという前提で書いてます。
csv = fopen("zai.csv") Excel = XLOPEN("在庫.xlsx") XLACTIVATE(Excel, "Sheet1")
dim midashi[] = "更新日,機種,梱包,在庫,注残,機種,梱包,在庫,注残" XLSETDATA(Excel, midashi, 1, 1)
for i = 2 to fget(csv, F_LINECOUNT) select fget(csv,i,2) case "17A4" XLSETDATA(Excel, "177A", i, 2) XLSETDATA(Excel, fget(csv,i,35), i, 1) XLSETDATA(Excel, fget(csv,i, 2), i, 3) XLSETDATA(Excel, fget(csv,i, 5), i, 4) XLSETDATA(Excel, fget(csv,i,12), i, 5) range = "A" + i + ":E" + i data = XLGETDATA(Excel, range) // 記入したデータを配列に case "19A4" XLSETDATA(Excel, range , i, 1) XLSETDATA(Excel, "199A", i, 6) XLSETDATA(Excel, fget(csv,i, 2), i, 7) XLSETDATA(Excel, fget(csv,i, 5), i, 8) XLSETDATA(Excel, fget(csv,i,12), i, 9) selend next
fclose(csv) XLCLOSE(Excel)
|
No.2651 2016/07/17(Sun) 11:47:54
|
|
☆ Re: csvをexcelに一括で貼り付けたい / sen |
|
|
下記の部分を教えていただけると助かります。
range = "A" + i + ":E" + i ← data = XLGETDATA(Excel, range) // 記入したデータを配列に← XLSETDATA(Excel, range , i, 1)
|
No.2652 2016/07/17(Sun) 15:37:34
|
|
☆ Re: csvをexcelに一括で貼り付けたい / 森 |
|
|
簡単なスクリプトだと思ってなめてると、やっぱり失敗しますね^^; 以下の通り、修正が2箇所あります。
dim midashi[] = "更新日,機種,梱包,在庫,注残,機種,梱包,在庫,注残" ↓ dim midashi[] = "更新日","機種","梱包","在庫","注残","機種","梱包","在庫","注残"
XLSETDATA(Excel, range , i, 1) ↓ XLSETDATA(Excel, data , i, 1)
2回続けて間違えると恥ずかしいので、以下のサンプルデータでテストしました。 zai.csv----------------- ,梱包,,,在庫,,,,,,,注残,,,,,,,,,,,,,,,,,,,,,,,更新日 ,17A4,,,1,,,,,,,13,,,,,,,,,,,,,,,,,,,,,,,20160701 ,19A4,,,2,,,,,,,14,,,,,,,,,,,,,,,,,,,,,,,20160702 ,17A4,,,3,,,,,,,15,,,,,,,,,,,,,,,,,,,,,,,20160703 ,19A4,,,4,,,,,,,16,,,,,,,,,,,,,,,,,,,,,,,20160704 ,17A4,,,5,,,,,,,17,,,,,,,,,,,,,,,,,,,,,,,20160705 ,19A4,,,6,,,,,,,18,,,,,,,,,,,,,,,,,,,,,,,20160706 ,17A4,,,7,,,,,,,19,,,,,,,,,,,,,,,,,,,,,,,20160707 ,19A4,,,8,,,,,,,20,,,,,,,,,,,,,,,,,,,,,,,20160708 ,17A4,,,9,,,,,,,21,,,,,,,,,,,,,,,,,,,,,,,20160709 ,19A4,,,10,,,,,,,22,,,,,,,,,,,,,,,,,,,,,,,20160710 ,17A4,,,11,,,,,,,23,,,,,,,,,,,,,,,,,,,,,,,20160711 ,19A4,,,12,,,,,,,24,,,,,,,,,,,,,,,,,,,,,,,20160712
|
No.2653 2016/07/17(Sun) 16:42:19
|
|
☆ Re: csvをexcelに一括で貼り付けたい / sen |
|
|
あるさん、森さん、ありがとうございました。 うまくいきました。
|
No.2654 2016/07/17(Sun) 21:19:27
|
|