質問投稿でgooポイントが当たるキャンペーン実施中!!>>

あるWEBシステムで、個人IDをブラウザ上のフィールドに入力して検索ボタンを押すと検索結果を表示、エクスポートボタンを押すとCSVで保存する仕組みがあるとします。

UWSCにて、
エクセルのA列に並んだ個人IDの一番上をコピーし、
WEBシステムに貼り付けてCSV保存という動作を、上から順に個人IDが無くなるまで繰り返すという作業をさせたいのですが、
次の個人IDが無いという判断のさせ方が分かりません。
詳しい方教えてください。

A 回答 (5件)

> nullだったらメッセージを出して終了


> nullじゃなかったらカーソルキー↓を押下して次の処理に進む、

それだったらこんな感じでしょう。

hoge=GETSTR(0)

IFB LENGTH(hoge)=0
MSGBOX("個人IDを全て読み終えました。処理を終了します。")
EXITEXIT
ENDIF

KBD(VK_DOWN,CLICK,50) //カーソル↓を押す

…以降、次の処理…
    • good
    • 0
この回答へのお礼

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

ちなみに、エクセルのセルをCtrl+Vでコピーすると
何故か、LENGTH(hoge)=2 になるんです。(0でない)
なので、LENGTH(hoge)>2 の条件を満たす間ループさせる事でうまく行きました。

お礼日時:2018/09/28 11:27

> 何故か、LENGTH(hoge)=2 になるんです。

(0でない)

それ、言われてみて気づきました。空のセルでも改行文字CRLFは入れておかないと、2行以上コピーした場合にデータの数が合わなくなっちゃいますよね…。もし改行文字がなければ、セルA1,A2をコピーしたときにどっちかのセルが空だとデータは1個だけになるため、データの数が合いません。しかもデータが1個だと、A1,A2どっちが空だったかもわかりません。これはまずい。

だからLENGTH関数で取得した文字数は、セルに入っている文字数+2になります。回答前に気づかなかったのはうかつだった!
    • good
    • 0
この回答へのお礼

いえいえ問題ありません。わざわざ返信ありがとうございます。

お礼日時:2018/10/02 18:33

UWSCのGETSTR関数で、クリップボードの中身を調べるとか。

hoge=GETSTR(0) ってやるとクリップボードからテキストをコピーできるから、それでhogeが空文字列ならばコピー元が空ってことになります。
    • good
    • 0
この回答へのお礼

ありがとうございます。
教えていただいた関数で取得できました!

nullだったらメッセージを出して終了
nullじゃなかったらカーソルキー↓を押下して次の処理に進む、
という風にしたかったらどうすればいいですか?
(「次の処理」というのは完成してます)

お礼日時:2018/09/27 14:52

MATCH関数でA列の値を検索してエラーが返ってきたら同じもの(ID)はないと判断。



…で良いような気がする。
    • good
    • 0
この回答へのお礼

それはExcel上での話ですよね?
UWSC上からExcelのエラーを検知できないですよね・・・

お礼日時:2018/09/26 17:00

UWSCの画像認識でいけませんか


コピーする前の選択した状態で拾える場所がありそうです。
実行してないので憶測です。
ご自身で試行した内容も記載したほうが良いと思います。
    • good
    • 0
この回答へのお礼

解決方法が思い当たらずまだ試行してません。

セルの番地で言うと、A2、A3・・・・A10に個人IDが入っておりそれ以下は空のセルになります。
ですが、最下部がA10とは限らず、A5の時もあればA50の時もありそうなのです。

お礼日時:2018/09/26 17:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aと関連する良く見られている質問

Q(UWSC)エクセルのセルの値を読み込むには?

UWSCで、エクセルのセルの値を読みこむ方法について
悩んでおります。

Excel = GETACTIVEOLEOBJ("Excel.Application");
val1 = Excel.ActiveSheet.range("A1").value;
を使えば、開いているエクセルのA1セルにある値を
「val1」に読み込むことができました。

今、A1~A100にある100個のリストを順々に読み込むことを
考えています。おそらくfor文を使って、以下のようにするのかな?
と思っております。
for i=1 to 100
val=○○
next
A1~A100の値を順々に読み込むにはどのようにすればいいのでしょうか?

