プロが教えるわが家の防犯対策術!

VBAでシリアル通信したいのです。
VBでは下の検索結果にあるようにmscommが使えます。
VBAではmscommが使えませんでした。制限があるのでしょうか?
VBAで行う方法をご存知の方教えてください。

http://www.okweb.ne.jp/search.php3?dummy=%83%81% …

A 回答 (1件)

トランジスタ技術という雑誌があります


過去に何度か取り上げられている記事の中で
木下隆さんの記事があります
下記のURLが参考になると思います

参考URL:http://activecell.cool.ne.jp/easycomm/index.htm
    • good
    • 1
この回答へのお礼

アドバイスありがとうございました。
このURLにはわたしも目をつけていました。
非常に参考になりました。

VBAでもmscommを標準にしてくれても良いのに...

どうもありがとうございます。

お礼日時:2003/07/14 04:51

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

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

このQ&Aを見た人が検索しているワード

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

Qエクセル VBA でのCOMポート認識

エクセルのVBAを使用してあるアプリを作成しています。そのアプリはシリアルポートを使用してある機器と接続する事で実現できます。
そこで質問ですが、当該PCが認識しているCOMポートをVBAのSELECT BOXに表示したいのですがどうやれば(どのような関数?)を使用して実装COMポートを認識するのでしょうか?
もちろん、USB<--->シリアルケーブルを使用した場合もCOMポートだと認識しなければなりません。
よろしくお願いいたします。

Aベストアンサー

こんにちは。

Windowsのプログラム(VBA含む)から、COMポートを扱う場合は、WindowsAPI を使用すれば可能
だと思います。

COMポートの実装チェックには、WindowsAPI の「CreateFile」関数でCOMポートのオープンを実行
して、その関数の戻り値がエラーかどうかを見れば判断できると思います。
ただし、COMポートが実装されていてもエラーになるケース(既に使用中、使用不可に設定されて
いるなど)がありますので、その場合はエラーコードを取得してその値で「実装/非実装」を判断しな
いといけないと思います。

以下に、VBA から WindowsAPI (COMポート制御関連を含む)を利用するに当たって、参考になり
そうなサイトを上げてみました。宜しければ覗いてみて下さい。

■参考サイト
注)リンク切れの際は御容赦下さい。

1)VBAでWindowsAPIを使用してシリアル通信を行う方法

◎WindowsAPI講座
http://www.serpress.co.jp/winapi/
・このページよりリンクされている下記項目「シリアル通信(1)~(4)」のページでVBAから通信関連の
 APIを使用する方法が書かれています。
 NO.12 シリアル通信(1) ←必要なWindowAPI定義の説明
 NO.13 シリアル通信(2) ←シリアルポートのオープンとクローズを説明
 NO.14 シリアル通信(3) ←シリアルポートの通信プロトコル、送受信バッファ、タイムアウトの設定
 NO.15 シリアル通信(4) ←シリアルポートの送受信方法を説明
・今回の場合は、
   シリアルポートのオープン → 存在有無チェック → シリアルポートのクローズ
 までを行えば良いようなので、シリアル通信(1)~(2) までを参照すれば良いと思います。

2)CreateFile関数でCOM10以上のCOMポートを使用する際の注意点

◎CreateFile関数(Win32API)でCOM10以上を使う場合の注意点
http://www.aofactory.net/log/eid328.html
・ここで、API関数「CreateFile」で指定するCOMポート名(COM1、COM2など)に「COM10」以上を使用
 する場合の問題点および対策が書かれています。
・指定するCOMポートのデバイス名の頭に "\\.\" を付ければ良いようです。
   VBAでの指定例: "COM10" の場合は、 "\\.\COM10" とする。

3)WindowsAPI利用でCOMポートの存在有無をチェックする方法

◎COMポートが存在するかどうかを調べるには? - OKWaveの過去ログより
http://okwave.jp/qa4033242.html
・ここで、API関数「CreateFile」が失敗した際に、同じくAPI関数「GetLastError」でエラーコードを見て
 COMポートの存在有無を調べる旨が書かれています。
注)ただし、VBAでは「GetLastError」を呼んでもエラーコードが得られない可能性があるので、下記4)
 の方法を採った方が良いようです。

4)VBA から Windows API を利用する方法など

