VBを勉強しているのます
いまエクセルで作った住所録のデータをVBにとりこんで
編集や追加などを出来るようなプログラムをつくりたいのですが
どうやってもエクセルのデータをとりこめません
プロパティの設定がおかしいのでしょうか?

よきアドバイスをお願いします
初心者なので詳しくお願いします

A 回答 (2件)

Excelがインストールされている環境でのみ使える方法です。


「参照設定」で、「Microsoft Excel 9.0 Object Library」にチェックをつけて、以下のようにコーディングします。
Excelの各オブジェクトについては、ExcelのVBAのヘルプを参照してください。
不明点とかあったら、補足してください。

Private Sub Command1_Click()
 Dim ExcelApp As New Excel.Application
 Dim ExcelSheet As Excel.Worksheet
 
 Dim CellData As Variant
 On Error Resume Next
 '開く
 ExcelApp.Workbooks.Open ("X:\XXX\Book1.xls")
 Set ExcelSheet = ExcelApp.Workbooks("Book1.xls").Worksheets("Sheet1")
 'エラーチェック
 If Err <> 0 Then
  MsgBox Err.Description
  Exit Sub
 End If
 'ワークシートを操作
 With ExcelSheet
  CellData = .Range("C1") 'C1のセルを取得
  MsgBox CellData
  .Range("D1") = CellData + 10 'D1に値を設定
 End With
 '終了処理
 ExcelApp.Workbooks("Book1.xls").Save '保存
 ExcelApp.Quit
End Sub
    • good
    • 0
この回答へのお礼

お返事がおくれてしまいましてすみません
大変詳しく説明していただきありがとうございました
参考にさせていただきます

回答ありがとうございました

お礼日時:2001/06/12 17:03

貴方がどうやって作ったのか解らないので、アドバイスも出来ません。



 可能なら、エクセルのデータを取込んで来る予定の所のソースを補足して下さい。
 また、ソースが内場合は、貴方行った操作を書いて下さいね。
    • good
    • 0
この回答へのお礼

お返事がおくれてしましましてすみません
また、私の質問の説明不足をお許しください
今回は、ARCさんの回答を参考にさせていただきました

またわからないことがありましたとき、是非ご回答よろしくお願いします
回答ありがとうございました

お礼日時:2001/06/12 17:10

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

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

Qカスタムコントロール作ってます(VB.NET)。VB.Net にVB.6のActiveX作成時にあったプロパティページ作成ができないようですが

タイトルどうりです。VBNETのカスタムコントロールでデザインモードにおけるフォームつまりプロパティページやビジュアルにプロパティボックスから設定できるようにしたいのですが、どうしたらできるでしょうか?VB6ではできたのですが、(Activexコントロール)。

よろしくお願いします。

Aベストアンサー

通常のプロパティと同じように、プロパティ ウィンドウに項目を表示して設定できるようにする必要があります。
具体的には、
1. カスタム コントロールのクラスに外部公開する Property プロシージャを作成して、内部で値を保存できるようにする。
2. そのプロパティの宣言部分で、プロパティ ウィンドウに表示するように指示する属性値を設定する。

こんな感じです。

参考URL:http://www.atmarkit.co.jp/fdotnet/winexp/winexp02/winexp02_01.html

QVB.NETからエクセルを起動して、エクセルでVBを閉じたい。

こんにちは。
先日、エクセルのフォームを最前面に配置したいという
質問をさせて頂いたものでございます。
それで、SetWindowPosのAPIで設定する方法を教えて頂いたのですが、
最前面にする事は出来たのですが、フォームを動かすと
ブックはその一つ下に現れてしまい、
ブックを最背面に配置するなどを試みてみたのですが、
どうもうまく行かないので、
エクセルから直に立ち上げることが出来ないようにして
VB.NETのフォームを作ってエクセルにデータを送ろうかと思いました。
それで、データを送る方法は何とかなりそうなのですが、
VB.NETのフォームからエクセルを起動して、
次にエクセルからそのフォームを出したり、隠したりしたいのですが、
その場合、VB.NETのフォームのなんと言うハンドルを取得すればよいでしょうか?
IDにも色々あるようで、どれを使えばよいのか分からなくなってしまいました。
そのIDはVBのフォームを起動した時に、エクセルと共有するiniファイルなどに、書き込んでおこうかと思っています。
よろしくお願いいたします。m(__)m