Aベストアンサー

Pro版だったらループなんてしなくても、XLGETDATA関数を使えば一発で配列変数に取り込めます。(UWSCのヘルプにサンプルコードがあります)

Pro版ではない通常UWSCだと、以下の処理で一個ずつ値を引っ張ってくるしかないでしょう。

1)F2キーを押す
2)Shift+Homeを押す
3)Ctrl+Cを押す
4)クリップボードから値を変数に読み込む(GETSTR関数を使用)
5)Enterを押す

という一連の処理を100回繰り返すわけです。

Q(UWSC) エクセルのセルをコピーするには?

UWSCで、エクセルにあるセルの中身をコピーしたいと
考えています。

getstrを使って、
a = GETSTR(GETID("Microsoft Excel","XLMAIN"),p)
 (pは適当な数字)
としましたがうまくいかないみたいです。

例えば、i行j列のセルにある文字をコピーするには、
どのようにすればいいのでしょうか?

KBD(VK_CTRL,DOWN,32)
KBD(VK_C,CLICK,31)
KBD(VK_CTRL,UP,40)
でもかまいません。

Aベストアンサー

こんにちは。

UWSC Pro ならば『i行j列のセルの値』を得るための組み込み関数を利用可能です。uwsc.chm のスクリプト≫スクリプト関数≫Excel操作関連(Pro版) にリファレンスがありますのでご参考までにどうぞ。

(関連組み込み関数)

XLOPEN
XLCLOSE
XLACTIVATE
XLSHEET
XLGETDATA
XLSETDATA

(スクリプト例 - c:\a.xls の r1c2 セル値を表示します)

dim e = XLOPEN("C:\a.xls");

try
  XLACTIVATE(e, "Sheet1")
  dim r = 1;
  dim c = 2;
  dim v = XLGETDATA(e, r, c); // r1c2 セル値を v に代入する
  MSGBOX(v);
finally
  XLCLOSE(e);
endtry

Q行き過ぎ量が計算値と実験した値と違うんですけどどうしてですか?

行き過ぎ量が計算値と実験した値と違うんですけどどうしてですか?

Aベストアンサー

計算には無い外乱の影響。

