エクセルVBAでRS232Cへデータを送ることは出来ますか?
出来るならその方法を教えてください。

はっきりいってVBAまったくの初心者です。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

フリーウェア/シェアウェア/製品で、シリアル通信用のDLLやActiveXがあるようです。



http://www.vector.co.jp/soft/win95/hardware/se16 …
http://www.vector.co.jp/soft/win95/prog/se094850 …
http://www.vector.co.jp/soft/win95/prog/se094016 …
http://www.vector.co.jp/soft/win95/prog/se057451 …
http://www.vector.co.jp/soft/win95/prog/se154476 …
http://www.vector.co.jp/soft/win95/prog/se061892 …

試してみては?
(私は試してませんごめんなさい。)

あと、こちらのページは、電子回路工作関係のページなのですが、「Visual Basicによるプログラム開発」のリンクをたどるとシリアル通信をAPIを使って行う方法とMSCommを使用する方法が掲載されております。参考になるかと思います。
http://www8.freeweb.ne.jp/school/speana_1/
    • good
    • 2
この回答へのお礼

情報ありがとうございます。
皆さんの回答を元にいろいろ調べてみます。

お礼日時:2001/06/27 23:05

MicrosoftのCommコントロールを使えば簡単にできると思います。


[ツール]→[参照設定]の参照設定画面で参照ボタンを押し、「MSCOMM32.OCX」を参照します。

あとは、
-------------------------------------------------
Dim MSCom1 As MSComm
Set MSCom1 = New MSComm
' COM1 を使用します。
MSComm1.CommPort = 1
' 9600bps、パリティなし、データ長 8 ビット、およびストップ ビット長 1。
' MSComm1.Settings = "9600,N,8,1"
' Input プロパティ使用時に、バッファ全体を読み取るように設定します。
MSComm1.InputLen = 0
' ポートを開きます。
MSComm1.PortOpen = True
' コマンドを送信します。
MSComm1.Output = Text1.Text

' シリアル ポートで "OK" 応答データを読み取ります。
' シリアル ポートを閉じます。
MSComm1.PortOpen = False
-------------------------------------------------
な感じでできると思います・・・
    • good
    • 0
この回答へのお礼

osaosa42さんありがとうございます。
非常にありがたいです。
ずぶの素人なので、どう利用していいかもわかりませんが
上記を参考に一から勉強してみます。

お礼日時:2001/06/27 23:11

おはよう御座います。

回答者の方が居られないようですから、RS232cソフトをVBAで組んだことはありませんが、何かのヒントになればと思い書き込んでみました。
これから、勤めですから、この後、レスできません。

Win32APIを使用しないと出来ないでしょう。

そのための書籍を紹介します。


VBAユーザーのための
Win32APIプログラミングガイド

大村あつし著
エーアイ出版


Win32システムサービスプログラミング
マーシャル・ブレイン=著
郡司芳昭=訳
ブレンディスホール(出版)

この2冊あればあなたの構想は実現すると思います。
2冊とも例題が豊富で、分かり易い書籍です。これから、このような分野に興味がある方にはお勧めの入門書です。
ネットワークプログラミングの書籍などもあればあなたのスキルアップができるでしょう。
しかし、VBAの初心者ならば相当な努力が必要でしょう。
    • good
    • 1
この回答へのお礼

情報ありがとうございます。
皆さんの回答を元にいろいろ調べてみます。

お礼日時:2001/06/27 23:06

このQ&Aに関連する人気のQ&A

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

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

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

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

QEXCEL VBA ワークシートのコピーについて

seaclearsky8です。

一つのブックに何枚ものワークシートを追加して保存するVBAについて
ご教授、よろしくお願いします。

コピー元 

MASTER Book MASTER Workseets

コピー先

Copy Book copy Worksheets


コピー元にはワークシートがMASTERワークシートの一枚しかありません。

その一枚のワークシートに値をVBAで入れていき処理し

コピー先のコピーBOOKにワークシートをコピーしていきたいです。

しかし、MASTERBOOKの処理が何通りかあり、

