[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 2chのread.cgiへ]
Update time : 09/20 10:57 / Filesize : 218 KB / Number-of Response : 791
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Excel VBA質問スレ Part13



1 名前:デフォルトの名無しさん mailto:sage [2009/09/30(水) 12:25:04 ]
過去スレ
01 pc11.2ch.net/test/read.cgi/tech/1054356121/
02 pc11.2ch.net/test/read.cgi/tech/1168308855/
03 pc11.2ch.net/test/read.cgi/tech/1180192018/
04 pc11.2ch.net/test/read.cgi/tech/1189814602/
05 pc11.2ch.net/test/read.cgi/tech/1197448064/
06 pc11.2ch.net/test/read.cgi/tech/1205231499/
07 pc11.2ch.net/test/read.cgi/tech/1212587819/
08 pc11.2ch.net/test/read.cgi/tech/1219673793/
09 pc11.2ch.net/test/read.cgi/tech/1228372971/
10 pc12.2ch.net/test/read.cgi/tech/1235332603/
11 pc12.2ch.net/test/read.cgi/tech/1241885130/
12 pc12.2ch.net/test/read.cgi/tech/1247566074/

239 名前:233 mailto:sage [2009/10/10(土) 22:55:20 ]
>>235
そうです。CommandButtonです。

それはフォームについてVBEで書く時ではないですか?

シート上に貼りつけて、対象マクロを選択する時ってマクロの登録(N)から
マクロを選択するけど同じのを選択した時に、どのように区別がつけられるのか?
と思いまして質問しています。どうなんでしょうか。


240 名前:デフォルトの名無しさん [2009/10/10(土) 22:56:50 ]
>>238

あれは CopyExec というマクロに対して、パラメータとして AまたはBを与えるという意味で
書きました。判りにくくてすいません。


241 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 23:01:50 ]
>>239
Excel2007じゃないんでなんとも言えないけれど
対象ボタンを右くりっくして
"コードの表示"をすると

シートオブジェクトのコード画面に
Private Sub CommandButton1_Click()

End Sub
とかできない?

242 名前:239 mailto:sage [2009/10/10(土) 23:08:48 ]
>>241
ボタンを右クリックして出てくるメニューの一覧が
切り取り
コピー
貼りつけ
------
テキストの編集
------
グループ化
順序
------
マクロの登録
コントロールの書式設定

でコードの標示というのはここからは出来ないみたいですが


243 名前:241 mailto:sage [2009/10/10(土) 23:12:16 ]
>>242
自分のExcel古いせいかメニューが違うようで

お力になれませんでした! すみません

244 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 23:41:15 ]
>>242
VBE開いてボタン貼り付けたシートのコードの表示すればいい


245 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 23:49:31 ]
デザインモードになってないだけじゃないの。
デザインモードにしてボタンをダブルクリックでVBEの画面になる。

246 名前:デフォルトの名無しさん [2009/10/11(日) 00:36:01 ]
エクセル2007で質問です。
アドインタブのユーザー 設定のツールバーのところにボタン1、ボタン2を作って、
ボタン1を押したら、ボタン1のEnabledをFalse、2をTrue
ボタン2を押したら1はTrue、2はFalseに設定したはずですが、
ボタン1を押したあと、ボタン2が押せる状態になっていません。タブを切り替えるとなぜかうまくいくんですが。
2007はこういう仕様なんでしょうか

247 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 00:43:51 ]
またーり行こうぜ



248 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 00:54:36 ]
タブってリボンのことか?


249 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 00:59:03 ]
>>239
同じマクロを呼び出した場合、呼び出し元の区別はつかんだろうな
パラメータが指定できるなら そこで区別つけるしかない

あと
フォーム上でもシート上でも
クリックイベントのプロシージャは利用できる

250 名前:239 mailto:sage [2009/10/11(日) 06:55:15 ]
>>249
>呼び出し元の区別はつかんだろうな

今回は同じマクロを使う事は諦めます。ありがとうございました。

251 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 07:38:14 ]
それActiveXコントロールのボタンじゃなくて、フォームのボタンだよね。
application.callerでボタンのテキストが取得できるから、それで判断。