Q就職のため、Excelの勉強をしたいのですがPCにExcelが入っておりません。 (古いLenovo

就職のため、Excelの勉強をしたいのですがPCにExcelが入っておりません。
(古いLenovoのPCです)

又、PCはインターネット契約もしていない為、ネットを使ってのExcelのダウンロードも出来ません。

PCにExcel機能を追加するソフトは売っているでしょうか?
その場合最新、又はオススメのソフトを教えて頂きたいです。よろしくお願い致します。

Aベストアンサー

メルカリで買う場合は、本当にマイクロソフト純正のExcelやWordかを一度は疑った方がいいかも知れませんね。キングソフトの互換Officeってオチがあり得ますから。また油断してると、とんでもなく古いゴミPCを売りつけられる恐れもあります。安い場合はなおのこと。

企業で一番普及しているバージョンは2010だと思いますが、本質的なところは2010も2019も変わりません。新しいバージョンにしか存在しない機能を除き、どちらで覚えたことでも基本的にはどちらにも通用すると考えて大丈夫です。さらに古い2007でも十分に通用するので、操作感覚を身につけたいだけであれば2007以降のどれでもいいです。ただし2007はもうサポート期限が過ぎているため、アップデートが終了していることは知っておいてください。2010は2020年10月13日までサポートがあるから、まだもう少し猶予があります。これだけあれば練習用には十分でしょう。

MOSを受ける場合はバージョンごとに試験が用意されてるから、それに合わせたバージョンを用意すべきですが、MOSはバージョンごとに取る必要はありません。そうすることを求められている場合を除いて、どれか一つ取っていれば通用します。

MOSと言えば、今はOffice365にしていると常に新機能が追加されていくようになってるんで、試験内容もそれに合わせて都度都度アップデートするんだろうか?って疑問はありますね。試験はパッケージでOffice20xxみたいに売られている物で使える機能に限定することにしても、どの機能がOffice365で追加されたものかってのをユーザーが知ってないといけないため、それは現実的じゃないでしょうし。

メルカリで買う場合は、本当にマイクロソフト純正のExcelやWordかを一度は疑った方がいいかも知れませんね。キングソフトの互換Officeってオチがあり得ますから。また油断してると、とんでもなく古いゴミPCを売りつけられる恐れもあります。安い場合はなおのこと。

企業で一番普及しているバージョンは2010だと思いますが、本質的なところは2010も2019も変わりません。新しいバージョンにしか存在しない機能を除き、どちらで覚えたことでも基本的にはどちらにも通用すると考えて大丈夫です。さらに古い2007でも十...続きを読む

Qエクセル関数で 4県あって、1を押したら東京が2を押したら神奈川などいちいち東京とか打ち込まない方法

エクセル関数で
4県あって、1を押したら東京が2を押したら神奈川などいちいち東京とか打ち込まない方法ありますか⁉︎

Aベストアンサー

『データの入力規則』を使うのが簡単です。

◆手順 (添付図参照・・・図の番号と手順の番号は対応しています)
1.リストを空いているセルに記入します。 リストとは、東京、神奈川、・・・の表のことです。
2.入力したいセルを選択して、メニューから『データ』
3.『データの入力規則』
4.『データの入力規則』
5.入力値の種類のところで『リスト』を選択
6.元の値のところに、手順1で作成したリストのセル範囲を指定
7.『OK』

これで、▼印をクリックして、選択肢から選べるようになります。

Qエクセルのユーザー定義関数について

エクセルのユーザー定義関数について教えてください。

ユーザー定義関数なるものがあると知り、関数を作成していました。
結構便利なものが作れそうだと分かり
http://kabu-macro.com/word/ya-yo/user_teigikansuul.html
の消費税計算を参考に、簡単な四則演算の計算式を組んでいました。
ある程度普段使う簡単だけど面倒だった数式を組んだのちに、
vlookup関数の代わりに、indexとmatch関数を良く使っているので、これをちょっと使ってvlookup_2という関数を作ろうとしていたのですが、
ユーザー定義関数には既存のワークシート関数を組み込むことはできないのでしょうか?
また組み込めるとしたら上記のindexとmatch関数をどのように配置したら良いのでしょうか?

Aベストアンサー

こんにちは

ユーザ定義関数は(マクロと同様)VBAという言語で記述しています。
ワークシートで利用する関数も(ほとんどのものは)利用することが可能です。

利用法は、例えばINDEX関数であれば
 WorksheetFunction.Index( ~~~ )
のように、WorksheetFunctionオブジェクトのメソッドとして呼び出せばよいです。
引数の内容はシートの関数とほとんど同じですが、一応、事前に確認なさった方がよろしいかと。
https://docs.microsoft.com/ja-jp/office/vba/api/Excel.WorksheetFunction.Index

なお、VBAから利用できるワークシート関数の一覧が以下にありますので、ご参考までに。
https://msdn.microsoft.com/ja-jp/library/office/ff822194.aspx
https://docs.microsoft.com/ja-jp/office/vba/api/excel.worksheetfunction

Qエクセル2013で計算式を入力しましたが、答えが出ず空白のままで困ってます。

エクセル2013で計算式を入力しましたが、答えが出ず空白のままで困ってます。

Aベストアンサー

#VALUE
のエラーが返ってきたということは、計算できないセルを参照しているということになります。

一つ一つ確認するのは面倒でしょうから、参照するセル全体に対して条件付き書式で
 「数値」なら「セルを黄色で塗りつぶす」
のような設定をして計算できない値が入力されているセルを探してみましょう。
シート全体を選択し、
「数式を使用して、書式設定するセルを決定」にして
 =A1+1
を設定。その後、セルの書式をどう修飾するか決めましょう。

これで数や空白のセルは修飾されるので、修飾されていないセルを参照範囲から見つけてください。
そのセルが元凶です。

確認できたらこの”条件付き書式”の設定は削除してください。


・・・余談・・・

シート全体を選択する場合は行番号1の上、列番号Aの左をクリックする。

Q万年カレンダーについて。

次のexcelのデータで、おかしなところがありましたら、教えていただけると幸いです。
https://fire.st/9Il0GsR

Aベストアンサー

>確かに35行は、緑になりました。どうしてそうなるのでしょうか?教えていただけると幸いです。
添付の画像を参照ください。
2018年6月の例ですが、C35へ
=COUNTIF(祝日,A35)
と入力しています。結果は、1048470が表示されます。
これは、=COUNTIF($Y:$Y,A35)と同じことです。(祝日の範囲がY列全体の為)
A35は空白なので、Y列の空白の部分がカウントされます。その為、1048470になります。
COUNTIF(祝日,A35)の結果が0でなければ、判定は真なので、色がつく条件式が成立します。
そのため、緑になります。

>すみません。COUNTIF 関数のみで、祝日に色をつけるとするとどうすれば良いのでしょうか?教えていただけると幸いです。
祝日の範囲を、空白を除いて、正確に定義しなおします。
一旦、祝日の名前を削除し、実際に祝日の日付が入力されているセル範囲Y3:Y107を、祝日の範囲にします。
(つまり、Y列全体をやめて、$Y$3:$Y$107にします)
そうすると、COUNTIF 関数のみで祝日に色をつけることができます。
祝日の名前を削除する方法は、下記を参照ください。(削除せず、変更することも可能です)
https://www.wanichan.com/pc/excel/2016/8/47.html

COUNTIF 関数のみで、祝日に色をつけるようにした場合は、祝日の追加が発生すると(2023年以降分の祝日の追加など)、Y列の範囲が変わるので毎回、それにあわせて、祝日の範囲もかえる必要があります。

>確かに35行は、緑になりました。どうしてそうなるのでしょうか?教えていただけると幸いです。
添付の画像を参照ください。
2018年6月の例ですが、C35へ
=COUNTIF(祝日,A35)
と入力しています。結果は、1048470が表示されます。
これは、=COUNTIF($Y:$Y,A35)と同じことです。(祝日の範囲がY列全体の為)
A35は空白なので、Y列の空白の部分がカウントされます。その為、1048470になります。
COUNTIF(祝日,A35)の結果が0でなければ、判定は真なので、色がつく条件式が成立します。
そのため、緑になります。...続きを読む

QExcelで数値が入っているセルにおいてその数値を表示せず、代わりに任意の文字列を表示したいのですが

Excelで数値が入っているセルにおいてその数値を表示せず、代わりに任意の文字列を表示したいのですが何か方法はありますか?

あるセルに元の数値があってそれをベースに別のセルで計算を行っています。但しその元の数値を印刷時に見えなくし、代わりに任意の文字列を表示したいのです。

例えば社内でのみ閲覧可能な定価相当の数値があり、これにある掛け率で売価を計算しているとします。当然この売価は印刷時において見える必要があります。一方元の数値の入ったセル部分には実際には社内定価の数値が入っているのですがこれを表示するのではなく「オープン価格」として表示したいケースです。
いい方法はありますか?

Aベストアンサー

「セルの書式設定」-「ユーザ定義」で、”オープン価格” と定義してみては。

Q時刻文字列を判定する方法について

こんにちは
時刻文字列を比較する方法についておしえてください。

セルに時刻文字列 9:01とか12:34などが記載されていたら「OK」 
そうでない場合は「NG」となるような判定方法についておしえてください。
例)
12:34 MSGBOX ”OK”
1234  MSGBOX ”NG”
宜しくお願いいたします。

Aベストアンサー

どこかのセルに ”OK” または ”NG” と表示させたいなら…
例にある表示が、
 13:56
の書式であること【だけ】を対象としているなら、
 =IF(CELL("format",A1)="D9","GOOD","NG")
でOK。
 12:34:56
の書式なら「D9」の部分を「D8」にすればいい。

CELL関数について調べてみると幸せになれるかもしれません。

・・・
もしも入力時に ”時刻” 以外は弾きたいと言うのであれば「入力規則」で ”時刻” を指定してみましょう。
そして ”時刻” 以外の入力がされた時に返す「エラーメッセージ」を設定すれば良い。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング