[ 掲示板に戻る ]

過去ログ閲覧モード

ホットキーを使った引数変更 / FEY
ホットキーを使い、任意のタイミングで引数を書き換える処理を行いたいです、

「test(AA,BB,CC)//関数「test」で引数を設定」
の行では引数を書き換えられるのですが、

「sleep(5)//割り込ませる猶予時間」
の行などでホットキーで割り込んだ場合、
引数を変更することが出来ません、
お手数ですが助言をいただけないでしょうか。


//////////////////////////////////////

sethotkey(VK_z,, "test")//ホットキーをZで設定

AA=0//引数設定
BB=0//引数設定
CC=0//引数設定

test(AA,BB,CC)//関数「test」で引数を設定
print AA//引数を確認
print BB//引数を確認
print CC//引数を確認

sleep(5)//割り込ませる猶予時間
////ここでホットキーで割り込ませる

print AA//引数が変更されたか確認
print BB//引数が変更されたか確認
print CC//引数が変更されたか確認


////引数設定用の関数「test」の設定
procedure test(Var AA ,var BB,var CC)//引数AA,BB,CCの変更を許可
AA = INPUT("入力1", 1)//引数を入力
BB = INPUT("入力2", 2)//引数を入力
CC = INPUT("入力3", 3)//引数を入力
fend

//////////////////////////////////////

No.3598 2017/03/06(Mon) 07:27:48

Re: ホットキーを使った引数変更 / stuncloud
先ず解決策
AA、BB、CCはそれぞれpublicにしておく

続いて解説…なんですがちょっと説明難しいな…わからなかったらごめんなさい
sethotkeyで呼び出される関数は引数を渡さないで実行されます、なので
> Var AA ,var BB,var CC
はなんというか、なかったことになってます
実行時に参照渡しするための変数が指定されてない(できない)のでvarにしても値を外に出せないんですね

関数の外と中で同じ変数名を使うからちょっとややこしくなるのかな
関数定義だけ

procedure test(Var A ,var B,var C)
A = INPUT("入力1", 1)//引数を入力
B = INPUT("入力2", 2)//引数を入力
C = INPUT("入力3", 3)//引数を入力
fend

と書き換えても動作は一切変わりませんが、これだとよりAA、BB、CCの値が変更されないことの意味がわかりやすくなるかと思います

※関数の中(引数含む)と外で同じ名前の変数を使うとミスの元になるのでなるべく止めましょう
 変数をpublicにする場合は別ですが

No.3599 2017/03/06(Mon) 10:06:04

Re: ホットキーを使った引数変更 / FEY
迅速で丁寧なご返答ありがとうございます、

>>sethotkeyで呼び出される関数は引数を渡さないで実行されます、なので
事前に引数設定をしていないとエラーが出るので、嫌な予感がしてましたが、
引数を渡さない、procedureは外の関数と言われてその原因がよくわかりました、
別個の場所に書かれたプログラムの引数が、特別な処理なしに共有されるわけないですものね。

>>と書き換えても動作は一切変わりませんが、これだとよりAA、BB、CCの値が変更されないことの意味がわかりやすくなるかと思います
関数定義だけ変えても同じ動作することを確認しました、
引数が違うのに何故動作するのか不思議でしたが、
procedureで対応した引数が変更されたのではなく、
単に関数に対応した位置が変更されただけだったということですね・・・

ホットキーを使った引数変更は難しそうなので、
別の手段を考えることにします、ご指導ありがとうございました!

No.3604 2017/03/06(Mon) 16:29:27
特定のウィンドウが現れるまでの待ち処理 / ランナ
("","#32770")というウィンドウが現れるまでスリープ処理したいと考えています。

--------------------------------------
a_id=GetID("","#32770")

REPEAT
sleep(0.1)
UNTIL a_id=true
--------------------------------------

とやってみたのですがスリープしてくれません。
条件式が間違っているのでしょうか。
どうしたらよいのか教えてください。
よろしくお願いします。

No.3566 2017/02/26(Sun) 18:56:46