◎Office VBA と Windows API - Microsoft MSDN より
http://msdn.microsoft.com/ja-jp/library/cc326057.aspx
・このページの「エラー情報の取得」の説明で、VBAからWindowsAPIを呼出した際のエラーコードの取得
 方法が書かれています。
・VBAからWindowsAPIのDLLを呼び出した際のエラー情報は、「GetLastError関数」では取得できない
 可能性があるので、VBAの場合は「Errオブジェクト」の「LastDLLErrorプロパティ」でエラーコードを取得
 すれば良いようです。
・今回の場合は、COMポートオープン時のエラーコード取得に、この方法が利用できると思います。

こんにちは。

Windowsのプログラム(VBA含む)から、COMポートを扱う場合は、WindowsAPI を使用すれば可能
だと思います。

COMポートの実装チェックには、WindowsAPI の「CreateFile」関数でCOMポートのオープンを実行
して、その関数の戻り値がエラーかどうかを見れば判断できると思います。
ただし、COMポートが実装されていてもエラーになるケース(既に使用中、使用不可に設定されて
いるなど)がありますので、その場合はエラーコードを取得してその値で「実装/非実装」を判断しな
いといけないと...続きを読む

QVBA EasyCommでの送信

文字列を送信する場合は ec.Ascii = "mojiretsu" を送ればよいというのはわかるのですが、例えばキーの'Ctrl'を押すのと同等の命令送信をしたいのですが、この場合どのようにコードを書けばよいか教えていただきたいです。できれば、Altの場合なども教えていただけると助かります。

Aベストアンサー

http://okwave.jp/answer/new?qid=7507694
こちらを参考にすれば
ec.Binary = 17 'Ctrlキーのコード“17”を送信
ec.Binary = 18 'Altキーのコード“18”を送信
かな?

QVB2010で、シリアル通信の方法を教えてください。

VB2010で、シリアル通信の方法を教えてください。

ツールボックスの「Serial Port」を使っています。
送信までは難なくできたのですが、受信が旨くいきません。
参考にしたサイトは、
http://msdn.microsoft.com/ja-jp/library/cc720852.aspx です。

これを実行すると、受信が出来ないだけでなく、フリーズしてしまいます。

どうやったら、受信できるのでしょうか?

Aベストアンサー

受信データが、
STX(&H02)とETX(&H03)には挟まれた形式のテキスト文字になっている。
エラーチェックのBCCは付加されない。
という仕様ならば
ポートをOpenした直後に
SerialPort1.NewLine = Chr(3)
とすれば良い。
受信したデータの先頭1文字がSTXの場合に正常なデータと判断できます。

QVBA & easycomm で長時間測定の問題

エクセルVBAとフリーソフトeasycommで複数同一機種の測定器からデータを吸い上げてエクセルに張り付けるプログラムを組んでいます。実験で使うので、体裁はどうでも良いですが、1秒おきのデータを1日程度取りたいです。
下記のプログラムを作ったのですが、かなりの頻度でフリーズしてしまいます(汗)
数分の測定なら問題ないのですが・・・
どうすれば長時間安定して動作させられるかご教授ください! よろしくお願いします!

*******************************

For kai = 1 To kaisuu '測定回数がkaisuuに入ります

For dai = 1 To daisuu '測定台数がdaisuuに入ります

KOMU = KOMU1 + dai - 1 'KOMU1は1台目のCOMポートの番号で、それ以降はCOMは連続して接続されています

Application.EnableCancelKey = xlErrorHandler
On Error GoTo Esc_EXIT ' ESCキーが押されるまで繰り返す処理を記述

ec.COMn = KOMU ' COMを開く

ec.Setting = "4800,e,7,2" ' Baud Rate 4800 7bit 2stop Even
ec.HandShaking = ec.HANDSHAKEs.No ' ハンドシェイクなし
ec.Delimiter = ec.DELIMs.CrLf ' デリミタにCr/Lfを指定

ec.AsciiLine = "&Q/F" ' &Q/F というコマンドを測定器に送信

Q_F = ec.AsciiLine '受信内容を Q_F に格納

Dim EQU_WAKE As Variant
Dim EQU_WAKE2 As Variant
Dim TEN_WAKE As Variant

' ****************受信データの一部分だけを抜き出す*********************

EQU_WAKE = Split(Q_F, "=") 'Q_F を=で分けたものをEQU_WAKEとする

EQU_WAKE2 = EQU_WAKE(1) 'EQU_WAKE の 2番目の文字列を EQU_WAKE2 とする

