[表示 : 全て 最新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/

411 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 23:29:44 ]
特定の文字列にヒットする条件ならワークシート関数が強力だが
勉強しはじめなら、セルを一個一個確認してループさせる手法からハイルべき
特にエクセルVBAなら

412 名前:405 mailto:sage [2009/10/20(火) 23:37:10 ]
>>410 & 411

>>411 の意見には賛成です
今回の場合は特に

>>410 の質問の回答ですが

Findは Excel本体の検索とほぼ同じものです
マクロの記録をいろいろしてみると分かると思いますが
"完全に同一のセルだけを検索する"です

それと>>407 へ書いたけど
セルの表示形式が数値だと失敗するかもです
一応 標準形式だとうまく検索できたのだけど

413 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 07:11:50 ]
Findメソッドは基本的に文字列を検索するもんだ。
まさか数値を検索してバグがあるなんて言ってるんじゃねーだろうな。

414 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 13:53:11 ]
ちょっと暇なときにVBA勉強しようと思うんですが、勉強するなら2003と2007どっちがいいですか?

415 名前:325 mailto:sage [2009/10/21(水) 15:09:21 ]
>>382
ありがとうございます。勘違いしてました・・・・
しかし、\\サーバIPにしてもだめでした。

Sub COPY_SAMPLE()
Dim objShell
Dim objFolder

Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.NameSpace("\\サーバ名\フォルダ名1\フォルダ名2")

If (Not objFolder Is Nothing) Then
objFolder.CopyHere "c:\TEST.txt"
Else
MsgBox "Nothing"
End If

Set objFolder = Nothing
Set objShell = Nothing

End Sub

Nothingのメッセージボックスが出ます・・・

416 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 15:37:47 ]
>>414
自分が持ってんのがどっちなのかによるでしょ。
今からなら2007の方が良いのかなとは思うけど。


417 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 16:11:22 ]
>>416
ありがとうございます。持ってるのが2000と2007だったので2007勉強することにしました

418 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 20:02:12 ]
2000と2007しかもってないのに2003を選択肢にするとは・・・できる

419 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 20:03:45 ]
>>415
q.hatena.ne.jp/1108018134
これでやってみな。
ヒントはきちんといかそうぜ。



420 名前:410 mailto:sage [2009/10/21(水) 21:43:51 ]
>411-412
上手くいきました。有難うございます。

>413
そのまさかなんですが・・・
なんとか上手くいきました。独学&ヘルプ@2007ではなかなか上達しないですね。今度、本屋行ってきます!

421 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 22:04:58 ]
いやバグはあるよ。

422 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 22:09:25 ]
【合法】みんなズッキーニでヘヴン状態しようぜ!!
namidame.2ch.net/test/read.cgi/yasai/1223375038/

423 名前:デフォルトの名無しさん [2009/10/21(水) 22:51:50 ]
初心者です。質問させてください。
XP、office2000において、onactionで呼び出すsub hogeにsingleの引数を複数渡したいのですが、どのようにすればよいか教えてください。

.onaction("'hoge, arg1,arg2'")

とかだとうまくいきませんでした。

424 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 23:41:28 ]
select case の使い方についてですが

例えば、A4の値及びB4の値によって条件を分岐させたい時に (A4 1または2 B4 同じく 1または2)
Select Ccase Cells(4,1) Cells(4,2)
case 1 1
case 1 2

end select

みたいな使い方出来ないんですかね?Excel2007では

select case cells(4,1) cells(4,2) でエンター押した瞬間に
エラーになっちまいましたが。


425 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 23:52:34 ]
二十判定は出来ない
変数とかに格納したり論理結合したり
ただ1か2のどちらかなら、文字列結合すりゃいい

426 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 23:58:26 ]
>>425
了解しました

427 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 09:32:17 ]
>>423
.OnAction = ”'hoge””arg1””,””arg2””'”

428 名前:デフォルトの名無しさん [2009/10/22(木) 11:55:51 ]
java経験しかないまったくの初心者ですが、質問させてください