Re: 特定のウィンドウが現れるまでの待ち処理 / しろまさ
GetIDの戻り値 と UNTIL a_id=true の評価式を見直しましょう。
No.3569 2017/02/26(Sun) 20:50:18

Re: 特定のウィンドウが現れるまでの待ち処理 / ランナ
ご回答いただきありがとうございます。

----------------------------------------------
REPEAT
sleep(0.1)
UNTIL GetID(,"#32770",-1)>0
----------------------------------------------

さまざま試してみて、最終的にこのようにしてみたのですが、やはりスリープしてくれません。
getidの戻り値のタイトルが空であることに、問題があるのでしょうか。
取得してもタイトル名がありません。

再度ご回答いただければ幸いです。よろしくお願いします。

No.3575 2017/02/27(Mon) 09:03:31

Re: 特定のウィンドウが現れるまでの待ち処理 / しろまさ
// 複数起動していませんか?
Dim i, id, t
For i = 0  To GetAllWin() - 1
  id = ALL_WIN_ID[i]
  If Status(id, ST_CLASS) = "#32770" Then t = t + "t=" + Status(id, ST_TITLE) + " c=" + Status(id, ST_CLASS) + "<#CR>"
Next
MsgBox( t )

No.3576 2017/02/27(Mon) 09:15:13

Re: 特定のウィンドウが現れるまでの待ち処理 / ランナ
しろまさ様 再度のご回答とスクリプトいただきまして誠にありがとうございました。大変恐縮です。
スクリプトを掛けましたところ、

t=Firm Update c=#32770
t= c=#32770
t=受信しました c=#32770

と出てきました。
一段目、三段目は何かわからないのですが、このソフトには無関係のように思えます。
二段目が該当のダイアログのように思えます。
よろしくお願いします。

No.3578 2017/02/27(Mon) 15:56:07

Re: 特定のウィンドウが現れるまでの待ち処理 / しろまさ
答えのつもりだったんですが。。

UNTIL GetID(,"#32770",-1)>0

「出現するまで待機」のこの条件では、複数存在してれば一瞬で抜けるので当然スリープできないですよね?

条件式を変更して下さい。

No.3581 2017/02/28(Tue) 08:28:52

Re: 特定のウィンドウが現れるまでの待ち処理 / ランナ
ご回答ありがとうございます。また真意を分からなかったことお詫び申し上げます。

UNTIL GetID(,"#32770")>0

という形にしてみましたが、スリープはしませんでした。

No.3582 2017/02/28(Tue) 09:25:06

Re: 特定のウィンドウが現れるまでの待ち処理 / まーく
そもそもそのウインドウはGETIDでIDが取得できているのでしょうか?

私なら出てくるウインドウ("#32770"からダイアログだと思いますが)が決まっているならば
スクリーンショットを取った後にウインドウのメッセージの一部などを使ってCHKIMGで判断させます。

スキルがあればきっともっとスマートな行いができるのでしょうが…。

No.3583 2017/02/28(Tue) 09:42:12

Re: 特定のウィンドウが現れるまでの待ち処理 / しろまさ
UNTIL GetID(,"#32770")>0
も一緒です。「出現するまで待機」してます。

答えを言えば、複数存在時は GetIDを使用しても「出現するまで待機」は出来ないのです。(既に存在してるから)
経験上 #32770はいろんなところで使われていますのでClass名判断では物足りません。
基本GetAllWinを使用し、ステータス判断ですね。
タイトルで判断できればそれ。出来なければ親ウィンドウIDやプロセスIDなどで判断します。
GetItemを絡めてアイテムの個数なんかでも判断できます。

#32768なんかは同プロセスが複数発生させるので個数で判断したりしてます。

No.3585 2017/02/28(Tue) 12:12:05

Re: 特定のウィンドウが現れるまでの待ち処理 / ランナ
しろまさ様

>基本GetAllWinを使用し、ステータス判断ですね。

ステータス関連を知らないので、勉強してみます。
何度もありがとうございました。



まーく様

>ウインドウのメッセージの一部などを使ってCHKIMGで判断させます。

これも未経験なので調べてみます。
ありがとうございました。

No.3586 2017/02/28(Tue) 12:43:37