TEN_WAKE = Split(EQU_WAKE2, ",") 'EQU_WAKE2 を , で分けた文字列を TEN_WAKE とする
'*********************************************************************

Cells(kai + 6, dai + 2) = TEN_WAKE(0) ' 欲しいデータを縦軸に回数、横軸に台数にわけて張り付けていく

ec.COMn = 0 ' すべてのポートを閉じる

ec.WAITmS = 1000 '測定間隔を1秒にする

Next

Next

Esc_EXIT: '押された後の処理
ec.COMn = 0 ' すべてのポートを閉じる

エクセルVBAとフリーソフトeasycommで複数同一機種の測定器からデータを吸い上げてエクセルに張り付けるプログラムを組んでいます。実験で使うので、体裁はどうでも良いですが、1秒おきのデータを1日程度取りたいです。
下記のプログラムを作ったのですが、かなりの頻度でフリーズしてしまいます(汗)
数分の測定なら問題ないのですが・・・
どうすれば長時間安定して動作させられるかご教授ください! よろしくお願いします!

*******************************

For kai = 1 T...続きを読む

Aベストアンサー

エクセルのバージョンが古ければ、行数の制限に引っかかっている可能性はあります。
ファイルに書き出すには、何通りかの方法があります。

VBAを起動させ、ツールの参照設定で、
microsoft scripting runtime にチェックをいれ、

最初(ループの外)に
Dim fso As New FileSystemObject
Dim ts As TextStream
Set ts = fso.OpenTextFile("C:\Documents and Settings\All Users\デスクトップ\test.txt", ForAppending, True)
などと書いてておき、(ダブルクオート内はパス付きファイル名)

Cells(kai + 6, dai + 2) = TEN_WAKE(0) ' 欲しいデータを縦軸に回数、横軸に台数にわけて張り付けていく
の代わりに

ts.WriteLine kai & vbtab & dai & vbtab & TEN_WAKE(0)

最後に(ループの外で)
ts.close
Set ts = Nothing

とでもすれば、タブ区切りでデータを書いていくことができます。
CSV区切りなどにしたければ、ts.writelineの行をそのように変えればよいだけです。
このように変更して落ちなければ多分エクセルの行数制限に引っかかっているのだと思います。

書かれたデータを、何に、どのように読み込むかはまた、別問題です。

エクセルのバージョンが古ければ、行数の制限に引っかかっている可能性はあります。
ファイルに書き出すには、何通りかの方法があります。

VBAを起動させ、ツールの参照設定で、
microsoft scripting runtime にチェックをいれ、

最初(ループの外)に
Dim fso As New FileSystemObject
Dim ts As TextStream
Set ts = fso.OpenTextFile("C:\Documents and Settings\All Users\デスクトップ\test.txt", ForAppending, True)
などと書いてておき、(ダブルクオート内はパス付きファイル名)