列AQの行n1の文字列hoge1を取得して、hoge1を列Cより検索、
発見したらその行n2の列Bの文字列hoge2を列AUのn1のセルに代入
これをAQの行全てで実行したいのです

Cにおいてhoge1が重複することはありません

どうかよろしくお願いいたします

429 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 12:04:24 ]
vlookup



430 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 12:21:27 ]
何行あるかしらんが、列全部にvlookupに限らず参照判定関数入れるのは

そーゆーときは配列に流して連想しる

431 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 13:47:33 ]
Ver.書くのを忘れてました!ごめんなさい

XPでExcel2003です

列Dの行n1の文字列hoge1を取得して、hoge1を列Cより検索、
発見したらその行n2の列Bの文字列hoge2を列Hのn1のセルに代入
これをDの行全てで実行したい、に変更させてください

VBAとExcelマクロの知識が0なんです…
vlookupという関数を使えばいいのですか?
Cは2988行、Dは1284行です

sub test()
dim name as string

for i = 1 to 1284
name = cells(i, 4)
if (vlookup(D$i, C1:C2988, 2, false)) = name then
copy()
pastespecial()

endsub

こんな方向性で大丈夫ですか?

432 名前:325 mailto:sage [2009/10/22(木) 14:38:41 ]
>>419
そのURLはググってる最中に何度か訪れたんですけど、
ちょっと私には扱えそうもなかったんでスルーしてたんですけど、
頑張って調べながらやってみたら2〜3度エラーが出ましたが、
希望通りアップロード出来ました!誠にありがとうございました。
一年分の便秘が治ったようなすがすがしい気分ですw

433 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 15:16:28 ]
>>431
no

434 名前:325 mailto:sage [2009/10/22(木) 15:22:42 ]
>>419
すいません、これってLZHファイルとかは扱えないんでしょうか?
TXTやSLK形式は成功したんですけど、LZH形式はエラーになったんです・・・

435 名前:434(325) mailto:sage [2009/10/22(木) 15:26:16 ]
自己解決しました。
LZH形式もいけました。ファイル名が不味かったようです。

436 名前:434(325) mailto:sage [2009/10/22(木) 15:28:23 ]
連投すみません。
LZH形式、エラーこそ出ませんでしたが、解凍すると文字化けしてまいした。

437 名前:434(325) mailto:sage [2009/10/22(木) 15:46:49 ]
再度自己解決しました。.typeと.charaset外したら正常に解凍出来ました。
スレ汚しすみませんでした。逝ってきます。

438 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 00:08:18 ]
>>431
言いたい事は分かるんだけどさ。
列Dだの列Hだの、n1だn2だって、そんなのどうでもいいよ。
それで作りたいんだろうけど、読んでて辛いです。
Aから探してBにコピーとかでいいじゃん。組み合わせるだけでしょ。

for i = 1 to 1284
name = cells(i,4).value
set rng = columns(3).find(name)
if not rng is nothing then
rng.offset(0,1).value = rng.value
end if
next

みたいな考え方でやるよ。俺なら。
今ブラウザで書いたんで、動作保障も無し。


439 名前:434(325) mailto:sage [2009/10/23(金) 09:54:04 ]
>>419さんの方法でアップロード解決したんですが、半角カナ等のファイル名をうpすると、
実行時エラーになります。回避する方法ありますでしょうか?

D&Dでうpすると正常に出来るんですが・・・・



440 名前:431 mailto:sage [2009/10/23(金) 11:17:12 ]
>>438
わーい!教えていただいたものを道標に調べつつやってみたらできました!
一応完成版を張っておきます

Sub macro()
   Dim code As String
   Dim rng As Range
   Dim name As String

   For i = 2 To 1284
     code = Cells(i, 4).Value
     Set rng = Columns(3).Find(code)
     If Not rng Is Nothing Then
       name = rng.Offset(0, -1).Value
       Cells(i, 9).Value = name
     End If
   Next
End Sub

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

