[ 掲示板に戻る ]

過去ログ閲覧モード

xlgetdataでA1からA100までテキストがあるセルまで読み込み方法 / アユミ
EXCEL = CREATEOLEOBJ("Excel.Application")
EXCEL.visible = True
Excel.WorkBooks.Open(FileName :="C:\Users\hoge.xlsx")
str1=xlgetdata(excel, "a1:a10", "sheet1")

xlgetdata(excel, "a1:a10", "sheet1")

hoge.xlsxと言うEXCELファイルにa1からa10までテキストと入力されているとします。
このa10が追加入力する事でa11やa12と変動します。これをテキストがあるセルまでセルの位置を取得する方法を探しています。
各セルが空欄かどうかを判断してa1からa100まで、テキストあるセルまでxlgetdataで読み込みをしたいです。

下記のコードが何かヒントになりそうですが、いまいち加工方法が思いつきません。
//下から上に探して最初の空欄がある行番号を返す
function sub_getBlankRowNumber(oSheet, iColumnNumber)
  dim i_bottomRow = oSheet.Rows.Count
  dim o_range   = oSheet.Cells(i_bottomRow, iColumnNumber)
  
  dim xlUp = -4162
  o_range = o_range.End(xlUp)     //Ctrl + ↑ と同じ操作
  
  ifb (empty <> o_range.Value) then  //空欄でなければ
    o_range = o_range.Offset(1, 0)  //一つ下のセル
  endif
  
  result = o_range.Row
fend

No.3255 2016/12/05(Mon) 13:56:41

Re: xlgetdataでA1からA100までテキストがあるセルまで読み込み方法 / Nagatani
Excelの最終行を取得するなら
Uwscだと
 Excel=GETACTIVEOLEOBJ("Excel.Application")
 Excel.Visible = True
 Excel.Sheets["Sheet1"].Select
 LonLast = Excel.Cells(100,"A").End(-4162).Row
 MsgBox(LonLast)

ExcelVBAだと(A列に連続して文字列等の入力がある場合)
 LonRowLast=Cells(1,"A").End(xldown).Row

No.3257 2016/12/05(Mon) 21:09:56

Re: xlgetdataでA1からA100までテキストがあるセルまで読み込み方法 / Nagatani
忘れ物・・・
LonRowLast = Excel.Cells(1, "A").End(-4121).Row(下方向)
LonRowLast = Excel.Cells(100, "A").End(-4162).Row(上方向)
LonColLast = Ws01.Cells(1, "A").End(-4161).Column(右方向)
LonColLast = Ws01.Cells(1, "AA").End(-4159).Column(左方向)

No.3258 2016/12/05(Mon) 21:24:56
他窓にいくときにそこにあった窓が・・・ / にょ
操作を実行している窓が別の窓を操作するとき何故か操作していた窓がついてきてしまいます。
No.3245 2016/12/04(Sun) 00:47:51
uwscのcallについて / ゆあ
callを使って別のフォルダにあるファイルを呼び出した時に
「Not Found〜」という画像がありませんというエラーメッセージが出ますが
対処法はありますか?
フォルダ内には画像は入ってます。
call "C:\●\uwsc48e\フォルダ\ファイル名"という感じです。

No.3238 2016/12/02(Fri) 16:53:11

Re: uwscのcallについて / stuncloud
call で呼べるのは拡張子が .uws のファイルだけです
また、callに渡すパスは .uws の部分を省略しても良いことになっています
なので例えば

call "C:\●\uwsc48e\フォルダ\hoge.jpg"

とすると C:\●\uwsc48e\フォルダ\hoge.jpg.uws を探しに行って File not found になります

No.3239 2016/12/02(Fri) 17:05:21

Re: uwscのcallについて / ゆあ
そうなんですね。
回答ありがとうございます。

No.3240 2016/12/02(Fri) 21:58:59
"(シングルコーテーション)を<#dbl>に変える方法について / タカハシ
"→<#dbl>に置き換えしたいのですができません。何か良い方法はないでしょうか?

textblock name
<a href="https://track.b.com/visit.php?guid" target="_blank" rel="nofollow">テキスト</a><img src="https://track.aaaab.com/lead/968723" width="1" height="1" style="border:none;" />
endtextblock