252 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 08:04:41 ]
>>251
MsgBox "呼出し元 " & Application.Caller
でシート上のボタンでも呼出し元を判別する事が出来ました。ありがとう!

253 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 10:45:19 ]
あー、まだ見てたんだ。よかったよかった。
フォームのボタンに限らず、イベントの発火元は大抵わかるようになってるんだよ。
まぁ、中にはわからにものや、任意のマクロ(イベントハンドラ)を登録できないのもあるけどね。

254 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 11:46:13 ]
Private Sub CommandButton1_Click()
  MacroA pram:=1
End Sub
Private Sub CommandButton2_Click()
  MacroA pram:=2
End Sub

こういうのは駄目?

255 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 12:08:38 ]
いや、それでいいし、実を言えばフォームのボタンの処理もそうしたほうがいいんだ。
プログラマ的な説明だと、イベントハンドラ内に直接処理を実装すると、凝集度が低くなるから。

256 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 17:21:22 ]
>>凝集

臨床検査学以外で初めて聞いたよ。
まさか一般社会で聞く単語とは思ってもいなかった。

257 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 18:01:09 ]
ちょっと教えてもらっていいですか?
Cellsの使い方について
このスレでも時々みかけるんですが

a = Sheets("Sheet1").Cells(1,1).Value

a = Sheets("Sheet1").Cells(1,1)

は結果的に両方共 A1セルの内容を変数aに代入している事になっているのだけど
前者と後者の違いってあるのですか?

本来は、前者であるべきとは思いますが
後者を使った時の弊害ってなにかあります?



258 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 18:22:07 ]
>>257
人によってはデフォルトプロパティを中途半端に省略したソースを汚いと感じることもある。
自分一人で使うだけなら好きにすればいい。
あとは、タイピング量が数回増えるのも人によっては弊害と考えるかもしれない。

259 名前:257 mailto:sage [2009/10/11(日) 18:37:12 ]
>>258
結局の所どちらでも結果は一緒なんだから
どちらを使ってもいいんですね

ソースが綺麗か汚いかはその人の主観なんだから
あまり気にしません

とは言え 自分自身のソースみて汚いと感じる事があるんで
精進しなくては

ありがとうございます

260 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 20:48:33 ]
凝集度と結合度

261 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 23:13:40 ]
>>259
また荒れる原因になるかもしれないんだけど、
やっぱりデフォルトプロパティは省略すべきじゃないと思うよ。
range型に代入する時なんか、可読性云々じゃなくて、
後から見て訳が分からなくなる・・・時がある。

262 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 23:36:28 ]
個人的には最初は省略しないで書いた方がいいと思う。
で、覚えたら好きに書けばいいと思う。
覚えていれば省略しても、普通にも書けるが、覚えてないと普通には書けないと思うよ。

263 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 23:59:39 ]
者によっては、特にオブジェクトに大量にアクセスする場合など処理が冗長になることがある
原則的に省略しないほうがいいと俺も思うけど、場面場面で使い分けるべきではある

264 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 00:00:30 ]
C#に移行したいとかVBAが.NETベースになった時の事も考えて、
デフォルトプロパティは省略しない方がいいんじゃないだろうかと言ってみる
それならとばかりにWithステートメントを多用すると、
C#で「面倒臭ぇと」ボヤく事になる罠

265 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 00:09:21 ]
それもこれも言語の貧弱さが原因なんだよな

266 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 00:13:01 ]
単純ミス防止でoption explicit とか書くだろ
それと同じで曖昧な表現は極力明確にするほうが良いと思う
どこまでが曖昧な表現かは人によるw

267 名前:257 mailto:sage [2009/10/12(月) 01:14:57 ]
>>261-266
みなさんありがとうこざいます
やはり省略しない方がよさそうですね
確かに単純なプログラムでは問題なくても
複雑なプログラムになるほど後で見て訳分からなくなりそうですもんね
でも
Itemプロパティぐらいは省略してもいいかなと思ってます(^^



268 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 06:01:17 ]
セルの値が数値ならValueじゃなくValue2が普通だから、必然的にプロパティは書くことが多いな。
Itemまで書くとくどいよな。
Worksheets.Item("Sheet1")とかCells.Item(1,1)とかする奴はあまりいないな。