441 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 12:20:06 ]
>>439
エンコードでぐぐりな。

442 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 12:29:34 ]
>>440
そんなんで完成?
Findメソッドの引数が1個だけって大丈夫カヨ
WhatとLookInとLookAtの最低三つは必要じゃないの?

443 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 13:52:52 ]
>>442
一応ちゃんと動作しましたよ!
今回一回だけ動けばいいマクロなので、結果に間違いがなければOKです!

444 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 14:17:40 ]
>>443
そりゃたまたまでんがな。
何もいじくってない状態じゃ部分一致だが、それでいいの?

445 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 14:28:40 ]
本人がOKってんだからいいんじゃね?

446 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 14:38:09 ]
>>444
う、もしかして上手くいったと勘違いしてるだけなんですかね…
codeはxx01みたいな形で、nameは文字列(重複部分多々あり)なんですが

ちゃんと調べてみます!

447 名前:お願いします>< [2009/10/24(土) 01:26:35 ]
VBA初心者です。
学校の宿題で
「y=sinXとY=Xの2本の直線で囲まれた面積をVBA関数を用いて求めなさい。」
という問題がでました><
ですが、今日初めてVBAという言葉を聞いたぐらいですので、まったく分かりません( ;∀;)

どなたか記入するコードを教えて頂けないでしょうか?

448 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 01:45:00 ]
学校の宿題は自分でやらなきゃダメ><
何の前提もなしにそんな宿題が出るはずないから、わからないのは貴方がサボっていたってことでしょ

449 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 02:20:06 ]
宿題スレ池



450 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 02:45:13 ]
>>447
これは酷いwww
これが社会に出て行くと思うと末恐ろしいな

451 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 10:22:29 ]
sinXって直線なのかね

452 名前:デフォルトの名無しさん [2009/10/24(土) 10:57:44 ]
>>424
遅レスですが、こんなアイディアも。

Select Case Cells(4,1) & Cells(4,2)
case "11"
case "12"



453 名前:452 mailto:sage [2009/10/24(土) 10:59:38 ]
>>425 見てなかった… すまん

454 名前:デフォルトの名無しさん [2009/10/24(土) 11:43:07 ]
セル参照の計算式

=G5*K3+M1

セル参照+数字の計算式

=F6*G6*3.14

数字のみの計算式

=15*21*45

この数式を区別して色分けする事は可能ですか?
せめて上2つと下1つだけでも区別できればいいんですが

455 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 11:47:42 ]
>>451
正弦波だから、Y=1 から Y--1 までを往復する曲線かな。
Y=Xの直線とは1点交差するけど、2点とは交差しなんじゃないか?
よくわかんないけどw

456 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 12:13:36 ]
だいたい2本の直線で囲まれる面積ってなによ
問題の意味すらわかんないならVBA以前の問題

457 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 12:25:46 ]
非ユークリッド幾何だと日常的

458 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 12:31:59 ]
大圏航路かよ 何年生の課題だ

459 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 13:43:37 ]
>>454
手元にPCがないから確認できないけど、今ぱっと思いついた案が1つある。
セルに入力されている数式を取得し、文字列操作関数を使用し演算子の部分で区切る。
区切られた文字列を確認して全てにアルファベットが含まれていれば、セル参照あり、全く含まれていなければセル参照なし。
その他は混合。
どうでしょう?
文系のおいらの考えなので、バカかと思う方はたくさんいると思うけど。



460 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 13:46:03 ]
>>459だけど一部訂正。
「セル参照あり」→「セル参照のみ」だったよ。

461 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 15:08:03 ]
問題文を写し間違えただけだろ
Y=sinXとY=Xは3点で交わって、囲まれた領域は2つだ
片方だけ積分して倍すればいい

462 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 19:24:38 ]
>>459
0.100000000E+00

463 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 19:26:00 ]
>Y=sinXとY=Xは3点で交わって、囲まれた領域は2つだ

kwsk

464 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 20:36:00 ]
>>454
セル参照があるかないかだけですが
一つの案として下記なんかはどうでしょうか?

一部の関数を使用していると判定ミスしちゃいますが(DAYS360 とか)

With ActiveSheet.Cells(i, j)
  If (.Formula Like "=*[A-Z][1-9]*") Or (.Formula Like "=*[A-Z]$[1-9]*") Then
       'セル参照を含む数式
       .Interior.ColorIndex = 34
     Else
        'セル参照を含まない数式 又は 定数
        .Interior.ColorIndex = 40
  End If
End With

465 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 21:22:20 ]
>>462
最初に「=」が付いてるか確認すれば問題ないと思う。

466 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 22:22:36 ]
0.100000000E+00 +0.100000000E+00

467 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 22:27:46 ]
絶対に関数は使われていないのだろうか?

468 名前:デフォルトの名無しさん [2009/10/24(土) 22:36:56 ]
"=*[A-Z][1-9]*"や "=*[A-Z]$[1-9]*"って何を表してるんですか?

469 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 22:42:26 ]
性器



470 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 22:44:17 ]
>>467
そういう話になってくると正規表現?

471 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 23:17:41 ]
正規表現だと、
*[A-Z]$[1-9]*
の、文末一致or後方参照の $ が説明付かない。

472 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 00:45:26 ]
userformのtext1に入力された値を使うとき、
userform.text1と書くと思いますが、
text1、text2と順番に参照していきたい時、イメージとしては"text"&i のように変数で指定したいんですがエラーになってしまいます。
何かいい方法はないでしょうか?

473 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 01:25:10 ]
excel2003でOSはXPです。
ダブルクオーテーションマークが検索したい文章内にある場合どうすればいいのでしょうか。

具体的には
<IMG class="reslevel rf1 level2" alt="きこり レベル 2" src="img/x.gif">
というouterHTMLの文字列に一致したらdo while構文を抜け出すという形にしたいのです。

Do until objIE.document.all.outerHTML = "<IMG class="reslevel rf1 level2" alt="きこり レベル 2" src="img/x.gif">"
という形でダブルクオテーションで括ったのですが「コンパイルエラー」となってしまいます。
どうすれば回避できるか教えていただけないでしょうか。

474 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 01:25:54 ]
>>472
配列変数を使う(text1とtext2を配列変数に突っ込んで使う)

475 名前:464 mailto:sage [2009/10/25(日) 01:41:33 ]
>>471

>>464を書いたのは自分だけど
正規表現だと、 $は特殊な意味をもつの?
Like 演算子では特殊な意味をもつようにはHELPに
書かれていなかったんで

.Formula Like "=*[A-Z]$[1-9]* は
=$A$1 とか =A$1 という形式でのセル参照も判定させたいので
付けたんです

もしかして
.Formula Like "=*[A-Z][$][1-9]*"
って書いた方が正解なのかな?

476 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 02:00:43 ]
>>474
ありがとう

477 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 02:59:44 ]
>>475
msdn.microsoft.com/ja-jp/library/h5181w5w.aspx
少しは調べろよカス

478 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 08:59:51 ]
>>475
だから、正規表現じゃないって言ってるのだよ。

=$A$1 を判定させるマッチパターンは、
pattern = "=\$[A-Z]\$[0-9]"

479 名前:デフォルトの名無しさん [2009/10/25(日) 15:58:07 ]
色々教えてもらいここに辿り着きました

1つのフォルダーにあるいくつかのcsvファイルの全てのA列からC列のデータを削除したいのです

そういうvba作ってもらえませんか?
どうかお願いします



480 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 16:05:55 ]
>>479
>>2の★5を100万回読むんだ

481 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 16:06:04 ]
了解
待ってな

482 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 17:02:08 ]
>>479

いくらくれる?

483 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 22:05:39 ]
>>482
お金は…ないんです(T_T)

484 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 23:30:41 ]
ユーザーフォームでつくったコンボボックス等をダブルクリックして編集画面を開きます。
ここに標準モジュールで作ったプロシージャをコールしても反映してくれません。
なぜでしょう?