Re: 特定のウィンドウが現れるまでの待ち処理 / しゅん
しろまささんの回答で充分な気がしますが、
もしかすると見えてることが違う気がするので少しだけ

GETIDのヘルプ、読んでますか?
タイトルは部分一致なのです。
そして、長さ0の文字列は、全ての文字列に部分一致します。
ここが理解できているか気になるところです。

あと、
> 一段目、三段目は何かわからないのですが、このソフトには無関係のように思えます。
が、とても、、、なんというか、素晴らしい、、、。
気持ちはわかりますが、今のコンピューターは0/1しかわからないアホなので、
無関係には思えないのです。


// でまあ、もはや諦めてるかもしれませんが、回答を。(未試験だけど)
REPEAT
  sleep(0.1)
  a_id = GetID("", "#32770")
  IF LENGTH(STATUS(a_id, ST_TITLE)) > 0 THEN a_id = -1
UNTIL a_id >= 0

// でもこれ、いろいろ罠があると思うけど。

No.3591 2017/03/03(Fri) 12:43:10

Re: 特定のウィンドウが現れるまでの待ち処理 / ランナ
しゅん様

回答いただきまして誠にありがとうございました。
さっそく試してみましたところうまくいきました。
IF文の意味を調べてみます。

的外れな質問を繰り返してしまい、皆様にご迷惑をおかけしたようです。
初心者は来るべきではなかったかもしれませんが、
最後まで対応していただき誠にありがとうございました。

No.3596 2017/03/04(Sat) 17:48:00

Re: 特定のウィンドウが現れるまでの待ち処理 / しろまさ
> 初心者は来るべきではなかったかもしれませんが、

この考え方は嫌いですね。じゃあ初心者は質問するところがないと言いたいのですか?

私は相手が努力し結果のコードを貼り質問する限り、決して諦めずに答えます。

代わりに、ただ答えを与えることだけは決してしません。悩んだ時間と努力を尊重します。

自分が諦めたことを他人のせいにするのは学ぶ姿勢として間違ってますよ。

No.3597 2017/03/04(Sat) 22:31:18
ボタンが押せません >_< / TK
フリー版をダウンロードしたのですが、
ボタンが非アクティブで使用することができません。

https://gyazo.com/e776d257a365ee0a217af06cf2ea8fc6

解決策をお持ちの方、お手数ですが、教えてください!

よろしくお願いします!

No.3593 2017/03/03(Fri) 22:25:33

Re: ボタンが押せません >_< / routa
FAQを見ましょう。
記録ボタンが灰色状態であり、押す事ができない  #N5

No.3595 2017/03/04(Sat) 13:45:33
既存のEXCELファイルがオープンできません / おっさん2
お世話になります。

(UWSCPro Ver 5.5.2.0)
ある処理のためEXCEL2016(win10)を開きたいのですが開けません。EXCEL2010(win7)では
開けます。症状は以下の通りです。


コード   EXCEL = CREATEOLEOBJ("Excel.Application")
      EXCEL.visible = True
      EXCEL.Workbooks.Open("C:\・・・・\ABCD.xlsm")

エラー   COM_ERROR:例外が発生しました。
      24行目:EXCEL.Workbooks.Open("C:\・・・・\ABCD.xlsm")


また 新規のEXCELファイルは開けます。

コード   Excel = CreateOLEObj("Excel.Application")
      Excel.Visible = True
      Workbook = Excel.WorkBooks.Add

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

No.3587 2017/03/01(Wed) 19:35:40

Re: 既存のEXCELファイルがオープンできません / しゅん
マクロブックか。
ヒントだけですみませんが、セキュリティ関連ではないでしょうか。

No.3590 2017/03/03(Fri) 12:40:43

Re: 既存のEXCELファイルがオープンできません / おっさん2
しゅん様、ご回答ありがとうございます。自己解決しました。

WIN10の環境でパスを通したら、既存EXCELファイルが開けました。
WIN7の環境のほうはパスが通っているか確認できませんでした。

セキュリティは、WIN10はマカフィー、WIN7はノートンです。その他ファイアウォールなど
細かい設定はわかりません。

No.3592 2017/03/03(Fri) 20:07:20
裏で実行できますか / ss
例えばuwscから実行ファイルを作って,ショートカットキーでそれを実行させたとします。エクセルを使っていたとするとそのファイルが終了するまでエクセルはアクティブになりません。uwscまたはuwscから作った実行ファイルを裏で実行(非アクティブ)することはできますか?
No.3588 2017/03/02(Thu) 09:52:30

Re: 裏で実行できますか / stuncloud
何をするかによります
・UWSCで操作するウィンドウがアクティブになるような処理が入ってなければできる
 (clkitemのCLK_BACKだったりmouseorgのMORG_BACKだったりを使っていても操作時にアクティブになってしまうとか操作できないとかいうものもあるようなので、そういったものであれば無理)
・ウィンドウ操作をしないスクリプトならできる

No.3589 2017/03/02(Thu) 10:55:05
A列に偶数の配列、B列に奇数の配列に順番に入れる方法 / ジンギスカン
下記のスクリプトで試しているのですが、ここからどう組み立てたらいいのが分かりません。forのstep+2をうまく組み合わしたらできそうな気もするのですがいまいち分かりません。聞いてばかりで申し訳ないですが、何か良い方法ないでしょうか?


file="C:\Users\aruke\Desktop\URL.txt"

//配列にfileを挿入
Dim res1 = COMMON.test_hairetu(file)

o_XL=xlopen(0)

row=2

for i = 0 to length(res1)-1
 xlsetdata(o_XL, res1[i], "a" + row)
 xlsetdata(o_XL, res1[i+1], "b" + row)

 row = row + 1
next

XLCLOSE(o_XL)

// 0,2,4 タイトル
// 1,3,5 リンク

No.3562 2017/02/25(Sat) 16:09:52

Re: A列に偶数の配列、B列に奇数の配列に順番に入れる方法 / ジンギスカン
配列をエクセルにA列、B列に入力する方法はできたのですが、エラーが出てしまいます。
breakでfor文をぬけようとしてもエラーになります。どこが間違っているのでしょうか?

[エラーコード]
getvalue:variant or safe array index out of bounds

17行目  xlsetdata(o_XL, res1[i+1], "b" + row)

[試しているスクリプト]


call C:\Users\aruke\Desktop.uws

file="C:\Users\aruke\Desktop\URL.txt"

//fileを配列に入れる
Dim res1 = COMMON.test_hairetu(file)

o_XL=xlopen(0)

row = 2

for i = 0 to length(res1) step+2
xlsetdata(o_XL, res1[i], "a" + row)
xlsetdata(o_XL, res1[i+1], "b" + row)
row = row + 1

if i=length(res1) then
break
next


o_XL.ActiveWorkBook.SaveAs(file1)
XLCLOSE(o_XL)

// 0,2,4 タイトル
// 1,3,5 リンク

No.3567 2017/02/26(Sun) 19:56:53

Re: A列に偶数の配列、B列に奇数の配列に順番に入れる方法 / しろまさ
エラーはsafearrayの範囲外という内容。
length(res1)に配列要素はない。

さあ問題です。どこを修正すればよいでしょうか?

No.3568 2017/02/26(Sun) 20:47:21

Re: A列に偶数の配列、B列に奇数の配列に順番に入れる方法 / ジンギスカン
しろまさ様、回答ありがとうございます、しろまさ様のサイトのページ紙で印刷で見させて頂いています。

iがlength(res1)の13になるとbreakしてfor文を抜けれると思ったのですが、この考え方は間違っているのでしょうか?

>エラーはsafearrayの範囲外という内容。length(res1)に配列要素はない。
length(res1)が13ですので、0から進んでいくと12までいって13だけが残されるからエラーという考え方で良いのでしょうか?

if i=length(res1) then

//13
print "length(res1)="+length(res1)

break

No.3570 2017/02/26(Sun) 21:38:40

Re: A列に偶数の配列、B列に奇数の配列に順番に入れる方法 / ジンギスカン
>length(res1)に配列要素はない。
length(res1)-1で条件式を組み立てるという事ですよね。