269 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 22:20:08 ]
             /)
           ///)
          /,.=゙''"/
   /     i f ,.r='"-‐'つ____   こまけぇこたぁいいんだよ!!
  /      /   _,.-‐'~/⌒  ⌒\
    /   ,i   ,二ニ⊃( ●). (●)\
   /    ノ    il゙フ::::::⌒(__人__)⌒::::: \
      ,イ「ト、  ,!,!|     |r┬-|     |
     / iトヾヽ_/ィ"\      `ー'´     /


270 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 16:41:04 ]
A1A2・・・に単語が並んでいて
B1B2・・・にグーグルかヤフーのその単語の検索件数を書き入れていくというような
Webクエリは作れないものでしょうか?

271 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 18:09:44 ]
>>270
そのままでは件数がクエリで取り出せないので、VBAと組み合わせる必要がある

272 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 18:18:16 ]
VBA使ってどうすればよいのでしょうか?
ぜひ御教授お願いします。数万の単語の検索に途方にくれています>__<

273 名前:デフォルトの名無しさん [2009/10/13(火) 19:14:30 ]
kwsk

274 名前:デフォルトの名無しさん [2009/10/13(火) 19:26:29 ]
ヒントだけでも教えてください。

1つのセルに1つの文字列が入っています。
各行はその文字列の集合とします。
その文字が何文字あるのかと、
各行の文字の全組み合わせ(各行の全部分集合)が全体の中で何個あるのか、
その結果を出力したいのですがどうしたらいいでしょうか?
例えば、
A,B,C,D
A,B
A,B,C
A
このように各セルに文字が入っていたとすると、
全体の中でAは4個、Bは3個、Cは2個、Dは1個あります。
また、組み合わせの個数は全体の中でそれぞれ、
(A,B)は3個、(A,C)は2個、(A,D)は1個
(B,C)は2個、(B,D)は1個
(C,D)は1個
(A,B,C)は2個、(A,B,D)は1個、(A,C,D)は1個
(B,C,D)は1個
(A,B,C,D)は1個となります。

これは具体的な例ですが、実際は何行何列でも何文字でも対応できるように一般化したいです。
意外と難しくてどうしたらいいかわかりませんでした。
こうすればできるだろうという方針だけでもどなたかご教授お願いします。

275 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 21:11:13 ]
A,B,C,D なのに A,C がマッチするのかよ。
Instrで文字列内を検索すりゃ良いんでない?

てか、どんだけの文字数があるのかさっぱりわからん。
無数にある文字種類から検索するとなったら酷い事になりそうだ。

使われてる文字の一覧を作って、それを検索して行くのが良いかもな。
文字種類は無限です。って言うなら、俺は降りる。

276 名前:デフォルトの名無しさん [2009/10/13(火) 21:53:11 ]
>>275
わかりにくい説明で本当すいません。
「A,B,C,D」は1つの文字列ではありません。1つのセルに1つの文字が入っています。
コンマの区切りでセルを表したつもりでした。
「A,B,C,D」の、AはRange("A1")、BはRange("B1")、CはRange("C1")、DはRange("D1")
とに入っています。

実際はAとかBでなく、りんごとかバナナみたいな1つの単語が1つのセルに入ることになりますが。
(A,C)は(りんご、バナナ)という組み合わせだと考えていただけたらわかりやすいかと思います。

使われる単語は無限ではありません。
それでも仰るとおり数が増えれば酷いことにはなりますが、
そこはまた別問題で解決する算段はあります。

(りんご、バナナ)という組み合わせが全体に何個あるか?という話なんです。
わかりにくい説明ですいませんが。

VBAで、ある集合の部分集合を全て列挙するやり方だけでもどなたか
ご教示してくださいませんか?
一応自分でも調べてみましたがわかりませんでした。

277 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 22:05:47 ]
>>274
ヒント モリケン