485 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 23:38:10 ]
・何がしたいのか
・現状どうなっているのか
・それに対する自分の意見
・自分の環境は何なのか(CPU,OS,Office)
・サンプルをアップローダーに。

このくらいは質問するなら情報として欲しいわ。

486 名前:484 mailto:sage [2009/10/25(日) 23:48:06 ]
なんか勘違いしてたっぽい。
コンボボックスにあらかじめ入れておく項目は標準モジュールからは呼び出せないか。

487 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 23:54:43 ]
最後疑問系なの
質問?
コンボボックス
リストボックスのリストは標準モジュールで指定出来るでしょ
値を入れておきたいならValueに入れればいいでしょ

488 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 09:00:41 ]
マクロ記録
エクセルでCSV開く
該当行削除
保存
記録停止


↑で出てた正規表現ってよくわかんないんだが何が出来るの

489 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 09:57:05 ]
日本語でOK



490 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 17:17:01 ]
Excel2007 statusbarに関する質問です

Dim oldStatusBar

With Application
.ScreenUpdating = False
oldStatusBar = .DisplayStatusBar
End With

〜処理〜

With Application
.ScreenUpdating = True
.DisplayStatusBar = oldStatusBar
End With

として処理中、statsubarに "現在 " & code & " を処理中"としてcodeを
表示させているのですが、終了後に
"現在 0 を処理中" となります。
これを処理終了後には何も表示させなくしたいのですが、どうすれば
良いのでしょうか。
.DisplayStatusBar = ""とすると、
実行時エラー 13
型が一致しません
となります。



491 名前:デフォルトの名無しさん [2009/10/26(月) 20:36:59 ]
>>1の★4に該当しますが、他にいいスレがあったら誘導してください。

Long型の数値からリトルエンディアンByte(4)型に分割したいのですが、どのようにしたらよいでしょうか。
VBだとLong型が8バイトと聞いたので、こちらに質問しました。

よろしくお願いします。

492 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 22:09:15 ]
1回だけランチしましたが、それっきりで不発です。
どこが変なんでしょ?

CODE

var path='C:/Program Files/Microsoft Office/Office/excel.exe';
var args='';

this.setAttribute('oncommand','this.startProcess("'+path+'","'+args+'")');

this.startProcess=function(path,args){
var file = Components.classes['@mozilla.org/file/local;1']
.createInstance(Components.interfaces.nsILocalFile);
var process = Components.classes['@mozilla.org/process/util;1']
.getService(Components.interfaces.nsIProcess);
file.initWithPath(path.replace(/\//g,'\\\\'));
process.init(file);
process.run(false,[args],1);
}


493 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 23:13:30 ]
>490

2007は知らんけど2003ならば
Application.StatusBar = False

494 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 00:26:15 ]
>>491
VBAのLongは4バイトです
8ビットずつマスクとシフトしながら分割してください

495 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 00:27:36 ]
>>492
VBSはスレチ

496 名前:491 [2009/10/27(火) 01:21:41 ]
>>494
ありがとうございます。
ただ、そのままするとマイナスの値のときにおかしくなってしまいます。
もうすこし詳しく教えていただけないでしょうか。


497 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 01:34:34 ]
>>496
MSBだけ別の変数にとっとけばいい

498 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 01:41:11 ]
492はどうみてもJavaSな件

499 名前:491 [2009/10/27(火) 16:25:08 ]
>>496
ありがとうござました。
マイナス関係なくできました。
難しく考えすぎてたみたいです。




500 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 19:39:03 ]
Sub Main()
Dim strPath As String
Dim wkb As Excel.Workbook
Dim wks As Excel.Worksheet
Dim rng As Excel.Range
Dim col As New Collection
strPath = Excel.Application.GetOpenfilename
If strPath = "False" then
Exit Sub
End If
Set wkb =Excel.Workbooks.Open(strPath)
Set wks = wkb.Sheets("Sheet1")
Set rng = wks.Range("A1")
call col.Add(rng)
If Not(wkb Is Nothing) Then
Call wkb.close: Set wkb = Nothing
End If
If col Is Nothing Then
Set rng = col.Item(col.count)
Debug.Print rng.Value
End If
End Sub
'colって、Nothingじゃないの?
'Is Nothingの対象はRange型のcolでは無くて、col自体を対象としてんのかな。