コピー元の一枚のワークシートに
処理別にデータを写し

コピー先BOOKに

         ワークシート名
ワークシート1 処理1ワークシート 
ワークシート2 処理2ワークシート
ワークシート3 処理3コピー元ワークシート3

という具合にワークシートを複数コピーしたいのですが

処理ごとにデータを代入し、コピー処理はできるのですが。

コピー先BOOK

ワークシート3 処理3ワークシート

だけしかコピーされてないBOOKが作成されます。
上書きされているのだと思われます。

対処法が調べましたが見つけられていません。

すいませんが対処法及び参考VBA等ご教授宜しくお願いいたします。

seaclearsky8です。

一つのブックに何枚ものワークシートを追加して保存するVBAについて
ご教授、よろしくお願いします。

コピー元 

MASTER Book MASTER Workseets

コピー先

Copy Book copy Worksheets


コピー元にはワークシートがMASTERワークシートの一枚しかありません。

その一枚のワークシートに値をVBAで入れていき処理し

コピー先のコピーBOOKにワークシートをコピーしていきたいです。

しかし、MASTERBOOKの処理が何通りかあり、

コピー元の一枚のワークシートに
処理別にデータを写し

コピ...続きを読む

Aベストアンサー

今どういうコードを書いているのか不明なので、とりあえず
「1つのシートを別のブックに複数回コピーする」ための参考ソースを書きます。
コピー元のブックに下記ソースを貼り付けて実行してもらえば
新規ブックにコピー元のシートが3枚コピーされると思います。
(新規ブックを追加しているのでシート数は3枚より多くなります)

Sub copySheet()
Dim masterWb As Workbook
Dim masterSh As Worksheet
Dim copyWb As Workbook

Set masterWb = ThisWorkbook
Set masterSh = masterWb.Sheets(1)
Set copyWb = Workbooks.Add

'ここからが実際のコピー処理です。
'単純に3回コピーメソッドを呼び出して3回コピーしています。
masterSh.Copy before:=copyWb.Sheets(1)
masterSh.Copy before:=copyWb.Sheets(1)
masterSh.Copy before:=copyWb.Sheets(1)

End Sub

今どういうコードを書いているのか不明なので、とりあえず
「1つのシートを別のブックに複数回コピーする」ための参考ソースを書きます。
コピー元のブックに下記ソースを貼り付けて実行してもらえば
新規ブックにコピー元のシートが3枚コピーされると思います。
(新規ブックを追加しているのでシート数は3枚より多くなります)

Sub copySheet()
Dim masterWb As Workbook
Dim masterSh As Worksheet
Dim copyWb As Workbook

Set masterWb = ThisWorkbook
Set masterSh = masterWb.Sheets(1)
Set copyWb = W...続きを読む

QRS232Cについて

プログラミング初心者です。
Visual Basic6.0のMScommコントロールで0と1の文字を判別して、mscomm1.outputでon/offの出力信号を送信する方法ってありますか。どなたか御教授願います。

Aベストアンサー

otto0001otto さんの回答で概ね良いのですが
文字列として MSComm1.Output に与えた場合に送信できない文字コードが在ります。
(これはchr関数で文字に変換できない数値があるためです)
そこで次のようにすると0~255まで全ての数値が送信できます。
dim myByte() as Byte
redim myByte(0) as Byte
myByte(0) = &H55 '長さ1の配列に数値を代入する。
MSComm1.Output = myByte

QEXCEL VBA ワークシートのコピーについて

seaclearsky8です。

一つのブックに何枚ものワークシートを追加して保存するVBAについて
ご教授、よろしくお願いします。

コピー元 

MASTER Book MASTER Workseets

コピー先

Copy Book copy Worksheets


コピー元にはワークシートがMASTERワークシートの一枚しかありません。

その一枚のワークシートに値をVBAで入れていき処理し

コピー先のコピーBOOKにワークシートをコピーしていきたいです。

しかし、MASTERBOOKの処理が何通りかあり、

コピー元の一枚のワークシートに
処理別にデータを写し