278 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 22:12:31 ]
>276

275氏も書いてるがInStrでOK。

にしても説明ヘタだな、君は。

279 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 22:29:15 ]
人に判り易く自分のやりたい事を説明するっつーのも訓練が必要っすよ。 w

他人には(特に掲示板なんかでは)質問者のレベル・環境、そして何をどうしたいのかなんて判らないのだから。

(ここはExcel VBAスレだから或る程度は限定されてるけど)



280 名前:デフォルトの名無しさん [2009/10/13(火) 22:33:33 ]
>>275-279
すいませんがんばってみます。
サンプルでもうpすればわかりやすかったかも・

281 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 23:35:10 ]
1列に必ず同じ文字が入るなら簡単だろ。
この場合は4文字だから、組み合わせは
4C4=1
4C3=4
4C2=6
の11種類しかない。
組み合わせの形がわかるから、その組み合わせを順に行毎にループすりゃいい。



282 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 10:28:23 ]
270です。
VBAはかなりいろいろできるようになったのですが、ネットにつなぐスクリプトは
挑んだことがありません。またどうやってヤフーやゴーグルのデータを取り込んで
加工するかがわかりません。
一単語ごとに検索して検索数をコピペする作業は300ぐらいこなすとぐったりです。
どうすれば自動化したいのです・・・

283 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 11:04:49 ]
まずは日本語でどうぞ。

>1 ★5

284 名前:283 mailto:sage [2009/10/14(水) 11:06:50 ]
>2 ★5

だった;;

285 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 11:09:03 ]
データ→Webクエリ(で対象のアドレスを入れて)でシートに取り込むのをマクロで記録すればOK


ただし、こっからが問題ありでヤフーやらぐーぐる(だろ?w)が仕様変更でレイアウトなどを変更したら、それに合わせて
修正必須になる

286 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 11:13:47 ]
>>282
とりあえずヒントだけ。(環境依存な部分があるので、このままじゃ動かない)

Sub 件数取得()

  kw = "ぬるぽ ガッ"

  Set ObjHttp = CreateObject("Microsoft.XMLHTTP")
  ObjHttp.Open "GET", "www.google.co.jp/search?hl=ja&q=" & kw, False
  ObjHttp.Send
  src = StrConv(ObjHttp.responseBody, vbUnicode)
  Set ObjHttp = Nothing

  src = Mid(src, InStr(InStr(src, "id=resultStats") + 24, src, "<b>") + 3)
  src = Left(src, InStr(src, "</b>") - 1)

  Debug.Print "「"; kw; "」のヒット件数="; src

End Sub

287 名前:デフォルトの名無しさん [2009/10/14(水) 12:34:58 ]
質問させてください。(Ecel2003)

複数のセルをcsv形式で文字列変数に格納したいのですが、
Webで探したら1セル+","を繰り返す方法しか見つかりません
でした。

実際試して見ましたが対象セルが数万あるので処理に非常
に時間が掛かっております。

Joinなどを利用して一括で行うなど、高速化の手段は無い
のでしょうか?
(対象セルは矩形で表現できます)

ちなみに最終目的は複数のBookのある範囲のセル値を1つ
のcsvファイルにまとめることです。

よろしくお願いします。



288 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 12:41:09 ]
>>287
あくまでも想像だけど、時間がかかっているのは、たぶんセルの内容を1つずつ読み出してるから。
配列に一気に読み込んでから処理すれば、もっと速くなるはず。

289 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 13:01:44 ]
>>287
Join関数は一次元配列しか指定できないから、二次元から一次元への変換部分だけは
自分で工夫して作るしかない。

290 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 13:11:04 ]
>>288
違うと思うよ。
単純に連結すりゃだんだんサイズが大きくなってメモリに入りきれなくなり別のメモリ領域をしょっちゅう探して確保しなきゃならないから時間がかかるんだ。
昔は必要なサイズの文字列を用意しておいてMidステートメント(関数じゃない)ではめ込んでいくのが常道だったが、今はJoin関数があるから楽だな。

291 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 14:21:33 ]
>>286
神様ありがとうございます。
どういうふうな勉強をされたのでしょうか。ネットワーク関係のお仕事など
されているのでしょうか。参考になる本などを教えていただけるとうれしいです☆
ありがとうございます。

292 名前:287 mailto:sage [2009/10/14(水) 14:26:52 ]
回答ありがとうございました。

一次元に変換してJoinでやってみます。

293 名前:287 mailto:sage [2009/10/14(水) 15:53:51 ]
度々すみません。
追加で質問させてください。

先の件は一次元にしたら体感で数十倍以上早くなりました。
ありがとうございました。

文字列変数に格納したデータをcsv形式で保存すると、期待した
結果が""で囲われたcsvファイルが出来上がりました。

(以下サンプル)
"1,2,3,4,5,
1,2,3,4,5,
"

この先頭/末尾の「"」を入れたくないのですがどうすれば良い
のでしょうか?



294 名前:287 mailto:sage [2009/10/14(水) 16:26:40 ]
自己解決。

出力をWriteで行っておりましたがPrintに変えたら希望通りとなりました。
違いがよっく分かりませんが解決しましたのでご報告します。

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

295 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 16:27:54 ]
>>293
csv形式で保存するんじゃなくて、テキストファイルに出力する

296 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 17:05:17 ]
動的配列について質問なのですが
googleで検索などしたところ

Dim aaa() as string

など()のみで宣言したアトに

ReDim aaa(0 to 10)

のように範囲を指定して使う。みたいな例しか検索できませんでした
しかし、範囲を指定して使うならそれはすでに動的ではなく静的じゃないか
とずっと頭を抱えているのですが

要素数不明の配列を扱うことは無理なのでしょうか?

配列にデータを入れる際に、データ数カウントしながら入れて
その後ReDimすりゃいいってことですかね??

297 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 17:10:03 ]
と思ったら、データを入れる段階で「インデックスが範囲外」的なエラーでましたorz

入れる前に範囲決めろとか無茶なんですが・・・そういうのはvbaじゃ無理ですかね?



298 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 17:17:59 ]
>>296
あとから何度でもサイズを変更できるというのも一種の動的。

>>297
インデックス値を変数に入れておき、データを入れる前に、そのインデックス値を使って
配列をどんどん拡張していけばいい。
ただしReDimを使うと配列の中身がクリアされてしまうので
データを保持したままサイズを変更するにはReDim Preserveを使う必要がある。
VBAでは一般的なテクニック。

299 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 17:20:39 ]
>>286
繰り返し処理をしていたら400ほどでデータがなくなりました。
ブラウザでグーグルを見ると、あなたは拒絶しますのような画面が出てグーグル
使えなくなりました・・・
どうすれば・・・・・

300 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 17:23:17 ]
We're sorry...

301 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 17:25:33 ]
>>299
しばらく待つ

302 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 17:29:09 ]
>>299
そのサンプルはOpenでコネクションが開きっぱなしだから、まずは1回ごとにCloseしてみ
あとは、まあ連続アクセスは避けるとか。たとえば10秒間隔でアクセスするよう修正してみる

303 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 17:46:57 ]
Google にクエリを送信すること
をしてはいけないということです・・・

世界のグーグルを怒らせてしまって・・・

304 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 18:10:25 ]
We're sorry...
... but your computer or network may be sending automated queries.
To protect our users, we can't process your request right now.

See Google Help for more information.

305 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 18:48:06 ]
>>298
アドバイスありがとうございます

要素数をuboundで数えて、残り少なくなったら配列を拡張するという方法をとってみました
とりあえずはこれでなんとかなりそうです

306 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 23:45:51 ]
>>305
そんなファジーな使い方をw
かっちりと要素数取得すれば良いんじゃないか?

307 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 00:12:46 ]
>>299
別に質問でも回答でもないんだけど・・・
グーグルをそういう使い方したらいけないというのがわかって為になったわ



308 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 03:17:58 ]
ボクも、>>286のプログラムを使ってみた。
kabutomo.net/img.php?filename=dc_740000_1_1255544121.png