tes=CHGMOJ( name, """, "<#dbl>" )
print tes

No.3223 2016/12/01(Thu) 13:14:44

Re: "(シングルコーテーション)を<#dbl>に変える方法について / しろまさ
" ←ダブルだと思いますが。

OPTION SPECIALCHAR // 実行時に特殊文字(<#CR><#DBL><#TAB>)の変換をしない

を宣言する。

No.3224 2016/12/01(Thu) 13:58:26

Re: "(シングルコーテーション)を<#dbl>に変える方法について / stuncloud
OPTION SPECIALCHAR を付けてもなんか思った通りにならない…? (UWSC 5.2.3)

OPTION SPECIALCHAR

print replace(name, chr(34), "<#DBL>") // " のまま
print replace(name, "<#DBL>", "<#DBL>") // " のまま
print replace(name, chr(34), "<#DBL" + ">") // <#DBL> になる
print replace(name, "<#DBL>", "<#DBL" + ">") // <#DBL> になる

とりあえず下ふたつのやり方ならなんとかなる?
ちなみに「<#DBL>」が入った文字列がなんで必要になったのでしょう (ちょっと状況が思い浮かばなくて

No.3225 2016/12/01(Thu) 14:11:01

Re: "(シングルコーテーション)を<#dbl>に変える方法について / satocha
option設定はスクリプト全体に影響するので、それを避けたいときは

tes=CHGMOJ( name, "<#dbl>", "<#d"+"bl>" )

これはoption SpecialChar設定なしでいけます。

No.3226 2016/12/01(Thu) 14:51:13

Re: "(シングルコーテーション)を<#dbl>に変える方法について / miles
//textblockなら<特殊文字>を気にしなくて済む。
textblock name1
"
endtextblock
textblock name2
<#dbl>
endtextblock

tes=CHGMOJ( name, name1, name2 )

No.3227 2016/12/01(Thu) 15:03:39

Re: "(シングルコーテーション)を<#dbl>に変える方法について / stuncloud
おお、いろいろあるんですねぇ
あまりこのあたり意識したことがないので勉強になります

No.3228 2016/12/01(Thu) 16:09:18

Re: "(シングルコーテーション)を<#dbl>に変える方法について / タカハシ
しろまさ様、返信ありがとうございます。
OPTION SPECIALCHARがあるとは知らなかったです。もっとヘルプを見ていきます。

No.3229 2016/12/01(Thu) 16:38:45

Re: "(シングルコーテーション)を<#dbl>に変える方法について / タカハシ
stuncloud様、いつもありがとうございます。
上記2つできました、ありがとうございます。記事作成時に広告タグいれたい所に「!!テキスト」と書いておき、
UWSCで一括変換しようと思いまして。広告タグを下記のような形でしたいと思いまして。
"<a href=<#dbl>https://track.b.com/visit.php?guid" target=<#dbl>_blank<#dbl> rel=<#dbl>nofollow<#dbl>>〇〇会社</a><img src=<#dbl>https://track.aaaab.com/lead/968723<#dbl> width=<#dbl>1<#dbl> height=<#dbl>1<#dbl> style=<#dbl>border:none;<#dbl> />"

No.3230 2016/12/01(Thu) 16:40:13

Re: "(シングルコーテーション)を<#dbl>に変える方法について / タカハシ
satocha様、回答ありがとうございます。

>tes=CHGMOJ( name, "<#dbl>", "<#d"+"bl>" )
無事できました、ありがとうございます。勉強になります。

No.3231 2016/12/01(Thu) 16:41:15

Re: "(シングルコーテーション)を<#dbl>に変える方法について / タカハシ
miles様、回答ありがとうございます。

無事できました。
こんな発想を変えた方法があるんですね。
これを思いつくのが凄いです。

No.3232 2016/12/01(Thu) 16:42:16

Re: "(シングルコーテーション)を<#dbl>に変える方法について / タカハシ
色々回答を頂けた結果、自分の希望の処理が下記でできました。
textblockを使った処理はかなり使いやすいです。
広告タフを配列にいれてCLASS COMMON ENDCLASSでどこでも呼び出して使えるようにできる方法を思いついたのですが、エクセルの各セルに入っている広告タグをXLGETDATAで配列にいれて、その配列をtextblockに入れ込む方法、これはいちいちCOMMON ENDCLASSに書込必要があるので非効率ですし、エクエルから広告タグのセルをXLGETDATAで配列に読込までをCLASS COMMON ENDCLASSで入力しておき、その都度textblockに入れるのがベストかなと。
何か効率的な方法でしょうか?

textblock name
!!テキスト1
endtextblock

textblock name1
<a href="https://track.affiliate-b.com/visi27" t" rel="nofollow">自由テキスト</a><img src="https://track.affiliate-b.com/lead/9684k" width="1" height="1" style="border:none;" />
endtextblock


sendstr(0,CHGMOJ( name, "!!テキスト1", name1 ))

No.3234 2016/12/02(Fri) 12:37:39

Re: "(シングルコーテーション)を<#dbl>に変える方法について / stuncloud
> 何か効率的な方法でしょうか?
いまいち何がやりたいのか伝わってこないのでなんとも言い難いんですが、ただ、なんとなくですがもっと別の楽なアプローチがあるんじゃあないかとは思いますね

>記事作成時に広告タグいれたい所に「!!テキスト」と書いておき、UWSCで一括変換

ということは、対象の記事に「!!テキスト」というプレースホルダが書き込んであるということですよね
その記事はファイルをfopen()して読む等して記事全体がひとつの変数に入ってるという状態なんでしょうか

で、それをexcelから読み出した文字列で置換したい、と
excelで読み出す値はHTMLタグだということですよね?
その読み出したHTMLタグはexcel上ではダブルクォートが書かれているのでそれは <#DBL> に置換したいというのが最初の質問ですよね

でも、だとすると「!!テキスト」をHTMLタグに置換する際にダブルクォートを<#DBL>に置換するという処理は不要なはずなんですよ
(僕が状況が思い浮かばないと言ったのもそういうことで、通常は<#DBL>という文字列が欲しいのなんてUWSCでUWSCのスクリプトを書くとか、めちゃくちゃ限定された状況でしかないはずなんです)

とまぁ、色々気になることとかもあるんですけど、ひとまずダブルクォートを<#DBL>に置換する方法は解決したはずなのでそれ以外のことは別スレッドにされたほうが良いと思います
このままだとどんどん脱線していきそうなので

> CLASS COMMON ENDCLASS
COMMONてなんですかね…?

No.3235 2016/12/02(Fri) 13:52:49

Re: "(シングルコーテーション)を<#dbl>に変える方法について / タカハシ
stuncloud様、いつも回答ありがとうございます。

>記事はファイルをfopen()して読む等
fopen()にする方法もあるんですね。いちいちtextblockに手動で書き込む方法しか思いつきませんでした。

>excelで読み出す値はHTMLタグだということですよね?
HTMLタグです。

>(僕が状況が思い浮かばないと言ったのもそういうことで、通常は<#DBL>という文字列が欲しいのなんてUWSCでUWSCのスクリプトを書くとか、めちゃくちゃ限定された状況でしかないはずなんです
これは、私が変なカン違いしていましたすみません。

>COMMONてなんですかね…?
// 共通クラスの呼び出し クラス名:COMMON.
call C:\Users\aruke\Desktop\ショットカット構文一覧\共通化.uws
Dim res = COMMON.()
上記のクラス名です。

申し訳ないです、別スレッドで質問する事にします。

No.3237 2016/12/02(Fri) 16:47:03
起動させたいファイルをドロップ&ドロップで複数回起動する方法 / タカハシ
デスクトップにあるtesu.uws - ショートカットに複数回起動させたいファイルをドロップ&ドロップする事で起動させる方法ないでしょうか?

下記のコードでやってもうまくできません。エラーが出ます。(file not found c\usersdesktop\param_str[1].uws)

[tesu.uws]
input("D&Dされたファイル名 又は フルパス取得",param_str[1])
for i = 1 to 3
call param_str[1]
next

[tesu.uws - ショートカット]
tesu.uws - ショートカットのプロパティにあるリンク先には、下記を入力。

"C:\Program Files (x86)\UWSC\UWSC.exe" C:\Users\aruke\Desktop\tesu.uws

No.3236 2016/12/02(Fri) 16:33:33
指定した数のチェックボックスを自動で押していきたい / たろこ
指定した数のチェックボックスを自動で押していきたいと思っています。
社内で使うアプリのため、IE等ではありません。

1.Enter等ではチェックを入れることが出来ない
2.リストボックスのチェックボックスに見える
3.チェックボックスに名前は無いのかもしれない(不明)
4.記録してみたが、何もデータは残ってなかった(対象ウィンドウを選択した履歴のみ)
5.画面上に見えている、チェックボックスを左上から順番に押していければ良い

たぶん、やらないといけないのは以下のことだと思います。
 チェックボックスのアイテム名取得(毎回変わる、または無いために取得しないといけないはず)

上記はどのようにしたら取得できますか?
また、他に良い方法があれば教えて下さい。よろしくお願いいたします。

No.3217 2016/11/29(Tue) 10:42:18

Re: 指定した数のチェックボックスを自動で押していきたい / stuncloud
以下はちょっとした思いつきで確証はありません

// 1、3、5個目のチェックボックスにチェックを入れる
for n in split("1 3 5")
 clkitem(id, "", CLK_BTN or CLK_SHORT, TRUE, n)
next

名前を空にしてCLK_SHORTを加えることであらゆるボタンを対象とします

n に入るのはチェックボックスの他に通常のボタン、ラジオボタンも含めた順番を表す数字です
これに関してはどれが何番かは地道に確かめていくしかないです
例えばこんなのでOKを押す度にどれかがクリックされていくので番号とクリックされた場所を控えておく

for i = 1 to 100
 msgbox(i)
 ret = clkitem(id, "", CLK_BTN or CLK_SHORT, TRUE, i)
 print i + " " + ret
 if ret = BTN_CANCEL then break
next

全く押せないようならCLK_BTNをCLK_ACCに変更してみましょう

そもそもclkitem()では押せない可能性もあります

No.3218 2016/11/29(Tue) 15:38:49

Re: 指定した数のチェックボックスを自動で押していきたい / たろこ
stuncloud様

回答頂きありがとうございます。試してみます!

No.3222 2016/12/01(Thu) 09:02:49
POS関数と演算子の組み合わせについて / sana
お世話になっております。

?@case pos("aaa",STS) and (pos("bbb",STS) , pos("ccc",STS))
?Acase pos("aaa",STS) and (pos("bbb",STS) or pos("ccc",STS))

?@?Aは同じ意味かと思いますが、?@は「型があっていない」とエラー表示されます
仕様でしょうか?

No.3219 2016/11/30(Wed) 09:59:13

Re: POS関数と演算子の組み合わせについて / stuncloud
> ?@は「型があっていない」とエラー表示されます
原因はこれです
> (pos("bbb",STS) , pos("ccc",STS))
式の中に , があるせいです
(1)の式は完全に誤りであり、(2)と同一ではありません

(2)を見る限り文字列STS中に aaa が含まれ、かつ bbb または ccc が含まれればTRUEを返す条件式が欲しいということだと思いますが、実はこのままでは正しく動作しません
and、or演算子について思い違いがあるようなのでそちらの説明をしたいと思います

先ず理解しなくてはならないのは、uwscにおいて数値同士にand/or演算子を用いた場合はビット演算になるということです
例えば
・aaa が2文字目、bbbが4文字目で見つかりcccは存在しない場合
にはTRUEが返ることを期待するでしょうが、そうはいきません
式に直すと以下になります
2 and (4 or 0)
これを計算すると、先ず括弧内が計算され
2 and 4
となり最終的に
0
が返ります、0なのでFALSEと評価されてしまいます

解決策は単純で、それぞれのpos()で文字列が見つかった場合にTRUEを返すようにしてあげるだけです
pos()で文字列が見つかった場合は確実に0以上が返るので、以下のようにします

pos("aaa",STS) > 0 and (pos("bbb",STS) > 0 or pos("ccc",STS) > 0)

and/orにはビット演算子という性質もあるよ、ということを覚えておいてもらいたかったのでその点に触れましたが、実際のビット演算についての説明は省きます
興味があるようでしたらビット演算について調べてみてください
場合によってはコードを書く上でとても便利な手法となり得ます

No.3220 2016/11/30(Wed) 11:38:08

Re: POS関数と演算子の組み合わせについて / sana
stuncloud様

ご丁寧にありがとうございました
期待通りの結果になりました
>and/orにはビット演算子という性質もある
最終的に0が返るというところがまだ理解できていないので、勉強してみます

ありがとうございました

No.3221 2016/11/30(Wed) 11:55:43
IE11のタブ毎の操作について / みつ
お世話になっております。

IE11で一つのIEでタブ1、タブ2、タブ3を作成し、それぞれ操作したいのですが、
タブ1ばかり操作してしまいます。
タブ2、タブ3を選ぶ方法を教えていただけないでしょうか?

新しいタブは以下で作成しました。

CONST navOpenInNewTab = $800
  IE.navigate("UAL", navOpenInNewTab)

よろしくお願いします。

No.3197 2016/11/25(Fri) 13:11:01

Re: IE11のタブ毎の操作について / しろまさ
// オブジェクトの取り方の基本。後は加工してね。(URLだよね?)

Dim i, sh = CREATEOLEOBJ("Shell.Application"), wi = sh.Windows
For i = 0  To wi.Count - 1
  If wi.Item[i] = NOTHING Then Continue
  Try
    Ifb  wi.Item[i].Name = "Internet Explorer"
      IE  = wi.Item[i]
      MsgBox(IE.Document.Title + "<#CR>" + IE.LocationURL)
    EndIf
  Except
  EndTry
Next

// んで、慣れてくると「選択されたタブオブジェクト」がきっと取りたくなると思うのですが、
// http://siromasa.html.xdomain.jp/uwsc/u_term/InternetExplorerApplication.html
// 20150710 複数タブを使用するときのメモリの効率化を考えてみる。(Presented by しゅん)
// も参考にして下さい^^

No.3199 2016/11/25(Fri) 16:21:57

Re: IE11のタブ毎の操作について / みつ
しろまさ様

加工したらばっちり動きました。
また、サイトも教えて頂きありがとうございました。

まだまだ勉強します。

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

No.3216 2016/11/27(Sun) 08:21:16
配列をセルに一括で代入する方法 / 藍
いつもお世話になります。
配列をセルに代入したいと思っていますがうまくいきません。
A1 ← Excel B1 ← word C1 ← access

EXCEL = CREATEOLEOBJ("Excel.Application")
EXCEL.visible = True
EXCEL.workbooks.add()
//
Dim tmp[2]
//
tmp[0] = "Excel"
tmp[1] = "Word"
tmp[2] = "Access"
EXCEL.Range("A1:C1") = tmp

よろしくお願いします。

No.3206 2016/11/26(Sat) 15:01:01

Re: 配列をセルに一括で代入する方法 / Nagatani
XLSetData(EXCEL,tmp,"A1")になります。
No.3210 2016/11/26(Sat) 17:24:21

Re: 配列をセルに一括で代入する方法 / 藍
ありがとうございました。
No.3215 2016/11/26(Sat) 21:43:41
キーワード組み合わせ作成をエクセルに入力する方法 / タカハシ
配列からエクセルファイルにXLSETDATAを使用して入力をしたいのですが、XLSETDATA( Excel, STR,"a"+num)の行がエラーと出ます。どこが間違っているのでしょうか?

DIM str1[] = "大阪","名古屋"
DIM str2[] = "観光","場所"

EXCEL = CREATEOLEOBJ("Excel.Application")
EXCEL.visible = True
Excel.WorkBooks.Open(FileName :="C:\Users\aruke\Dropbox\2-キーワードエクセル\キーワード.xlsx")
XLACTIVATE( Excel, "Sheet1")

FOR num = 0 TO length(str1)-1

FOR cnt = 0 TO length(str2)-1
STR = str1[num] + " " + str2[cnt]
XLSETDATA( Excel, STR,"a"+num)
NEXT

NEXT

No.3200 2016/11/25(Fri) 20:39:35

Re: キーワード組み合わせ作成をエクセルに入力する方法 / Nagatani
XLSETDATA( Excel, STR,"a"+num)
書き込むセル番地がA列の0行目だから、Excelには0行目はないから
XLSETDATA( Excel, STR,"a"+num+1)

No.3202 2016/11/25(Fri) 21:44:11

Re: キーワード組み合わせ作成をエクセルに入力する方法 / タカハシ
Nagatani様、返信ありがとうございます。XLSETDATA( Excel, STR,"a"+num+1)で試した所、A1とA11に出力されるだけになってしまいます。何か良い方法ないでしょうか?
私の方で試した事は下記ですが、A1だけに出力されるだけです。

DIM str1[] = "大阪","名古屋"
DIM str2[] = "観光","場所"
EXCEL = CREATEOLEOBJ("Excel.Application")
EXCEL.visible = True
Excel.WorkBooks.Open(FileName :="C:\Users\aruke\Dropbox\2-キーワードエクセル\記事タイトル_画像_キーワード.xlsx")
XLACTIVATE( Excel, "Sheet1")

for i = 1 to length(str1)-1

FOR num = 0 TO length(str1)-1

FOR cnt = 0 TO length(str2)-1
STR = str1[num] + " " + str2[cnt]
XLSETDATA( Excel, STR,"a" + i)
NEXT

NEXT

next

No.3203 2016/11/26(Sat) 10:45:01

Re: キーワード組み合わせ作成をエクセルに入力する方法 / タカハシ
一応下記のコードでできました。かなり回りくどいやり方ですが...

DIM str1[] = "大阪","名古屋"
DIM str2[] = "観光","場所"
EXCEL = CREATEOLEOBJ("Excel.Application")
EXCEL.visible = True
Excel.WorkBooks.Open(FileName :="C:\Users\aruke\Dropbox\2-キーワードエクセル\記事タイトル_画像_キーワード.xlsx")
XLACTIVATE( Excel, "Sheet1")

FOR num = 0 TO length(str1)-1

FOR cnt = 0 TO length(str2)-1
STR = str1[num] + " " + str2[cnt]
print STR
NEXT

NEXT

pid = getid(GET_LOGPRINT_WIN)
text = getstr(pid, 1, STR_ACC_EDIT)
SENDSTR(0,text)
Excel.Range("A1").PasteSpecial()  // 貼り付け

No.3204 2016/11/26(Sat) 10:52:26

Re: キーワード組み合わせ作成をエクセルに入力する方法 / 俄プログラマー
文字と数字の計算結果を組み合わせるには
"a"+num+1
ではダメです。正しくは
"a"+(num+1)

補足
配列分のループなら
For In Next 文を使うとスマートです。

No.3205 2016/11/26(Sat) 11:23:12

Re: キーワード組み合わせ作成をエクセルに入力する方法 / タカハシ
俄プログラマー様、"a"+(num+1)は知らなかったです、ありがとうございます。
下記のコードで試しましたが、うまくいきません。

DIM str1[] = "大阪","名古屋"
DIM str2[] = "観光","場所"
EXCEL = CREATEOLEOBJ("Excel.Application")
EXCEL.visible = True
Excel.WorkBooks.Open(FileName :="C:\Users\aruke\Dropbox\2-キーワードエクセル\記事タイトル_画像_広告キーワード.xlsx")
XLACTIVATE( Excel, "Sheet2")
kazu=1
kazu1=length(str1)+(str2)

for z = kazu to kazu1

for i in str1

for y in str2

STR = i + " " + y
xlsetdata(excel, str, "a"+z)

next

next

next

No.3207 2016/11/26(Sat) 16:09:44

Re: キーワード組み合わせ作成をエクセルに入力する方法 / タカハシ
下記のコードでもやってみました。
//A11A12A21A22に、大阪 名古屋×観光 場所の組み合わせが出力される
//したい処理、A1からA4に出力

DIM str1[] = "大阪","名古屋"
DIM str2[] = "観光","場所"

EXCEL = CREATEOLEOBJ("Excel.Application")
EXCEL.visible = True
Excel.WorkBooks.Open(FileName :="C:\Users\aruke\Dropbox\2-キーワードエクセル\記事タイトル_画像_広告管理\経理転職キーワード.xlsx")
XLACTIVATE( Excel, "Sheet2")

FOR num = 0 TO length(str1)-1

FOR cnt = 0 TO length(str2)-1
STR = str1[num] + " " + str2[cnt]
XLSETDATA( Excel, STR,"a"+(num+1)+(cnt+1))
NEXT

NEXT

No.3208 2016/11/26(Sat) 16:11:19

Re: キーワード組み合わせ作成をエクセルに入力する方法 / Nagatani
私だったらカウンターを付けます。
Counter=1
FOR num = 0 TO length(str1)-1
FOR cnt = 0 TO length(str2)-1
STR = str1[num] + " " + str2[cnt]
XLSETDATA( Excel, STR,"A"+(Counter))
Counter=Counter+1
NEXT
NEXT

右記の式では("a" + (num + 1)) = "a1"となりますが
先に数値を足しこまないと("a" + num + 1) = "a01"となります

No.3209 2016/11/26(Sat) 17:10:12

Re: キーワード組み合わせ作成をエクセルに入力する方法 / 俄プログラマー
>A11A12A21A22に、大阪 名古屋×観光 場所の組み合わせが出力される

A1〜A4に出力させる前に理解して欲しい事
なぜ失敗したのか?これを解決すると今後役に立つでしょう。
まずは二重for文を使った場合のfor文の動きを理解してほしいです。

"a"+(num+1)+(cnt+1)
num=0 cnt=0の時
"a" + (0+1) + (0+1)
先に()内が計算されて
"a" + (1) + (1)
となり
"a" + 1 + 1

"a11"
になります。

つまり二重にfor文を使った場合は順番に
num = 0 , cnt = 0 結果 a11
num = 0 , cnt = 1 結果 a12
num = 1 , cnt = 0 結果 a21
num = 1 , cnt = 1 結果 a22

と言う動きになります。
どんな動きをするかはnumの値、cntの値、計算結果をprint文を使って表示してみると分かり易いですよ。

No.3211 2016/11/26(Sat) 18:58:21

Re: キーワード組み合わせ作成をエクセルに入力する方法 / タカハシ
Nagatani様、ありがとうございます。無事希望通りの出力できました。
Counter=1という発想がまったく自分では思いつかなかったです。
下記のコードでできました、ありがとうございます。

Counter=1
FOR num = 0 TO length(str1)-1

FOR cnt = 0 TO length(str2)-1
STR = str1[num] + " " + str2[cnt]
XLSETDATA( Excel, STR,"A"+(Counter))
Counter=Counter+1
NEXT

NEXT

No.3212 2016/11/26(Sat) 19:39:47

Re: キーワード組み合わせ作成をエクセルに入力する方法 / タカハシ
俄プログラマー様、分かりやすい説明ありがとうございます。
下記の説明でイメージがつかめました。
もっと、UWSC使いこなせるように精進していきます。
num = 0 , cnt = 0 結果 a11
num = 0 , cnt = 1 結果 a12
num = 1 , cnt = 0 結果 a21
num = 1 , cnt = 1 結果 a22

No.3213 2016/11/26(Sat) 19:45:07

Re: キーワード組み合わせ作成をエクセルに入力する方法 / タカハシ
Nagatani様、俄プログラマー様のおかげでfor inでやる方法も無事できました。
ありがとうございます。

DIM str1[] = "大阪","名古屋"
DIM str2[] = "観光","場所"
EXCEL = CREATEOLEOBJ("Excel.Application")
EXCEL.visible = True
Excel.WorkBooks.Open(FileName :="C:\Users\aruke\Dropbox\2-キーワードエクセル\記事タイトル_画像.xlsx")
XLACTIVATE( Excel, "Sheet2")
Counter=1
for i in str1

for y in str2

STR = i + " " + y
xlsetdata(excel, str, "A"+(Counter))
Counter=Counter+1
next

next

No.3214 2016/11/26(Sat) 19:51:00
全1170件 [ ページ : << 1 ... 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 ... 117 >> ]