コピー先BOOKに

         ワークシート名
ワークシート1 処理1ワークシート 
ワークシート2 処理2ワークシート
ワークシート3 処理3ワークシート

という具合にワークシートを複数コピーしたいのですが

処理ごとにデータを代入し、コピー処理はできるのですが。

コピー先BOOK

ワークシート3 処理3ワークシート

だけしかコピーされてないBOOKが作成されます。
上書きされているのだと思われます。

対処法が調べましたが見つけられていません。

すいませんが対処法及び参考VBA等ご教授宜しくお願いいたします。

seaclearsky8です。

一つのブックに何枚ものワークシートを追加して保存するVBAについて
ご教授、よろしくお願いします。

コピー元 

MASTER Book MASTER Workseets

コピー先

Copy Book copy Worksheets


コピー元にはワークシートがMASTERワークシートの一枚しかありません。

その一枚のワークシートに値をVBAで入れていき処理し

コピー先のコピーBOOKにワークシートをコピーしていきたいです。

しかし、MASTERBOOKの処理が何通りかあり、

コピー元の一枚のワークシートに
処理別にデータを写し

コピ...続きを読む

Aベストアンサー

> 配列にワークシートのオブジェクトを入れることとか可能なのでしょうか?

それは多分できないと思います。


> 複数のセル・シートを何回もコピーする場合にでるらしいです。

多分、メモリをたくさん使っちゃってるせいでしょうね。
まず、メモリ使用を減らすようにしましょうか。

・testwriteの最後にオブジェクト変数のメモリ解放を行う。
 具体的には以下のように書く。もうやってたらすみません。
Set cbook = Nothing
Set mastersheet = Nothing
・testwriteの中でのブックオープンおよび保存をやめる。
 新規ブックのオープンをtestwriteを呼ぶ前に1度だけ行い、
 testwriteの中ではその新規ブックに対してシートを追加していく。
 そしてtestwriteの処理が全部終わったら、
 新規ブックの全シートを1度に「記録シートYYYY/MM/DD.xls」にコピーする。

それでも駄目でしたら、以下の回答No.1を試してみてください。
http://oshiete.goo.ne.jp/qa/1822561.html

> 配列にワークシートのオブジェクトを入れることとか可能なのでしょうか?

それは多分できないと思います。


> 複数のセル・シートを何回もコピーする場合にでるらしいです。

多分、メモリをたくさん使っちゃってるせいでしょうね。
まず、メモリ使用を減らすようにしましょうか。

・testwriteの最後にオブジェクト変数のメモリ解放を行う。
 具体的には以下のように書く。もうやってたらすみません。
Set cbook = Nothing
Set mastersheet = Nothing
・testwriteの中でのブックオープンおよび保存をやめ...続きを読む

QVB.netでRS232Cポートを使うには

Visual Basic.net でRS232C PORTを使いたいのですが、具体的な方法を教えてください。(WIN32 APIを経由して駆動するようなのですが。)

Aベストアンサー

MSCommが使えるなら、
ここを参考にしてください。

参考URL:http://www.picfun.com/serial08.html

QEXCELのVBAでシートコピーをしたとき元のマクロを削除するには?

VBAのマクロでシートのコピーをしたいのですが、元のシートにはVBAのコードが含まれています。コピーするのはデータだけのコピーが必要で、マクロ自体は必要ないのですが、それを削除するコードはどのように書いたらいいのでしょうか?
どうしてもコピーしたファイルを開くと「マクロが含まれています」という確認メッセージが出てしまうのですが、それもなくしたいのです。
シートにフォームのボタンが配置されている場合も同様に、そのボタン自体をなくした状態でコピーを行いたいのですが・・・。プログラムで行うのは不可能なのでしょうか?

Aベストアンサー

No2です。
サンプルコードを書いてみました。
「オリジナル」という名前のシートを別ブックとしてコピペ保存します。

Sub サンプル()
Dim sc As Integer
sc = Application.SheetsInNewWorkbook
Application.SheetsInNewWorkbook = 1
ThisWorkbook.Sheets("オリジナル").Cells.Copy 'コピー
Workbooks.Add 'ブック追加
Sheets("Sheet1").Range("A1").PasteSpecial Paste:=xlValues '値貼り付け
Sheets("Sheet1").Range("A1").PasteSpecial Paste:=xlFormats '書式貼り付け
Sheets("Sheet1").Name = "コピー"
Application.CutCopyMode = False
Application.SheetsInNewWorkbook = sc
ActiveWorkbook.Close
ThisWorkbook.Activate
End Sub

No2です。
サンプルコードを書いてみました。
「オリジナル」という名前のシートを別ブックとしてコピペ保存します。

Sub サンプル()
Dim sc As Integer
sc = Application.SheetsInNewWorkbook
Application.SheetsInNewWorkbook = 1
ThisWorkbook.Sheets("オリジナル").Cells.Copy 'コピー
Workbooks.Add 'ブック追加
Sheets("Sheet1").Range("A1").PasteSpecial Paste:=xlValues '値貼り付け
Sheets("Sheet1").Range("A1").PasteSpecial Paste:=xlFormats '書式貼り付け...続きを読む

QVBでRS232Cの制御について。

通信のデータ長やパリティ、ポーレート等の設定を”SETTINGS”でおこない、ポートをオープンして外部機器にデータを送る際、ここでは、データをバイナリデータで送らなければなりません。
STX,アドレス,チェックサム,ETXの順にそれぞれアスキーコードで16進数に変換して送ってますが、うまく通信できません。
教えて頂けませんか。
素人でごめんなさい。
この部分のサンプルプログラムがあれば最高なんですが・・・。

Aベストアンサー

>送信してデータが送られているようです。
>(RS232C→RS485変換にて計測機器に送信。その際LEDが瞬間的に点灯します)

送信できている証拠として、LED点灯ですか...
確かに計測機器に何らかの信号は送られているのでしょうが、
これでは正しいデータかどうかがわかりませんね。

一つずつつぶしていきましょう。
まずラインモニタ等で、本当にパソコンから正しい信号を送っているかどうかの
検証をして下さい。
ラインモニタがなければ別のパソコンでバイナリ通信ができる通信プログラム
でもいいです。その場合バイナリをASCIIコードなどで文字表示できるソフトで。
私は確か簡単なプログラムを作って検証しました。

またソフト的に気になる点を書きます。
1)バイナリ通信では、Byte変数を使う
2)透過コードの扱い
バイナリ通信ではテキスト通信の時のようにSTX(Start of Text)のような
特定の1バイトのコードに意味を持たせることができないので、
透過コードといって、有効データの通信の始まり、終わりを数バイトの
コードで表します。
これは機器によって異なるので、機器の仕様書を見てください。

私が扱った機器では、10Hと02Hが連続するとSTX、10Hと03Hが連続するとETX、
その間のコードが有効データでした。
有効データの中にはデータバイト長やチェックサムが入るので、例えば
偶然にノイズで10H+02Hと10H+03Hが入っても、有効かノイズかの判断が
できます。

以上のことを確かめて見てください。

>送信してデータが送られているようです。
>(RS232C→RS485変換にて計測機器に送信。その際LEDが瞬間的に点灯します)

送信できている証拠として、LED点灯ですか...
確かに計測機器に何らかの信号は送られているのでしょうが、
これでは正しいデータかどうかがわかりませんね。

一つずつつぶしていきましょう。
まずラインモニタ等で、本当にパソコンから正しい信号を送っているかどうかの
検証をして下さい。
ラインモニタがなければ別のパソコンでバイナリ通信ができる通信プログラム
でもい...続きを読む

QVBAのワークシートの追加とコピーなんですが。

VBAのワークシートの追加とコピーなんですが。


sheet1の原紙をすべてコピーして、

新しくワークシートを追加してそのシートに貼り付けるプログラムを

教えてください。

Aベストアンサー

With ActiveWorkbook
  aaa = .Sheets("Sheet1").Cells(9, 4).Value 'aaaは社員
  bbb = .Sheets("Sheet1").Cells(9, 5).Value 'bbbは4月
  .Sheets("Sheet1").Copy After:=.Sheets(.Sheets.Count)