501 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 20:01:28 ]
Dim col As New Collection

502 名前:デフォルトの名無しさん [2009/10/27(火) 22:27:30 ]
XP で2003使ってます。

2003及び2000で動いてくれれば・・

アクセス側から、あるワークシートにおいて、
Set myWKS = myWKB.Worksheets("test")
With myWKS
t = DCount("*", "T1")
.Range("A10").CopyFromRecordset myRS
.Range("A10:D" & t + 9).Select
.Application.ActiveCell.Sort Key1:=Columns("C"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlSortColumns, SortMethod:=xlStroke
    .SaveAs "C:\Documents and Settings\Owner\デスクトップ\sample\テスト作成.xls"
    .End With

という処理を行っています。
アクセスを起動後1回目は、ソートが正常に動きますが、2度目以降はうまくソートしてくれません。

次にこのメソッドを使用するときに、引数を指定しなかった場合は、保存されていた値が使用されます。
と、ヘルプにもあるように、ここにひっかかっているのだと考えていますが、
どうにも原因を突き止められません。
どうぞよろしくおねがいします。

503 名前:デフォルトの名無しさん [2009/10/27(火) 23:15:04 ]
解決しました。
理由は先ほどエラーが出ていたときは1度目の実行はうまくいくのにエクセルファイルを閉じても
エクセルのプロセスが残ったままになっており2度目はその影響(?)で失敗していました。

コード自体に問題はなく、参照設定のexcelオブジェクトの優先順位を一つ上にあげてやれば、
正常に2度目以降も動くようになりました。

ただ、凄く不安定な正常性ということなので、根本を解決できる何かがあれば
是非アドバイスおねがいいたします。

504 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 23:45:25 ]
残ってるのはDBSオブジェクトじゃね
エラー出たときとか終わるときにちゃんと閉じてる?

505 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 00:36:54 ]
そこでした。
オブジェクト指定をしっかり作ったエクセルアプリケーションにしていなかったり、
いきなり.Rangeにしてたりで、タスマネに5個ぐらいEXCELってありましたw

コード多すぎて無理臭いので、クエリのほうから指定することにしました。
以降はいい加減に組まないように注意せねばでした。

ありがとうございました

506 名前:デフォルトの名無しさん [2009/10/28(水) 10:55:56 ]
エクセルのマクロの問題に対する質問はここでいいですか??

507 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 11:13:24 ]
OK
バージョン書いてね

508 名前:デフォルトの名無しさん [2009/10/28(水) 13:01:21 ]
ここは宿題かたずけますスレって考えてもいいんですかィ

509 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 13:19:44 ]
>>508
質問の内容とタイミングによる
時間帯と曜日によって、宿題は自分でやれってレスが付くだけのこともあるし
VBA厨が喜んでプログラムを作ってくれることもある



510 名前:デフォルトの名無しさん [2009/10/28(水) 13:55:04 ]
とりあえず書いてみます
Excel2003

めっちゃ初歩的です…
Do〜LoopかForーNextを使わなければならないみたいです。
1〜10までの整数で
偶数の和をD1
奇数の和をE1
に表示せよ です。

511 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 14:02:20 ]
ExcelはスプレッドシートソフトでVBAの練習台じゃ
ありません。
VBAの練習をしたいのなら、Accessでやれっつーの
(AccessではExcelでやれっていわれるかも)
てなわけで、Active BASICがVBAと文法互換だったら
いいのになとおねだりしよう

【サーバー各所】ActiveBasicその11【冬眠中】
pc12.2ch.net/test/read.cgi/tech/1241316033/






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

前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