こんにちは。
先日、エクセルのフォームを最前面に配置したいという
質問をさせて頂いたものでございます。
それで、SetWindowPosのAPIで設定する方法を教えて頂いたのですが、
最前面にする事は出来たのですが、フォームを動かすと
ブックはその一つ下に現れてしまい、
ブックを最背面に配置するなどを試みてみたのですが、
どうもうまく行かないので、
エクセルから直に立ち上げることが出来ないようにして
VB.NETのフォームを作ってエクセルにデータを送ろうかと思いました。
それで、データを送る方...続きを読む

Aベストアンサー

まず
・Excelのバージョン
・.NETのバージョン(2005でしたっけ?)
を教えてください。

Excelのユーザフォームを開くときに、エクセル本体を最小化でもよいですか?

Q【VB2005】メソッドに渡したデータによって、データ型の違うデータを取得する

23歳男性です。
visual studio 2005で開発してます。
ふと思ったんですけど、メソッドに数値を渡して、その数値によってデータ型の違うデータを取得できたら便利かなーと思いました。

************************************************************
私が考えたコード
************************************************************
■メソッド
DataGet(1)

■メソッド側処理
public function DataGet(byval num as integer) as ×××
select case num
case 1:「日付型」データ
   case 2:「数値型」データ
case 3:「文字型」データ
end select
return データ
end function
************************************************************
上記のコードはあくまで想像です。
でも実際、このようなことはできるのでしょうか?
ご存知の方がいらっしゃいましたらご教授願います。

23歳男性です。
visual studio 2005で開発してます。
ふと思ったんですけど、メソッドに数値を渡して、その数値によってデータ型の違うデータを取得できたら便利かなーと思いました。

************************************************************
私が考えたコード
************************************************************
■メソッド
DataGet(1)

■メソッド側処理
public function DataGet(byval num as integer) as ×××
select case num
case 1:「日付型」データ
   case ...続きを読む

Aベストアンサー

オーバーロードにすればどうでしょうか。
同じ関数名で引数に応じて戻り値を変更する事が出来ます。

Private Sub Form1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Click
Console.WriteLine(DataGet(10))
Console.WriteLine(DataGet("あ"))
Console.WriteLine(DataGet(Now()))
End Sub

Function DataGet(ByVal value As Integer) As String
Return value * 2
End Function

Public Function DataGet(ByVal value As String) As String
Return value & value
End Function

Public Function DataGet(ByVal value As Date) As Date
Return value.AddDays(3)
End Function

オーバーロードにすればどうでしょうか。
同じ関数名で引数に応じて戻り値を変更する事が出来ます。

Private Sub Form1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Click
Console.WriteLine(DataGet(10))
Console.WriteLine(DataGet("あ"))
Console.WriteLine(DataGet(Now()))
End Sub

Function DataGet(ByVal value As Integer) As String
Return value * 2
End Function

Public Function DataGet(ByVal valu...続きを読む

QVBにてエクセルにデータ貼り付け

VBからエクセルにデータを貼り付けたいのですが、
この際、書式設定を行っています。
ところが、結果をみると、指定した書式に
なっていません。

なにか、処理の順序で制約等があるのでしょうか?

ロジックは
(1)データ貼り付け
(2)書式設定
です。

なお、書式は”ユーザー定義”です。

データ貼り付けの際の書式設定方法を
ご教授よろしくお願いします。

Aベストアンサー

VBは良く知りませんが、VBAでセルにデータを入れ、セルの書式で「ユーザー定義」をするならこんな感じですが・・・・。
ぜんぜん外してたらごめんなさい。

Sub Macro1()
With ActiveSheet.Range("A4")
.Value = 123
.NumberFormatLocal = "00000"
End With
End Sub

QVB6.0 エクセルシートにデータ保存

いつもお世話になっております。

VB6.0を使用しています。
VBフォーム上にエクセルシートを貼り付けて(OLEの利用),測定器から出力されたテキストデータ(重量,製品の番号)をCOM1に取り込んでいます。
例えば,200回データを受け取るとして,エクセルのシートにA列(重量),B列(製品の番号)としてともに200行データを保存していきたいと考えています。

このようなことをしたい場合,どのような知識が必要になってくるのでしょうか?勉強したいのですが,何が必要な知識なのかわからない状態です。(例,OLE・VBAなど)

宜しくお願いします。

Aベストアンサー

COM1に取り込んでいるということはRS-232Cを使用しているのでしょうか?
だとすると
RS-232Cでの通信は押さえておかないといけないですね。
それと、OLEを利用しているということなので、OLE関連の操作方法は学んでおく必要があると思います。


人気Q&Aランキング

おすすめ情報