下記のスクリプトでうまくいきました。
for i = 0 to length(res1) step+2
xlsetdata(o_XL, res1[i], "a" + row)
if length(res1)-1= i then
break
endif

 xlsetdata(o_XL, res1[i+1], "b" + row)
 row = row + 1

next

No.3571 2017/02/26(Sun) 22:31:07

Re: A列に偶数の配列、B列に奇数の配列に順番に入れる方法 / しろまさ
> length(res1)-1で条件式を組み立てるという事ですよね。
正解です。ただ、
for i = 0 to length(res1)-1 step+2 とすればIf文は不要となります。

[i+1]を使う今回の条件では
for i = 0 to length(res1)-2 step+2 で良さそうですね。

No.3574 2017/02/27(Mon) 08:51:21

Re: A列に偶数の配列、B列に奇数の配列に順番に入れる方法 / ジンギスカン
>for i = 0 to length(res1)-1 step+2 とすればIf文は不要
これは、どういう風にすればIF文不要でできるのでしょうか?

>for i = 0 to length(res1)-2 step+2
こちらはbreak文無しでうまくできました。

No.3579 2017/02/27(Mon) 23:16:29

Re: A列に偶数の配列、B列に奇数の配列に順番に入れる方法 / ジンギスカン
length(res1)、 lengthは1から数える

配列、res1[i]は0から数える

よって、配列に合わせる為にlength(res1)−1にする

length(res1)は13の場合、length(res1)−1は12になる。

配列には12のデータが入っていると判断できる。

12個のデータという事は、配列[11]と表示とイコール

12個のデータをエクセルにA列、B列に2列×6行で入れたいとする。

よって、iが12になった場合のxlsetdata(o_XL, res1[i], "a" + row)の前にif文のbreakを入れる。


call C:\Users\Desktop

file="C:\Users\aruke\Desktop\URL.txt"

Dim res1 = COMMON.test_hairetu(file)

file1="C:\Users\aruke\Deskt"

o_XL=xlopen(0)


row = 2

for i = 0 to length(res1)-1 step+2

if i=12 then
break
endif
xlsetdata(o_XL, res1[i], "a" + row)


  xlsetdata(o_XL, res1[i+1], "b" + row)
 row = row + 1

next

o_XL.ActiveWorkBook.SaveAs(file1)
XLCLOSE(o_XL)

// 0,2,4 タイトル
// 1,3,5 リンク

No.3580 2017/02/27(Mon) 23:44:56

Re: A列に偶数の配列、B列に奇数の配列に順番に入れる方法 / stuncloud
> length(res1)は13の場合、length(res1)−1は12になる。
はいいんだけど
> 配列には12のデータが入っていると判断できる。
って判断しちゃだめです
length(res1) が個数です
res1[0] から res1[12] までの13個の要素がある配列です
このへんの認識違いはバグの元になるので気をつけましょう

No.3584 2017/02/28(Tue) 09:56:09
起動オプション / satocha
起動オプションを調べようとしてヘルプを開きましたが、見つかりません。
古いバージョンのヘルプだと「スクリプト」→「その他項目」の下の「スクランブル」と「uwsc.ini」の間にありますが、移ったのでしょうか。それとも仕様が変わったのでしょうか。

No.3565 2017/02/26(Sun) 13:11:50

Re: 起動オプション / umiumi
必要性のないものである為、機能的に削除(予定)しました。
No.3572 2017/02/27(Mon) 01:23:44

Re: 起動オプション / satocha
ご回答ありがとうございます。
Win標準のタスクスケジューラーよりUWSCのスケジューラーのほうが高機能なので、PC起動時の処理を行わせたあと/Kオプションで常駐させる使い方をしています。
廃止されても対応できますので、必要性がないと言われればそのとおりですが。

No.3573 2017/02/27(Mon) 02:44:03

Re: 起動オプション / しき
/L をよく使っています。大変便利です。
なくなさないでください。よろしくお願いします

No.3577 2017/02/27(Mon) 14:08:22
高速な表引きを作成したいが、文字化けする / SEN
いつもお世話になっております。
エクセルのvlookup関数みたいな高速な表引きのプログラムを作成したいと思っています。
正規表現にも対応できて、普通の検索にも対応できればと思って、過去に教えて頂いた分の集大成として作成しました。
しかし、どうしても文字化けするのです。エディターで開くと変な文字が見え他は大丈夫なのですが、
エクセルで開くとダメです。
"Nヨウ N-14 ユカ"の部分だと思うのですがうまくいかないのです。
他の商品はキチンと転記出来る様で問題ありません。
が、一度おかしくなると、全部文字化けします。
製品マスタ.csvは実際には、15000行位ありまして思ったスピードになりません。
あと一息なのですが、どうにもなりません。
ご教授頂けませんでしょうか?


P高速正規表現表引きCSV置換("余剰梱包マイナス.csv",1,5,"製品マスタ.csv",2,3)

PROCEDURE P高速正規表現表引きCSV置換(調査ファイル名,調査検索列,調査置換列,マスタファイル名,マスタ検索列,マスタ置換列)
 dim 項目[2]
 調査 = fopen(調査ファイル名,F_READ or F_WRITE)
 マスタ = fopen(マスタファイル名)
  for s = 2 to fget(調査,F_LINECOUNT)
   ifb fget(調査,s,調査検索列) <> "" then
    ifb fget(調査,s,調査置換列) = "" then
     抽出 = fopen("temp.csv", f_write)
      項目[0] = "findstr"
      項目[1] = trim(fget(調査,s,調査検索列))
      項目[2] = マスタファイル名
      第一抽出 = doscmd(join(項目))
      fput(抽出,第一抽出)
     fclose(抽出)

     抽出 = fopen("temp.csv")
      for i = 1 to fget(抽出,F_LINECOUNT)
       正規 = CreateOLEObj("VBScript.Regexp")
       正規.pattern = trim(fget(抽出,i,マスタ検索列))
       一致 = 正規.Execute(fget(調査,s,調査検索列))
       ifb 一致.count > 0 then
        fput(調査,fget(抽出,i,マスタ置換列),s,調査置換列)
        break
       endif
      next
     fclose(抽出)
    endif
   endif
  next
 fclose(マスタ)
 fclose(調査)
FEnd

//製品マスタ.csv
//CD,品番,品名
//1111111,2-14,Nヨウ N-14 ユカ

//余剰梱包マイナス.csv
//梱包,削減,余裕,帳簿,品名(17/02/23)終了時点,機種,追加更新日,引当更新日,コメント,分類,フリー
//2-14,0,0,0,,,12/26確認,2017/2/9,,,

No.3564 2017/02/25(Sat) 22:35:05
一番古いデータを削除したい / SEN
いつも大変お世話になっております。
ファイル名の日にちが一番古いファイルを削除したいのですが、目的は達成しましたが長くなりました。
こんなものでしょうか?

dim 日にち[10]

GETDIR(GET_CUR_DIR, "取寄データ2*.csv")

FOR i = 0 TO (LENGTH(GETDIR_FILES) - 1)
 日にち[i] = GETTIME(0,BETWEENSTR(GETDIR_FILES[i],"取寄データ",".csv"))
 print "i="+i+" "+BETWEENSTR(GETDIR_FILES[i],"取寄データ",".csv")+" "+日にち[i]
NEXT
最小値 = CALCARRAY(日にち,CALC_Min)
FOR i = 0 TO (LENGTH(GETDIR_FILES) - 1)
 ifb 最小値 = 日にち[i] then
  一番古いファイル = GETDIR_FILES[i]
  print 一番古いファイル
 endif