309 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 08:30:17 ]
299です。
復旧しました。復旧にはゆがんだ画像の絵のなかの文字を入力
させる画面が二回出てきて、復旧。その後、何回かグーグルを
普通に利用したところ、またゆがんだ絵の文字を入れろと・・・
すっかりブラックリストに載ってしまったみたいです・・・・・

英語グーグルにアクセスしても同じことで、違うのは、
送信ボタンが、I'm human と書いてあるところでした・・・
かなりこわい経験でした。400か500連続で、ストップというところ
でしょうか。気をつけてください。

それにしてもあなたはグーグルとのこの契約を知っているでしょう
とは・・・・

310 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 08:59:36 ]
やはりあなたは検索しすぎです
ばいばいおさるさんw

311 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 11:06:57 ]
>>309
ここから先はネットサービス板あたりの領域かな。
Googleの検索は1時間あたり何回までが限界とかそういうのをきちんと調査した上で、
それを越えないようなプログラムを工夫して作ることになる。

312 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 11:30:00 ]
ありがとうございます。頼っていたサービスなので非常に怖い思いをしました。
なんか世界から拒絶されたような・・・
手で作業するよりも早ければそれでいいです。一分に5つぐらいのペースのを
つくってみます。一月ほど休むことにします。
プログラマー向けのページには一日5000までとは書いてあったのですが・・・
ヤフーは5万までみたいです。

313 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 12:03:54 ]
外部にproxy用意して色んなIPから接続してやるのが定番

314 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 12:11:35 ]
外部にボットを用意して色んなPCから接続してやるのはどうでしょうか。

315 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 12:41:52 ]
ボットってか
もう
googleを攻撃しないであげて

316 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 13:47:02 ]
なるほど良く考えたらスクリプトアタックか

317 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 14:58:17 ]
OS:XP EXCEL2003、2007にて
Ctrl+6 や Ctrl+7といった数字のショートカットキー
を禁止にする方法はありませんでしょうか?
検索しても回答がなく、OnKeyでも拾えないので
困っています。



318 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 18:03:21 ]
VBAとどのような関係が?

319 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 20:53:16 ]
>>318
VBAでそのキーを押した際の処理を無効化したいんでしょ。

320 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 21:27:48 ]
フックは簡単にできるでしょ。

と思いやってみたが本当に拾えないな。
APIにあったと思うけど、スレ的にどうなんだろ。

321 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 22:20:20 ]
カーネルに入ってなかったっけか。

322 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 22:23:40 ]
結構前まではAPIの話題が出ただけで拒否反応する人はいたな
ライブラリ参照したりAPI使うのはエクセルVBAの構築手段として十分範囲内だと思うけど
API自体の話でもなければ

323 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 13:30:41 ]
グーグルって自分ではロボットつかいまくってるのに自分には使わないでというのは
やっぱりおかしいわ

324 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 15:39:10 ]
>>323

325 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 16:25:15 ]
XP SP3
EXCEL2002

現在、クライアントPCのファイルをデスクトップ上にあるイントラネットショートカットアイコンに
ドラッグアンドドロップでファイルをアップロードしているのですが、
クライアントPCのファイルをイントラネットにアップロードする事はVBAで処理可能でしょうか?


326 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 17:57:05 ]
VBAでTCP/IPって話は難しいとおもうが
VBAでイントラネットショートカットアイコンにドラッグアンドドロップ相当の
作業を行うのは幾分は簡単かと思う

327 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 20:17:36 ]
>325
ショートカットアイコンは
何処へのどんなショートカットなの?

サーバとかの共有フォルダへのショートカットなら
VBA使わなくてもって気もするが
あえてVBAなら
FileCopy すればいいだけのような気がするのだけど
そのへんどうなの?



328 名前:デフォルトの名無しさん [2009/10/16(金) 20:48:18 ]
質問させてください。

Excel2003ですが、任意の文字列を配列の中から検索して
インデックス番号を返すような処理はどのように行うのでしょう
か?

任意の文字列は必ず配列の中に完全一致で存在します。
また配列内に重複する文字列はありません。

myArray(0)="あああ"
myArray(1)="いいい"
myArray(2)="ううう"
myArray(3)="えええ"
myArray(4)="おおお"

の場合、"ううう"をキーにすれば2を求めたいのですが、配列
を回して比較する程度しか思いつきません。
Findメソッドなどで実現できないでしょうか?

よろしくお願いします。

329 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 21:38:56 ]
>>328
残念ながらVBAだけで一発で検索する方法はない。
検索を第一に考えるなら、2次元配列にデータを入れておき、
必要に応じてワークシートに転送してからワークシート関数で検索するという方法がある。
文字列の長さがすべて一定ならJoinで1つの文字列にまとめてから位置を調べるという手もある。

330 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 21:41:08 ]
>>328
目的によってはDictionaryオブジェクトが使える場合もある

331 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 21:49:56 ]
System.Collections.ArrayList

332 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 22:03:32 ]
配列がとても大きくて順次比較していては時間がかかるって言う事なら
配列のキーの部分が 昇順または降順でソートされているという条件で
古典的なバイナリサーチ手法を使えぱ時間は短縮できる

333 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 22:08:25 ]
ハイルデータが固定で数が多くないとか、なら連想配列だろうなあ
データ入力時に連想セットできたりするかね

334 名前:328 mailto:sage [2009/10/16(金) 22:37:34 ]
回答ありがとうございます。

フォルダ内にYYMMDD.xlsというファイルが複数あり、それをソートして
格納してある配列があります。
コンボボックスから2つのファイルを選択したらその期間内のファイルに
対して処理を行うことが目的です。

インデックス番号を取得してFor〜Nextの初期値と最終値にしたか
ったので質問させていただきました。

対象ファイル数は100以下です。
後のメンテを考え、素直に全数比較して新たな配列に格納する
方法で対応してみます。

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

335 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 08:07:18 ]
>>334
要素数が65536以下ならWorksheetFunction.Matchが使える。
この関数でバイナリサーチも出来るが、要素数が65536も超える場合も考慮するなら自前の関数書いた方がいいな。
要素数がたった100以下ならバイナリサーチじゃなくても無問題だけどな。



336 名前:325 mailto:sage [2009/10/17(土) 10:22:18 ]
>>326
D&D相当の作業、是非教えて頂きたいです。

>>327
ショートカットアイコンは通常のフォルダアイコンに地球の絵が描かれています。
FileCopyで試すと「パス名が無効です」
FS.CopyFileで試すと「ネットワークパス見つかりません」とエラーが出ます。
パス名は"\\サーバ名\フォルダ"」と間違いないと思うのですが・・・・

337 名前:327 mailto:sage [2009/10/17(土) 11:16:11 ]
>>336
「パス名が無効です」 だと共有フォルダ名が間違っている可能性があるけど
確認した?
エクスプローラでそのサーバーが見えるなら パス名確認した方が良いかも

FileCopyは
 FileCopy "c:\temp\test.txt", "\\サーバ名\共有フォルダ名\test.txt
 FileCopy "c:\temp\test.txt", "\\サーバ名\共有フォルダ名\フォルダ名\test.txt
とかでいいはすなんだけど

サーバー系は、ここ数年やってないんで最新バージョンなんかで仕様が変わっていたら
お手上げですが....



338 名前:337 mailto:sage [2009/10/17(土) 11:19:58 ]
あっチョット訂正

FileCopyの構文で 最後の " が抜けてた
 FileCopy "c:\temp\test.txt", "\\サーバ名\共有フォルダ名\test.txt"
 FileCopy "c:\temp\test.txt", "\\サーバ名\共有フォルダ名\フォルダ名\test.txt"
です
失礼しました (^^汗

339 名前:325 mailto:sage [2009/10/17(土) 14:59:31 ]
>>337-338
パス名は何回も確認しました。プロパティーからコピペしたので間違えてないはずなんですが。
エクスプローラーのプロパティではパス名「http://サーバ名/フォルダ名」なんで、
「http:」外して/を\に変えたんですけど、根本的に間違ってるんでしょうか。

あと、補足ですがサーバはSharePointのワークグループです。








[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<218KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef