VBプログラマ質問スレ(6.0以前) Part44
DoCmd.TransferText acImportDelim, ,"インポートデータ", _ "C:\Documents and Settings\デスクトップ\ファイル名.csv" ACCESSSでボタンを作ってこういうのをあてはめたら、 一応押すごとにインポートされるものは出来たんだけど、 ファイル名のところなんだけど、同じフォルダ内にある全ての CSVをインポート処理してくれるようにならないかな? 欲をいえば、 いくつファイルをインポートしたかメッセージ出てくると、なおいいね。 4つのファイルをインポートしました。 とか
847 :
デフォルトの名無しさん :2005/12/03(土) 01:39:42
Dim lstrFile As String Text1.Text = "" lstrFile = Dir("C:\Documents and Settings\Makoto\デスクトップ\適性テスト\*.csv") Do Until lstrFile = "" Text1.Text = Text1.Text & lstrFile & vbCrLf lstrFile = Dir() DoCmd.TransferText acImportDelim, , "インポートデータ", _ "C:\Documents and Settings\Makoto\デスクトップ\適性テスト\$lstrFile$.csv" Loop MsgBox "インポートしました!" ↑これでは出来ない。なんでだー
>>847 Dim lstrDir As String, lstrFile As String
Dim nCount As Integer
Text1.Text = ""
lstrDir = "C:\Documents and Settings\Makoto\デスクトップ\適性テスト\"
lstrFile = Dir(lstrDir & "*.csv")
Do Until lstrFile = ""
Text1.Text = Text1.Text & lstrFile & vbCrLf
nCount = nCount + 1
lstrFile = Dir()
DoCmd.TransferText acImportDelim, , "インポートデータ", lstrDir & lstrFile
Loop
MsgBox nCount & "個のファイルをインポートしました。"
WEBサーバの自作でいろいろ苦労してるのですが そういう人は他に居ない?
VB6.0のプロジェクトファイルから フォーム数やステップ数を出力してくれるような アプリケーションはないでしょうか? できればフリーソフトなどあればうれしいのですが・・・
>>851 自分で作れよ
プロジェクトファイルはテキストなんだからさ
>>852 vectorにいろいろありまいたので試して見ます。
ありがとうございました。
>>849 普通の人はVB6でWEBサーバーを作ったりしないので居ない
>>854 昔DDJな何かでVB5.0使ってWebサーバ作ったという記事を見た事がある
856 :
デフォルトの名無しさん :2005/12/03(土) 15:48:25
857 :
デフォルトの名無しさん :2005/12/03(土) 15:52:09
>>848 様
ただ
変数を宣言したあとの
Text1.Text = ""
が黄色になって「オブジェクトが必要です」
と出てくるのですが。。。。
858 :
デフォルトの名無しさん :2005/12/03(土) 15:52:24
859 :
デフォルトの名無しさん :2005/12/03(土) 16:05:23
3行目のText1.Text = "" と7行目のText1.Text = Text1.Text & lstrFile & vbCrLf は要らないだろ。
>>857 Text1っていうオブジェクトが無いんだろ
キミの出した情報じゃそれしかわからんよ
861 :
デフォルトの名無しさん :2005/12/03(土) 16:11:32
>>860 様
お返事ありがとうございます。
たった今、フォームにテキスト1を追加したんですが、やはりできませぬ。。。
862 :
デフォルトの名無しさん :2005/12/03(土) 16:18:41
こいつ本当に真性バカだな。
864 :
デフォルトの名無しさん :2005/12/03(土) 16:19:29
フォームにテキストボックスを追加して、それのプロパティで名前の部分をtext1にしたんですが、 今度は「コントロールがフォーカスを取得していないときに、コントロールのプロパティまたはメソッドは 参照することができません:エラー2185」と出てしまいました
865 :
デフォルトの名無しさん :2005/12/03(土) 16:20:42
超絶バカ
817 名前:NAME IS NULL[] 投稿日:2005/12/02(金) 21:23:47 ID:FRlIojdR
>>816 できれば、その前に、1つ教えてほしいことがある
access2002からモジュールの新規作成選択したときさ、
普通はVBのフォームとか、ツールボックス出るじゃん。
あれの出し方だけ教えて
866 :
デフォルトの名無しさん :2005/12/03(土) 16:23:14
なんとでもいってもらって、結構なので正直、ドがつく初心者の俺でも分かるくらいの 説明で教えてほしい。。。。。。
A c c e s s か よ !
お前が勉強してこい
869 :
デフォルトの名無しさん :2005/12/03(土) 16:26:24
848さん以外に分かる人いないってこと??
870 :
デフォルトの名無しさん :2005/12/03(土) 16:27:56
だれかーーーーーーーーわかりませんかーーーーーーーーーーーーー
誰が質問して 何の回答求めてるのか分からん 名前くらい入れろ 環境教えろ VBなのかアクセスなのかエクセルなのか 一番最初に質問したレス番号教えろ
872 :
デフォルトの名無しさん :2005/12/03(土) 16:32:38
809 名前:NAME IS NULL[] 投稿日:2005/12/02(金) 17:35:25 ID:azKk0wjH
CSV(カンマ区切りで)、1行目だけに左上詰めから15項目だけあるファイルを、
次々にアクセスのデータベースに追加していく形のものを作ってほしいです。
可能ならば、ボタンをポチっと押しただけで追加して、追加が終わったら、
その抽出したCSVファイルを削除しますか?とかで削除できたらサイコー!
812 名前:NAME IS NULL[] 投稿日:2005/12/02(金) 19:11:57 ID:azKk0wjH
つか、ACCESSのモジュール作成からVBたちあげても、
デザインビューのフォームとかツールボックスが出ない!!!
なんでだよ!!
817 名前:NAME IS NULL[] 投稿日:2005/12/02(金) 21:23:47 ID:FRlIojdR
>>816 できれば、その前に、1つ教えてほしいことがある
access2002からモジュールの新規作成選択したときさ、
普通はVBのフォームとか、ツールボックス出るじゃん。
あれの出し方だけ教えて
822 名前:NAME IS NULL[] 投稿日:2005/12/02(金) 21:50:27 ID:FRlIojdR
>>820 ならんでるよ。そこのモジュールから新規作成してるんだけどなー
826 名前:NAME IS NULL[] 投稿日:2005/12/02(金) 21:56:27 ID:FRlIojdR
フォームあるよー
アクセスでは、ボタン作ってそれをクリックしたら簡単にcsvからaccessに読み込むのできないの?
873 :
accessマン :2005/12/03(土) 16:33:33
私が質問していました。質問内容は
>>846 にあります。
環境はaccess2003です。ドがつくほどプログラムのことは
分からないんです。すいません
874 :
デフォルトの名無しさん :2005/12/03(土) 16:33:35
837 名前:NAME IS NULL[] 投稿日:2005/12/02(金) 23:51:45 ID:FRlIojdR DoCmd.TransferText acImportDelim, ,"インポートデータ", _ "C:\Documents and Settings\デスクトップ\ファイル名.csv" ACCESSSでボタンを作ってこういうのをあてはめたら、 一応押すごとにインポートされるものは出来たんだけど、 ファイル名のところなんだけど、同じフォルダ内にある全ての CSVをインポート処理してくれるようにならないかな? 838 名前:NAME IS NULL[] 投稿日:2005/12/03(土) 00:01:07 ID:2/RezQHy 欲をいえば、 いくつファイルをインポートしたかメッセージ出てくると、なおいいね。 4つのファイルをインポートしました。 とか 841 名前:NAME IS NULL[sage] 投稿日:2005/12/03(土) 14:54:56 ID:??? 分かる人いるなら教えてよ 844 名前:NAME IS NULL[] 投稿日:2005/12/03(土) 15:28:15 ID:2/RezQHy DoCmdの引数にsFileを渡す方法がわからない
875 :
デフォルトの名無しさん :2005/12/03(土) 16:34:19
876 :
デフォルトの名無しさん :2005/12/03(土) 16:34:53
どう見てもAccess初心者でVBのコード以前の問題です。 本当にありがとうございました。
877 :
デフォルトの名無しさん :2005/12/03(土) 16:36:20
835 名前:NAME IS NULL[] 投稿日:2005/12/02(金) 22:26:41 ID:FRlIojdR 今花より団子見てるから、あとでね 836 名前:NAME IS NULL[] 投稿日:2005/12/02(金) 23:00:48 ID:FRlIojdR ただいま、つか出来上がったw
878 :
デフォルトの名無しさん :2005/12/03(土) 16:36:45
819 名前:NAME IS NULL[] 投稿日:2005/12/02(金) 21:38:17 ID:FRlIojdR
>>818 おまえはヴァカ?
879 :
デフォルトの名無しさん :2005/12/03(土) 16:38:02
ここのスレ見てるとプログラマーのだいたいの性格わかるなw
>>861 長くなってもいいから何をどうしてどうなったのか詳しく書け
881 :
デフォルトの名無しさん :2005/12/03(土) 16:40:48
死ねばいいのに
882 :
accessマン :2005/12/03(土) 16:46:42
>>880 様
はい。ありがとうございます。
まずACCESSのフォームの新規作成で コマンドボタンを1つフォームに追加しました。
そのコマンドボタンの右クリックしてイベントのビルドでコードビルダを選択し、
Private Sub コマンド0_Click() と End Sub の間に
>>848 様の
>Dim lstrDir As String, lstrFile As String
>Dim nCount As Integer
>
>Text1.Text = ""
>lstrDir = "C:\Documents and Settings\Makoto\デスクトップ\適性テスト\"
>lstrFile = Dir(lstrDir & "*.csv")
>
>Do Until lstrFile = ""
>Text1.Text = Text1.Text & lstrFile & vbCrLf
>nCount = nCount + 1
>lstrFile = Dir()
>DoCmd.TransferText acImportDelim, , "インポートデータ", lstrDir & lstrFile
>Loop
MsgBox nCount & "個のファイルをインポートしました。"
を追記したんですが、デバッグ画面で text1.Text=""の行が黄色くなっていたので
またAccessのフォーム作成画面に戻りテキストボックスを追加して、
プロパティからtext1という名前に変えて、実行すると今度は
「コントロールがフォーカスを取得していないときに、コントロールのプロパティまたはメソッドは
参照することができません:エラー2185」と出てしまいました
883 :
デフォルトの名無しさん :2005/12/03(土) 16:48:12
884 :
デフォルトの名無しさん :2005/12/03(土) 16:48:50
>>882 お前さ、まずAccessの使い方から学べよアホ
Me付けなきゃどのテキストボックスか分からないだろ死ね
885 :
デフォルトの名無しさん :2005/12/03(土) 16:50:31
Me??
ちんこうんこまんこちんこうんこまんこちんこうんこまんこ ちんこうんこまんこちんこうんこまんこちんこうんこまんこ ちんこうんこまんこちんこうんこまんこちんこうんこまんこ ちんこうんこまんこちんこうんこまんこちんこうんこまんこ ちんこうんこまんこちんこうんこまんこちんこうんこまんこ ちんこうんこまんこちんこうんこまんこちんこうんこまんこ ちんこうんこまんこちんこうんこまんこちんこうんこまんこ ちんこうんこまんこちんこうんこまんこちんこうんこまんこ ちんこうんこまんこちんこうんこまんこちんこうんこまんこ ちんこうんこまんこちんこうんこまんこちんこうんこまんこ ちんこうんこまんこちんこうんこまんこちんこうんこまんこ ちんこうんこまんこちんこうんこまんこちんこうんこまんこ
VB使ったことないんだけどDL方法からアプリ開発まで全部俺に教えてwwwwwwwwwwwwwwwwww
888 :
デフォルトの名無しさん :2005/12/03(土) 16:54:51
早く教えろよカス
890 :
888 :2005/12/03(土) 16:57:15
うそつき・゚・(ノД`)・゚・
892 :
デフォルトの名無しさん :2005/12/03(土) 16:59:03
マルチしただけで、ここまで叩かれた奴はじめて見たw
マルチだからじゃなくバカだから叩かれているだけだろ
894 :
デフォルトの名無しさん :2005/12/03(土) 17:01:38
VBプログラマってバカに厳しいんだなw まぁ、なぜか分かる気もするがw
マルチでバカだからだな
合わせ技で一本か
897 :
デフォルトの名無しさん :2005/12/03(土) 19:14:12
フォルダ内の全てのファイルにある処理をするときはどのような構文を書けばいいですか?
フォルダ内のファイルを列挙して 全部に処理すればいい
質問です。 str = "123123123……"と言う文字列があり、先頭から5文字目を"0"に変更したいとします。 現在は、 x=mid(str,1,4) & "0" & mid(str,6) とやっているのですが、他にスマートな関数が用意されていたら教えてください。
なかなかスマートじゃないか。
901 :
accessマン :2005/12/03(土) 20:06:09
試行錯誤して出来たぜ!w
>>889 mid(s,5,1)="0"
でいいよ。
903 :
902 :2005/12/03(土) 20:11:53
Mid関数知ってるのにMidステートメント知らない奴が居るのかよ
905 :
899 :2005/12/03(土) 20:26:41
ありがとうございました。orz
906 :
デフォルトの名無しさん :2005/12/03(土) 21:01:14
access側のフィールド名を自分で色々とつけていた場合 DoCmd.TransferText acImportDelim を使うときは、どういうふうにすればいいか分かる香具師いる? フィールド名をつけてなきゃ、スムーズにいくんだけどなぁ
907 :
デフォルトの名無しさん :2005/12/03(土) 21:03:12
908 :
デフォルトの名無しさん :2005/12/03(土) 21:04:19
ただいまw
909 :
デフォルトの名無しさん :2005/12/03(土) 21:06:08
試行錯誤して出来たぜ!w
910 :
848 :2005/12/03(土) 21:10:40
なんか漏れのせいで微妙に荒れてしまったな。スマソ。
>>850 マルチとは知らずorz
911 :
デフォルトの名無しさん :2005/12/03(土) 21:13:42
912 :
デフォルトの名無しさん :2005/12/03(土) 21:13:58
849 名前:NAME IS NULL[] 投稿日:2005/12/03(土) 20:08:55 ID:2/RezQHy
>>848 おまえがしねよw
はっはははは、できあがったからには、もうどうでもいいしw
913 :
デフォルトの名無しさん :2005/12/03(土) 21:14:33
914 :
デフォルトの名無しさん :2005/12/03(土) 21:18:06
できたw
915 :
デフォルトの名無しさん :2005/12/03(土) 21:37:22
野ブタをプロデュースみてて ひさびさにドラマにハマりそうになった。 このクソ女め
916 :
デフォルトの名無しさん :2005/12/04(日) 00:01:15
質問です。 VB6でコンパイルエラー「メモリが不足しています」が発生しています。 このプロジェクトはソース量が巨大で、その一部を除くとコンパイルできるようになります。 変数の総数、コード量など何らかのコンパイラの制限に引っかかっているのでしょうか? 誰かご存知の方教えて下さい。
PCにメモリどれくらい積んでるんだ?
918 :
916 :2005/12/04(日) 00:11:35
512MBです
OSがXPだとしたら開発に使うには足りないな 2kだとしてもギリギリか
メモリ64kbでコンパイラ動かしてた時代は遠くなったな
>>916 プロジェクトファイルを右クリックしてコンパイル
923 :
デフォルトの名無しさん :2005/12/04(日) 10:34:18
逆コンパイルはどのツールが良いのでしょうか?
プログラム暦半年の若造です。VB6 SP5でテキストファイルに書かれた文章を いじくるプログラムをつくっているのですが For i = 1 to Len(String) If Mid(String, i, 1) = """ then と二重引用符を見つけたら処理をするというIf文を作りたいのですが 駄目っぽいのは目に見えてるのですがもしこういうのを作るには 文字コードやバイナリ状態のをIf文で処理させたほうがいいのでしょうか? ものすごく馬鹿なことしてるように見えるかもしれませんがお知恵拝借よろしくお願いします。
とりあえず"""ではなく""""な あとMidではなく…(以下略
>>925 根本的な話としてファイル内の文字列をいじくるプログラムは
やりたい処理によって1文字ずつ処理していく方法がよかったり
文字列として処理していく方法がよかったりする。
また、バイナリ形式のまま処理した方が良い場合もある。
要するにどういじくりたいのか解らないのでどうしたら良いのかは回答できない
変数名Stringは使えない
>>928 いや、さすがにそれは書き込むときに変えてるんだろwwwwwwwwwwwwwww
Call Shell("rundll32.exe shell32.dll,Control_RunDLL", vbNormalFocus) この内容でコントロールパネルは起動させることができたのですが、 その他上記の"Contorol"を"Mycomputer"や"Mynetwork"に変えてもマイコンピューターやマイネットワークなどを起動させることができません。 どの用に変更すればいいか教えていただけませんか?
>>930 explorer /root,,::{20D04FE0-3AEA-1069-A2D8-08002B30309D}
explorer /root,,::{208D2C60-3AEA-1069-A2D7-08002B30309D}
932 :
930 :2005/12/05(月) 14:30:04
>>931 Private Sub Command1_Click()
explorer /root,,::{20D04FE0-3AEA-1069-A2D8-08002B30309D}
end sub
これに何が足りないか、もう少し詳しく教えていただけませんか?
ちなみに列挙型だと Enum e [String] End Enum っていうふうに書いて使えたりする。
>>932 足りないのは頭だと思いますが、
まずはぐぐれ
935 :
930 :2005/12/05(月) 14:50:48
explorer /root,,::{20D04FE0-3AEA-1069-A2D8-08002B30309D} ぐぐってもコマンドプロンプトで書いたら起動できるやりかたしかでてこねぇよ!!! VBでどうやるんだよ!?
>>935 Call Shell(文字列) って何やってるか知ってる?
937 :
930 :2005/12/05(月) 15:06:19
でけた!!!!
>>936 マジサンクス!!!!
ホントありがとー(^^)/
930の すごい バカ
ん? Accessマン帰ってきた?
941 :
925 :2005/12/05(月) 16:17:08
>>927 とりあえずAscをつかって文字コードで判別する
やり方で自己解決しちゃいましたが
ファイル内の書式が
[設定1]
AAAAA = "あああああ"
BBBBB = "びびびびび"
のようになってて"〜"間の文字を取得したいんです。
For文で1文字ずつ移動させて"がある場合だけ文字を
VB内の変数に記録し続けるって感じのアルゴリズムを考えて
たのですが今の俺じゃ効率悪い方法しか思いつかない・・・
orz
つ[正規表現]
ISNUMERIC関数で、4d9などの文字列がTRUEで返って来るんですが… 何故?
>>943 ヒント:16進数
対処法はWebに腐るほど転がってる
>>941 文字列の書式によるが
InStr とか Replace が使えそう。
946 :
945 :2005/12/05(月) 17:27:28
>>941 iniファイル形式だろうから
GetPrivateProfileString() API を使う方法もある。
947 :
デフォルトの名無しさん :2005/12/05(月) 18:53:38
質問なんですけど、フォームにエクセルのシートを貼り付けて、右クリックのショートカットメニューを消したいんですけど、知ってる人がいたらおしえてください。
948 :
925 :2005/12/05(月) 22:18:42
>>946 ありがとうございます。
GetPrivateProfileString()でいけるようになりました。
iniファイルだってことすっかり忘れてた・・・。orz
逝ってきます。
>>947 Office2000・XPなんかのDeveloperEditionについてきたVBAの説明マニュアルを読め
まずはそれからだ
ソースの改修をしているのですが、 定義未宣言の変数が大量にあって困っています。 OptionExplicit記述をして一つ一つ潰すにしてもあまりに量が多いので せめて一覧出力して修正量がどれくらいか知りたいのですが、 なにかいい方法はありませんか?
952 :
951 :2005/12/06(火) 15:13:57
書き忘れたので追記・・・ OSはWinXPPro VB6+SP6です。どうぞよろしくお願いします(´・ω・)
がんばって下さい。
OptionExplicitを宣言して、コンパイルエラーで潰すのが一番確実で正しいと思うが。 修正量なんて知らないほうが良いんじゃないの?w 全ロジック見直しですっていって工数見積もれば。
955 :
デフォルトの名無しさん :2005/12/06(火) 18:29:36
今、VB6.0でエクセルの帳票を作っているのですが、 コードが変わることによりブレイクして地域名が変わり 改ページの処理をするようにしなくてはいけないんですけれど、 方法がわかりません。 地域名 福岡 --------------------------------------- コード 地域名 --------------------------------------- 0041 福岡 (現状)コードが42になったらブレイクして佐賀に変わる 改ページの処理がわかりません。 地域名 福岡 --------------------------------------- コード 地域名 --------------------------------------- 0041 福岡 0042 佐賀 よろしくお願いします。
956 :
デフォルトの名無しさん :2005/12/06(火) 18:30:25
質問なんですけど、フォームにエクセルのシートを貼り付けて、右クリックのショートカットメニューを消したいんですけど、知ってる人がいたらおしえてください。
マルチ帰れ
958 :
デフォルトの名無しさん :2005/12/06(火) 19:15:48
>>951 VB.NETへのマイグレーションツールを使う
ちなみに、関係ないエラーも数万〜数十万件のオーダーででると思うから泣かない様に
>>955 EXCELでの改ページの方法がわからないの?
改ページのタイミングを検出する方法がわからないの?
Excelでマクロ組む場合の基本。 やりたいことをマクロの記録でVBAに吐かせる。 あとはその選択セルとかを変えるだけ。
961 :
デフォルトの名無しさん :2005/12/07(水) 10:29:02
データコンボコントロールの使い方について教えてください。 Form_loadでDBにコネクションを貼り、unloadで切断するアプリケーションを作っています。 このアプリにADODCとデータコンボコントロールを追加しました。 ADODCの接続文字列にはForm_loadで用いるものと同じものを使っています。 データコンボコントロールはこのADODCをRowSourceとしています。 その結果、動作には問題無いのですがFormの起動がえらくもっさりしてしまいました。 余計なDB接続を作ってしまっただと思います。 Form_loadで生成したコネクションオブジェクトを流用することはできないのでしょうか?
962 :
デフォルトの名無しさん :2005/12/07(水) 10:32:47
質問です。ActiveX DLLを作成しているのですが 'Module1 Public Type TestStruct1'ユーザー定義 strIp As String strUser As String strPass As String End Type 'Class1 Public GetHostInfo(stDisk As String) As TestStruct1 End Function でコンパイルエラーが出ます。DLLで持つ共通関数の構造体を 外部モジュールから構造体を丸々参照できるようにしたいです
963 :
デフォルトの名無しさん :2005/12/07(水) 10:34:17
>>959 改ページのタイミングを検出する方法がわからないのです。
もし、よろしければご教授ください。
965 :
デフォルトの名無しさん :2005/12/07(水) 12:08:23
>>962 Public GetHostInfo(stDisk As String) As TestStruct1
↓
Public Function GetHostInfo(stDisk As String) As TestStruct1
966 :
デフォルトの名無しさん :2005/12/07(水) 12:20:14
定数の型指定についてなのですが、 Web上のサンプルを見ると Private Const HOGE As Long = &H1 と、型を指定している場合と Private Const HOGE = &H1 と、型を指定していない場合があり、 型を指定しない方が多いように見受けられますが、 逆に変数では型を指定していないものはほとんど見あたりません。 なぜ変数はほとんどの場合型を指定しているのに 定数だと型を指定しないことが多いのですか?
>>966 変数で型の指定を省略するとVariantになる。
けれどConstでは定数の値から適当な型を選んでくれるはず。
さらに、たしか昔はConstでは型を指定できなかったような気もする。
968 :
デフォルトの名無しさん :2005/12/07(水) 14:12:22
>>965 すみませんFunction は漏れていたのですがFunction追加しても
改善されないようです。
もし駄目な場合はEXE化してcommand()で引数を渡すよう
思索してるんですが、これまた、引数としては一行の文字列になってまして
この引数をそれぞれの型で個別にやりとりさせる方法ってありますか?
>>968 TestStruct1もクラスにしてしまえばどうだ。
もちろんプロパティ使えばTypeと見た目は変わらないように作れるだろ。
>>962 Module1に書いてあるものを、Class2に書いて。
Class2はプロパティInstancing=6(GlobalMultiUse)で。
テンプレ議論はあだ〜?チンッチンッ☆(AA省略)
VBで作ったexeファイルにフォントの埋め込みをしたいと思いますが、ムリでしょうか?
>>972 埋め込みって、フォントファイル?文字のBMP?埋め込みってコンパイル時?後から?
VB6.0にてスプレッドの項目をクリップボードに コピーしたんですが2000行(68列)のデータが コピーされず100行の絞込みを行った場合 コピーされたので、何かいい解決方法はないでしょうか?
>>978 質問わかりにくくてすいません。
環境VB6.0
スプレッドにてデータを表示
データレコード数2000件
行数68
列数2000
以上データをClipboard.SetText (.Clip)
にてクリップボードに出力したが出来ませんでした。
データ量を減らすと出来るのですが・・・
行数68
列数100
でクリップボードに出力が成功しています。
980 :
デフォルトの名無しさん :2005/12/08(木) 12:00:24
Excel VBA でMSCommを使おうとしていますが、 On_commイベントでの受信ができません。 Windows XP Pro SP2, Excel 2003 SP1, VBA(VB6.0相当?) PC: Excel使用, 外部装置:何か来ると、ステータスを返す 以下のプロシージャで"hoge"が送れました。 Private Sub Command1_Click() Set mscomm1 = CreateObject("MSCOMMLib.MSComm.1") mscomm1.CommPort = 1 mscomm1.Settings = "9600,N,8,1" mscomm1.PortOpen = True mscomm1.Output = "hoge" mscomm1.PortOpen = False End Sub 外部装置からステータスが返ってきますが、下のイベントは発生しません。 Sub MSComm1_OnComm() MsgBox "fuga" End Sub Comman1_Click() 内で Wait を使うと拾えます。 If Application.Wait(Now + TimeValue("0:00:1")) Then data = mscomm1.Input End If アドバイスお願いします。
>>980 mscomm1のクラスオブジェクト変数のスコープの問題とか?
982 :
962 :2005/12/08(木) 14:40:21
みなさんありがとうございました。色々ご教授いただいた方法を 試みまして、クラスにプロパティを作りました。たすかりました
>>981 , 983
レスありがとうございます。
今まで、クラスモジュールを使ったことがなく、
今回のようなケースで使うのかと初めて知りました。
[ツール]-[参照設定] Microsoft Comm Control 6.0 にチェック
クラスモジュール(Class1)
-------------------------------------------
Public WithEvents mscm As MSCommLib.mscomm
Private Sub mscm_OnComm()
End Sub
-------------------------------------------
標準モジュール(Module1)
-------------------------------------------
Dim mscomm1 As Class1
Sub SetMscommEvent()
Set mscomm1.mscm = MSCommLib.mscomm
End Sub
-------------------------------------------
本に、実際のオブジェクトと関連づける必要がある、
とあったので、上のようにしましたが、
「メソッドまたはデータ メンバが見つかりません。」
とエラーが出ます。
Set mscomm1.mscm = MSCommLib.mscomm
だと、「オブジェクトが必要です」
Set mscomm1.mscm = CreateObject("MSCOMMLib.MSComm.1")
だと、「オブジェクト変数または With ブロック変数が設定されていません。」
あと、少しでうまくいく気がするのですが...
訂正 Set mscomm1.mscm = mscomm だと、「オブジェクトが必要です」
Set mscomm1 = New Class1 を Set mscomm1.mscm = MSCommLib.mscomm の前に追加
>>986 Set mscomm1.mscm = New MSCommLib.mscomm
じゃね?
988 :
980 :2005/12/08(木) 17:56:55
レスありがとうございます。 VBなら簡単なのに。VBAだとここまでてこずるとは。 標準モジュール(Module1) ------------------------------------------- Sub SetMscommEvent() Set mscomm1 = New Class1 Set mscomm1.mscm = New MSCommLib.mscomm End Sub Private Sub SendData() Set mscomm1 = New MSCommLib.mscomm mscomm1.CommPort = 1 mscomm1.Settings = "19200,N,8,1" mscomm1.PortOpen = True mscomm1.Output = "piyo" mscomm1.PortOpen = False End Sub Sub mscm_OnComm() MsgBox "fuga" End Sub ------------------------------------------- SetMscommEvent()を一回実行してから受信すれば、 mscm_OnComm()が実行されると期待したのですが、 まだ、反応なしです。
989 :
デフォルトの名無しさん :2005/12/08(木) 18:26:04
BASP21を利用して メールで添付されてきたCSVファイルを取り出して 指定したフォルダに 自動的に保存したいのですが。 「 output = bobj.ReadMail(file, nobody, Folder) 」を 下のコードの中にどのように追加すればいいでしょうか? Dim bobj, ar Dim Server As String, User As String, Pass As String, Command As String, Folder As String Set bobj = CreateObject("basp21") ''BASP21オブジェクト Server = "pop.xxxxx.com" ''POP3サーバー User = "toru_tanaka" ''アカウント名 Pass = "password" ''パスワード Command = "SAVEALL" ''コマンド Folder = "<" & ThisWorkbook.Path & "\mail" ''保存するフォルダ ar = bobj.RcvMail(Server, User, Pass, Command, Folder) If IsArray(ar) Then MsgBox "メールを受信しました" Else MsgBox "新着メールはありません" End If Set bobj = Nothing
どうも、980はインスタンスの概念がわからないようだな。
991 :
980 :2005/12/08(木) 18:49:38
>>990 すいません。分かってないと思います。
何が悪いか教えてもらえませんか。
>>991 こういう人って不思議でしょうがないんだけど
人に質問する前にやることあるんじゃないの?
VBのコントロールの使い方なんてたいていググればいくらでも見つかるけど。
現に今"oncommイベント"で検索してみたが、順をおって使い方を説明しているところが
山ほど出てくる。
こういうやるべきことやらずにアタフタする人は何やっても多分ダメだね。
少なくともPGには向いてないわ。
まあ貶すだけだと後味悪いんでちょっとヒント。
MSCommのイベントは設定してやらないと発生しない。
RThresholdだと思ったけど、ちゃんと設定してます?
っていうか、MSCommで受信処理にOnCommイベントなんて使っちゃダメだよ。
どんなケースでも絶対使わないとまでいえないけど、普通の通信プログラムじゃ
まず使わない。
OnComm使って受信処理するようなコードを書く人はまあヘッポコだわな。
VBじゃなくてさ、Excel VBAなんだよ。 VBなら検索すればサンプル山ほどあるし、実際動かしている。 こんなとこで時間食っているから、ヘッポコであることは認めるし、 OnCommしか使えないレベルでもあるが、 今回の件はOnCommで十分だと思うね。
意味がわからない。 VBのコントロールの使い方はVBからだろうとVBAからだろうと同じですが。
テンプレ議論まだ〜?チンッチンッ☆(脳内AA)
997 :
995 :2005/12/08(木) 22:52:45
>>996 いやいやいやこのスレの行く末を案じて。ちょw
998 :
995 :2005/12/08(木) 23:15:41
次の患者さんどーぞ。 つーか俺様のエピソードを1つ VS6ProにFrontPage98ついてたの知ったのは購入3年後でしたが。 …w
1000
おしい。
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。