End With
ActiveSheet.Name = aaa & bbb

Qrs232cでのRfidリーダライタの制御方法

研究用にタカヤ製品http://www.takaya.co.jp/enterprise/rf/rfid/module.htmのRFID評価キットTR3-D002Aを購入しました。

Visual Basicでリーダライタを制御するプログラムを作りたいと思っているのですが、プログラミングなどはした事もなく何から初めてよいのか途方にくれています。

通信コマンドは公開されているので、とりあえず、直接通信コマンドをRS232C経由でリーダライタに送って、リーダライタの読み取りモードを変更してみようと思っているですが、そのようにrs232cに繋いだ機器に直接通信コマンドを送るようなソフトはあるでしょうか?

テキストデータを送受信するソフトはあるのですが、なにもレスポンスがありません。通信コマンドは STX アドレス コマンド データ長 ETX SUM CR などとなっているので、それらを送って機器からレスポンスを得たいのですが、、、、
おそらく質問の仕方もかなりずれていると思うのですが、お手柔らかに答えて頂けると幸いです。
また、参考になるサイトなどがあれば教えてください。
osはwindows2000です。よろしくお願いします。

研究用にタカヤ製品http://www.takaya.co.jp/enterprise/rf/rfid/module.htmのRFID評価キットTR3-D002Aを購入しました。

Visual Basicでリーダライタを制御するプログラムを作りたいと思っているのですが、プログラミングなどはした事もなく何から初めてよいのか途方にくれています。

通信コマンドは公開されているので、とりあえず、直接通信コマンドをRS232C経由でリーダライタに送って、リーダライタの読み取りモードを変更してみようと思っているですが、そのようにrs232cに繋...続きを読む

Aベストアンサー

RS232Cの通信ソフトとしては、TeraTermが有名です。
(個人的にはAcknowrichと言うソフトが好きですが)
機械の事やコマンドについては良くわからないのですが、レスポンスが何も無い場合、通信スピードなどのプロトコルが間違っている可能性があります。
このあたりは大丈夫ですか?

おもしろそうな機械ですね。こういう商品ってメーカーから直接買うのでしょうか?

参考URL:http://hp.vector.co.jp/authors/VA002416/,http://www.vector.co.jp/soft/win95/prog/se089304.html

QEXCEL2002で、ブック内のワークシートを他のブックに(VBA含む丸ごと)コピーして移す方法

 EXCEL2002で、ブック内のワークシートを他のブックに(VBA含む丸ごと)コピーして移す方法
 普通のやり方では、セルの数字、値だけで、通常は、中身の重要な"関数式"であったり、VBA等のプログラムまで、コピーされることは、ありませんので、そこまで、出来る方法を教えて下さい。

Aベストアンサー

コピー元のBookとコピー先Bookをどちらも開いて
Excel画面上に並べます(左右に並べる方が作業しやすいと思います)

Ctrlキーを押しながら、コピーしたいシートのタブ部分を
クリック長押しすると、+マークと▲マークが出てきます。
マークが出てきたら、新しいBookにドラッグ&ドロップ で
シートコピーが出来ます。

全く同じシートがコピーされ、マクロもコピーされます。

Qシリアル(RS232C)通信でファイル送信をするには

現在、VB6.0を使用してシリアル通信の処理をしておりますが、
任意のファイルを相手側に送信をしたいと思いますがどの様に
処理をしたらいいいのか判らないので教えて下さい。

Aベストアンサー

>どの様に処理をしたらいいいのか判らないので
1.送信側でファイルを選択、
 →受信側にファイル名を通知(サイズもいる?)
2.送信側でファイルを読み込み、受信側に送信。
 →受信側でファイルに書き出し
  必要であれば、「n番目の送信」「送信サイズ」「チェックサム」等も付加する。
3.ファイルの終端まで2.を繰り返し。

基本的なやり方はどの通信方法でも一緒。


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

人気Q&Aランキング