next
ifb LENGTH(GETDIR_FILES) > 4 then
 ifb msgbox(一番古いファイル+"を削除してよいですか?",BTN_YES or BTN_NO) = BTN_YES THEN
  DosCmd("DEL C:\uwsc43\"+一番古いファイル)
 endif
endif

//取寄データ20170223.csv
//取寄データ20170222.csv
//取寄データ20170221.csv
//取寄データ20170220.csv
//取寄データ20170219.csv

No.3555 2017/02/25(Sat) 14:21:22

Re: 一番古いデータを削除したい / routa
// GETDIRはデフォルトでファイル名順です。
ifb GETDIR(GET_CUR_DIR, "取寄データ2*.csv") > 4 then
 ifb msgbox(GETDIR_FILES[0]+" を削除してよいですか?",BTN_YES or BTN_NO) = BTN_YES THEN
  DELETEFILE(GETDIR_FILES[0])
 endif
endif

No.3556 2017/02/25(Sat) 15:02:02

Re: 一番古いデータを削除したい / SEN
なんと!
何も必要なかったのですね。
聞いてみて、よかったです。

ご教授ありがとうございました。

No.3563 2017/02/25(Sat) 18:15:50
テキストファイルにあるリンクを配列に入れて、それをエクセルのA列に順番に入れる方法 / ジンギスカン
配列.txtのリンクを1次元配列に入れて、それをエクセルのA1、A2、A3と入力したいですが、A1、B2、C3と入力になってしまいます。何か良い方法ないでしょうか?

[配列.txt]
http://a/
https://b/
https://c/


file="C:\Desktop\配列.txt"

fid = FOPEN(t_path,F_READ or F_WRITE)
list = FGET(fid,F_LINECOUNT) //---ファイル内の行数を返す
Dim アカウント[list] //---配列の宣言
count=1
for i = 0 to list-1
 アカウント[i] = FGET(fid,count) //---配列:アカウントに挿入
count=count+1
next
FCLOSE(fid)
res1 = slice(アカウント, 0, length(アカウント)-1)

file1="テスト.xlsm"

EXCEL=XLOPEN(,file1)

xlsetdata(EXCEL, res1, "a1")
xlclose(EXCEL)

No.3549 2017/02/24(Fri) 16:11:51

Re: テキストファイルにあるリンクを配列に入れて、それをエクセルのA列に順番に入れる方法 / stuncloud
配列で一度に入れようとしないでループで一つずつ入力

row = 1
for value in res1
 xlsetdata(excel, value, "A" + row)
 row = row + 1
next

No.3550 2017/02/24(Fri) 17:15:42

Re: テキストファイルにあるリンクを配列に入れて、それをエクセルのA列に順番に入れる方法 / しろまさ
t_path=GET_CUR_DIR + "\配列.txt"
file1="テスト.xlsm"
res1 = DosCmd("type " + t_path) + "<#CR>"

// 配列もFOPENもXLSETDATAも使わない方法
EXCEL=XLOPEN(,file1)
SendStr(0, res1)
EXCEL.Range("a1").PasteSpecial

// 2〜3行目のみ
2行目開始位置 = Pos("<#CR>", res1, 1) + 2
4行目開始位置 = Pos("<#CR>", res1, 3) + 2
SendStr(0, Copy(res1, 2行目開始位置, 4行目開始位置 - 2行目開始位置))
EXCEL.Range("c1").PasteSpecial

No.3551 2017/02/24(Fri) 18:08:03

Re: テキストファイルにあるリンクを配列に入れて、それをエクセルのA列に順番に入れる方法 / routa
// エクセルは2次元
Dim アカウント[list][0] //---配列の宣言
 アカウント[i][0] = FGET(fid,count) //---配列:アカウントに挿入
xlsetdata(EXCEL, アカウント, "a1")
// res1 は何の為?

No.3552 2017/02/24(Fri) 18:46:06

Re: テキストファイルにあるリンクを配列に入れて、それをエクセルのA列に順番に入れる方法 / ジンギスカン
stuncloud様、回答ありがとうございます。できました、助かりました。
No.3559 2017/02/25(Sat) 15:29:19

Re: テキストファイルにあるリンクを配列に入れて、それをエクセルのA列に順番に入れる方法 / ジンギスカン
しろまさ様、回答ありがとうございます。色々な方法があるんですね。勉強になります。
No.3560 2017/02/25(Sat) 15:34:36

Re: テキストファイルにあるリンクを配列に入れて、それをエクセルのA列に順番に入れる方法 / ジンギスカン
routa様、回答ありがとうございます。res1は必要ないですね、失礼いたしました。
No.3561 2017/02/25(Sat) 15:34:56
全896件 [ ページ : << 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 90 >> ]