Cells(kai + 6, d...続きを読む

Q古い計測器とPC・EXCEL-VBAでRS-232通信をしてデータロガーをつくれますか。

マニュアル等はないのですが、ANALOGIC社製のマルチメータDP100という古い測定器をもっています。シリアル通信ができるようで、RS-232コネクタがついています。この測定器と古いPCを用いてデータロガーを作成したいのですが、RS-232通信の基礎もわからないため何から始めればいいのか、また、そもそも、マニュアルもないのにこういうことが出来るのか(通信には測定器専用のコマンド等があるのではないですか?)ということも分かりません。以下のことについて教えていただきたく思います。

1.RS-232通信というのは機器ごとに専用のコマンド等があり、それがわからないと通信できないものなのか、それとも機器が異なっても共通の手順でデータのやりとりが可能なのか。

2.EXCELのVBAで通信のプログラムは可能でしょうか。
3.何か参考になるHP等。

Aベストアンサー

1、
機器により、垂れ流しでデーター吐き出すものなら受けるだけ
コマンドをポーリングかけているならホスト側からコマンドを出してやる必要がある。
つまり、機器により違うから解りません。


可能ですけどめんどくさい、遅い。
受けるだけなら、ハイパーターミナルで受けたほうが手っ取り早い。
http://www2.bbweb-arena.com/auto-d/dr_kit_005.htm


232Cの内容がわからないから、参考といわれても。。。

QRS-232Cでバイナリデータを受信する方法

2台のPCを使用しバイナリファイルをRS232Cを使用し1台目のPCは送信専用、2台目のPCは受信専用で、送信側のPCから出したデータを受信側PCでデータの内容を判断し集計するプログラムを作ろうとしています。

送信側のPCでは、"AAB9AAC2AACC01D8AAE2・・・”といった内容のバイナリファイルの内容を1バイトずつ読み込み、それをMsCommを用いてバイナリモードで送信させて、EOFになるまで永遠とそれを繰り返します。

問題は受信側で、たとえば上記のデータの中の"AAB9"ならばカウントを1つ上げる、"AACC01D8"ならばカウントを1つ下げ、それを表示するといったような処理をリアルタイムで行いたいのですが、どうしてもデータの取りこぼしが発生します。

また、データの意味合いとしては、必ず"AA"という1バイトのデータから始まり、それに1バイトから5バイトまでのデータが可変長で付いてきて次の"AA"までが1つの意味となります。

通信パラメータは9600、8ビット、ストップビット1、パリティなしで、その他の制御線は一切使用しないという条件です(要するにRxD、GND線のみの最低限の条件)

受信側のバッファは1024バイトで、MSComm1.RThreshold = 1でOnCommを発生させています。また、送信側のファイルの大きさは1kバイトほどです

正直なところ、このようなことが可能なのかどうかもわからない状況なのですが、現状ではデータを数バイト取りこぼしているだけのようなのでできないことはないのではないか?と考えています。

どなたか、参考文献、ホームページ、プログラム、考え方等を何でもかまいませんん!ぜひ、ご教授願います!!また、現在はVBにて開発中ですが、最悪、言語は問いません。よろしくお願いいたします。

2台のPCを使用しバイナリファイルをRS232Cを使用し1台目のPCは送信専用、2台目のPCは受信専用で、送信側のPCから出したデータを受信側PCでデータの内容を判断し集計するプログラムを作ろうとしています。

送信側のPCでは、"AAB9AAC2AACC01D8AAE2・・・”といった内容のバイナリファイルの内容を1バイトずつ読み込み、それをMsCommを用いてバイナリモードで送信させて、EOFになるまで永遠とそれを繰り返します。

問題は受信側で、たとえば上記のデータの中の"AAB9"ならばカウントを1つ上げる、"AACC01D8"なら...続きを読む

Aベストアンサー

たしか.1秒に1回100msほど.タイマー関連の処理に取られて.結構速度を落とさないと.取りこぼしが発生するようです。

私の関係した対応では.
バッファを巨大にする
転送速度を4800に落とす
受信ソフトの実行速度をあげるため.受信中は他の仕事をさせない
の3店でした。

QVBとVBAの違い

お世話になります。

現在、ExcelVBAで機械設計の計算をさせようと思い勉強しているのですが、VBとVBAの違い(VBと比較したとき、VBAできること、できない事)の境目?がいまいち判りません。
まだまだ勉強中で困惑しております。このままExcelVBAを勉強していく物か、VBについて勉強していくか迷っています。このままExcelVBAを勉強してExcelVBAを理解すれば判断できるかと思うのですが、畑違いの勉強になってしまわないかと心配です。

やりたいことは、各種計算の簡略化です。
現在は、関数電卓で行っていますが、これをパラメータを入力すると計算結果が出る。このような物を作りたいと思っています。

長くなってしまったのでまとめると、
1、VBAとVBの違い
2、ExcelVBAで設計計算が可能か
あと、
プログラムにより計算させるときに、最適なプログラム(JavaとかPHPとかHTML等など・・・)お勧めのプログラムがありましたらアドバイス頂けたらと思います。

Aベストアンサー

1. VBAとVBの違い

VBは単体で動作するアプリケーションが作れますが、VBAはOfficeが必要です。
また、VBAはOfficeの環境が使えるので、Excel等を使った入出力の機能が既にできていますが、VBではある程度自分で作る必要があります。また、費用的な面でVBは購入しないと使えませんが、VBAはOfficeがあれば使えますので、既にExcelなどを導入されているならば、追加の費用が必要ありません。
もし、複数の人間で作ったプログラムを利用され、かつその中にOfficeを持っていない人が含まれるのであればVBAではできませんので、VBが必要です。

2. ExcelVBAで設計計算が可能か

可能です。また、多分VBAを使わなくてもExcelの関数でもある程度のことが可能だと思われます。お持ちの関数電卓の桁数にもよりますが、相当な高精度が必要でない限り大丈夫です。

文面からすると、プログラミング未経験のようですが、やりたいことが明確なので、Excelをお持ちであればVBAで始めてみてはいかがでしょうか。他の言語(Java, C, PHP...)でも可能でしょうが、中には環境を用意しなくてはならなかったり、本質である計算以外に気にしなくてはならないことが多く、初心者にはとっつきづらいのではないかと考えます。

VBAからVBへの移行、VBからVBAへの移行はどちらも可能ですし、VBAからVBへの移行は多少時間がかかるかもしれませんが、VBよりVBAから始める方が楽なので、どちらに優越があるとは一概に言えないと思います。一人でちょっと使う程度や勉強用なら、ExcelVBAをお勧めします。
しばらくすると、ExcelVBAの限界を感じるようになると思うので、そこからVBに移行するというのでも悪くないと思います。

1. VBAとVBの違い

VBは単体で動作するアプリケーションが作れますが、VBAはOfficeが必要です。
また、VBAはOfficeの環境が使えるので、Excel等を使った入出力の機能が既にできていますが、VBではある程度自分で作る必要があります。また、費用的な面でVBは購入しないと使えませんが、VBAはOfficeがあれば使えますので、既にExcelなどを導入されているならば、追加の費用が必要ありません。
もし、複数の人間で作ったプログラムを利用され、かつその中にOfficeを持っていない人が含まれるのであればVBAではで...続きを読む

QVB RS-232C 通信プログラム

何度もお世話になっております。(VB6.0 MSCommを使用した通信プログラムを作成中です。)私は新卒で食品会社に入社したのですが,プログラムの分かる上司が身近では誰1人といない状況で困っています。

今作成しているのは,重量計に荷物が乗った段階で作業者がデータ転送ボタン(重量計についている)を押すと,重量計のデータ(500kgというデータ)をシリアルでCOM1に取り込み,フォームにエクセルのセルを作成し(OLEを用いて)保存できるようにしたいと考えています。

(重量計から送られてくるデータのフォーマット)
1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8
S T , N T , + 0 0 1 2 . 3 4 k g CR LF
ST ; ヘッダ1 NT ; ヘッダ2  CRLF ; ターミネータ
                  の18バイトのデータです。

ここで質問なのですが
(1) 以下のプログラムで重量はバイト配列に受信できていますでしょうか?(実際に重量計とPCを接続できれば良いのですが工場の稼動状況が関わっておりすぐにはできません。)
(2) 18バイトのデータを受信するからと言って RThreshold = 18 として良いのでしょうか? 普通,データは1バイトずつ送られてくると思うので RThreshold = 1としてイベントを発生させる必要があるのかとも思うんですが。

'MSComm1,2(COM1,2)コントロールの初期設定
Private Sub Form_Load()
MSComm1.CommPort = 1 '通信ポートを設定
MSComm1.Settings = "9600,n,8,1" '通信条件の設定
MSComm1.RThreshold = 18 '固定長のデータ
End Sub

Private Sub Port1_Click() 'Port1_Clickのクリックイベントプロシージャ
If MSComm1.PortOpen = False Then 'シリアルポートのオープン
MSComm1.PortOpen = True
End If

LPort1.Text = "" 'テキストボックスのクリア受信

End Sub

Private Sub MSComm1_OnComm() '受信のOnCommイベント

Dim Buffer1(0 To 17) As Byte '受信バッファの変数宣言(18バイト)

Select Case MSComm1.CommEvent 'CommEventプロパティに対する処理
Case comEvReceive '受信データ有り

   Buffer1 = MSComm1.Input '受信データをバッファに格納

'これより下は受信した18バイトから必要なデータ8バイト目から4バイト分切り出し,dという配列(4バイト)に格納できないかと考えました。
Dim i As Integer

Dim d(0 To 3) As Byte

d = MidB(Buffer1, 8, 4)

LPort1.Text = d
'LPort1.Text = Buffer1 '受信データをテキストボックスに表示
End Sub

何度もお世話になっております。(VB6.0 MSCommを使用した通信プログラムを作成中です。)私は新卒で食品会社に入社したのですが,プログラムの分かる上司が身近では誰1人といない状況で困っています。

今作成しているのは,重量計に荷物が乗った段階で作業者がデータ転送ボタン(重量計についている)を押すと,重量計のデータ(500kgというデータ)をシリアルでCOM1に取り込み,フォームにエクセルのセルを作成し(OLEを用いて)保存できるようにしたいと考えています。

(重量計から送られてくるデータのフォー...続きを読む

Aベストアンサー

>★キャラクタ長 7bit
>★パリティ 偶数
のデータを
>★キャラクタ長 8bit
>★パリティ 無し
で受け取った場合、
LFが文字化けします。
そのため、“Case vbLf”は通りません。

※s = MSComm1.Input の後に
※MsgBox "s=" & s
※または
※MsgBox "s(hex)=" & Hex$(s)
※を入れて確認すればすぐに判ります。

QRS232Cの制御について詳しく書かれている書籍

RS232Cに接続された機械(Robot)をパソコンで制御するプログラムを書きたいのですが、それにあたり、シリアルポートの制御を主として記述している参考書(書籍)を探しています。
書店などでプログラミング教書を探しても、RS232に関して触れられている本はほとんど無く、あったとしても紹介程度のものです。
プログラミングソフトはVisualStudioExpressEditionsシリーズを予定しています。無料なので....
現時点で扱える言語はCとBASICだけです。
良い参考書があれば、VBやC#、C++等にもチャレンジしてみる意欲はあります。

何か、ハードウェア開発者(と言っても、今回はシリアルポート制御ですが..)でも理解できそうな比較的新しい書籍がありましたら、教えていただけると助かります。

Aベストアンサー

Visual C# 2005 ですが、解説は丁寧ですから役に立つと思います。
http://www.robotsfx.com/robot/robohow/RoboHow60/RoboHow60.html
マイクロソフトによるVBの例
http://www.microsoft.com/japan/msdn/vbasic/migration/tips/SeriaPort/

本だとこの手の本ですかね。古いですから、VB2005じゃないです。
http://www.cqpub.co.jp/hanbai/books/36/36421.htm
アマゾンで探すと関連書籍が出てきますが、読んでみないと使える本は分かりません。
http://www.amazon.co.jp/VB%E3%81%A8%E8%A3%BD%E4%BD%9C%E3%81%A7%E5%AD%A6%E3%81%B6%E5%88%9D%E3%82%81%E3%81%A6%E3%81%AE%E3%83%91%E3%82%BD%E3%82%B3%E3%83%B3%E5%BF%9C%E7%94%A8%E5%B7%A5%E4%BD%9C%E2%80%95PC%E3%81%AE%E3%83%91%E3%83%A9%E3%83%AC%E3%83%AB-%E3%82%B7%E3%83%AA%E3%82%A2%E3%83%AB%E3%83%BB%E3%83%9D%E3%83%BC%E3%83%88%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9FIO%E5%88%B6%E5%BE%A1%E3%81%AE%E5%AE%9F%E9%9A%9B-%E3%83%88%E3%83%A9%E6%8A%80Beginners-%E6%B8%A1%E8%BE%BA-%E6%98%8E%E7%A6%8E/dp/4789836428

必要ないかもしれませんが、RS232Cの基本知識。
http://www.nahitech.com/nahitafu/mame/mame5/rs232c.html

Visual C# 2005 ですが、解説は丁寧ですから役に立つと思います。
http://www.robotsfx.com/robot/robohow/RoboHow60/RoboHow60.html
マイクロソフトによるVBの例
http://www.microsoft.com/japan/msdn/vbasic/migration/tips/SeriaPort/

本だとこの手の本ですかね。古いですから、VB2005じゃないです。
http://www.cqpub.co.jp/hanbai/books/36/36421.htm
アマゾンで探すと関連書籍が出てきますが、読んでみないと使える本は分かりません。
http://www.amazon.co.jp/VB%E3%81%A8%E8%A3%BD%E4%BD%9C%E3...続きを読む

Q別のシートから値を取得するとき

Worksheets("シート名").Activate
上記のを行ってから別シートの値を取得するのですが、
この処理を行うと指定したシートへ強制的にとんでしまいます。。。

※イメージ
For ~ To ~
  Worksheets("シートA").Activate
  シートAの値取得
       :
  Worksheets("シートB").Activate
  シートBの値取得
Next

このイメージ処理を行うとものすごい勢いで画面がチカチカします。。。
シートを変えずに他のシートから値を取得する方法はないのでしょうか。
教えてください!

Aベストアンサー

Worksheets("シートA").Range("A1")

みたいな感じでできませんか?


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

人気Q&Aランキング