【先着1,000名様!】1,000円分をプレゼント!

OS: Windows 8.1
Excel2013 VBA
Access 2013 Database
サーバにあるAccess2013 のmdbファイルに接続する時に、エラーになります。

●エラー番号:3706
●エラー内容:プロバイダーが見つかりません。
 正しくインストールされていない可能性があります。

●ソース
dim dbCon as object

Set dbCon = CreateObject("ADODB.Connection")
dbCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= _
\\192.168.0.250\serverc\03kanri\database.mdb"

●参照設定
・Visual Basic for Applications
・Microsoft Excel 15.0 Object Library
・OLE Automation
・Microsoft Office 15.0 Object Library
・Microsoft Forms 2.0 Object Library
・Microsoft ActiveX Data Objects 2,8 library
・Microsoft Scripting Runtime
・Microsoft DAO 3.6 Object LIbrary

誰か、解決策をご存の方がおられましたら、どのように修正すればいいか教えてくださると大変助かります。

よろしくお願いします。

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

A 回答 (2件)

ここは投稿時の手違いだと思いますが


dbCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Data Source= \\192.168.0.250\serverc\03kanri\database.mdb;"

そのmdbファイルは直接Access2013で開けますか?
開けなかった場合、
https://oshiete.goo.ne.jp/qa/8935670.html
97形式なら変換する必要があります。

\\192.168.0.250\s・・・は、IPアドレスでもUNC名でも問題ありませんでした(当方では)

ACE データベースエンジンは下位互換性がありますので
mdb を対象としていても有効です。
dbCon.Open "Provider=Microsoft.ACE.OLEDB.12.0;" _
& "Data Source= \\192.168.0.250\serverc\03kanri\database.mdb;"
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
このmdbファィルは、Access2013で直接開くことは出来ます。もう一度、このエクセルファイルを開き、このプログラムを実行してみましたら、何故か普通に動きました。何が問題だったのかが良くかわらないままですが・・・

お礼日時:2015/03/29 15:05

……えーと、ローカルなサーバにある Access ファイルに HTTP 経由でアクセスしようとしているように見えるのですが、LAN 経由ではだめな理由はございますでしょうか。


一応、サーバ側にリモートデスクトップサーバをインストールすれば HTTP 経由接続できる接続文字列が見つかった(下記 URL の"Using RDS (MS Remote)"節)のですが、それは多分あなたが望まれていることではないですよね。
https://www.connectionstrings.com/access/
    • good
    • 1
この回答へのお礼

はい、違います。HTTP経由ではありません。なので、このエラーメッセージがちょっと不可解です。

お礼日時:2015/03/29 14:52

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

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

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

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

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

QEXCEL VBAでACCESSに接続時にエラーが出ます

自分のPCの場合は、EXCEL VBAでACCESSにADOで接続時してデータを抽出することが出来ますが、他PCより同じマクロを動かすと「実行時エラー'3706'、プロバイダーが見つかりません。正しくインスツールされていない可能性があります。」のエラーメッセージが出ます。
ACCESSのデータは、EXCEL VBAで自分のPCからのみOPEN出来るようになっているようですが、他のPCからもEXCEL VBAでOPEN出来るようにするにはどうしたら良いのでしょうか。
ACCESSの事は良く分からないので教えてください。
ちなみに、他のPCで直接ACCESSデータを起動するとOPEN出来ます。
宜しく、お願いします。

Aベストアンサー

コネクションの文字列が提示されていないので何とも言えません。
{みだりに公開もできないものではありますが}
コネクションの文字列に問題があるように思います。
つながるPCとつながらないPCで「UDL」をつくって見たらどうでしょう。
空のファイルをEditorで作ってtest.udlという名前で保存
それをダブルクリックすると接続を確立するためのプログラムが立ち上がりますから
そこでプロバイダーなどを選んで「接続テスト」がOKになるようにします。
保存したあとそのファイルをEditorでみると接続文字列が分かると思います。
ウイザード代わりに使うということです。
その後でそれぞれのUDLの内容を比較したら何らかの回答が得られるのではないかと思います。

Q.VBSだとADODBのプロバイダが見つからない件

こんばんは

.vbsファイルからデータベースを操作しようとして躓いています。
エクセルvbaでは動いているのに、.vbsに移植するとエラーが出てしまいます。
エラーの内容は「プロバイダーが見つかりません。正しくインストールされていない可能性があります。」です。

次のスクリプトです。

'ここから
Dim ADO_CONNECT
Dim MDBName
Dim dbCon
Dim strSQL

ADO_CONNECT = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
MDBName = WScript.Arguments(0) 'エクセルVBAの場合はハードコード
Set dbCon = CreateObject("ADODB.Connection")
dbCon.Open ADO_CONNECT & MDBName & ";"
strSQL = "命令文"
dbCon.Execute (strSQL)

'ここまで

プロバイダーの場所、バージョン、32/64ビット、あたりに問題がのかもしれませんが、調べてもよくわかりません。エクセルVBAでは動作するので、参照設定?の違いなのかもしれません。どのように解決したら良いでしょうか。

Win 7 Pro 64bit
MS Accessなし
Excel 2007 あり

こんばんは

.vbsファイルからデータベースを操作しようとして躓いています。
エクセルvbaでは動いているのに、.vbsに移植するとエラーが出てしまいます。
エラーの内容は「プロバイダーが見つかりません。正しくインストールされていない可能性があります。」です。

次のスクリプトです。

'ここから
Dim ADO_CONNECT
Dim MDBName
Dim dbCon
Dim strSQL

ADO_CONNECT = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
MDBName = WScript.Arguments(0) 'エクセルVBAの場合はハードコード
Set dbCon = CreateOb...続きを読む

Aベストアンサー

スクリプトを32bit版ファイラーから試すと問題ありませんでした。
が、Explorer (64bitで動作)から試すと同じエラーになりました。
Explorer 64bit で動作

Wscript も64bitが呼ばれる

ADODB の64bit版は存在しないのでエラー発生の流れかと思います。
(Win7 64bit & Office 2010 64bit でもほんの少しだけ確認)

なので、
http://d.hatena.ne.jp/KenKens/20140312/1394641831
の中ほどにあるように32bit版で起動しなおすようにすれば解決するものと思われます。

Qマクロの修正

今月同好会のパソコンを買いかえましたら下記問題点が発生し解決出来ません。
解決方法をご指導いただきたくお願い申し上げます。

  旧PC  WindowsXP  Excel 2002  Access 2002
  新PC  Windows 7  Excel 2010  Access 2010

問題点
 1・旧PCから新PCに移行しましたら、下記メッセージが表示され 
    'DB接続の ADCN.Open strDbConst でストップしてしまい更新出来ません。
    メッセージ
実行時エラー 3706
プロバイダーが見つかりません。正しくインストールされていない可能性があります。
 *尚その他のエクセル・ワードのファイルは、そのまま使用出来ます。

会員名札.xls に記述してあるマクロのコピー
  ’アクセスの会員管理.mdbからエクスポート
Public ADCN 'コネクト変数
Public ADRS 'レコードセット変数
Public ADCM 'コマンド変数

  ’DB接続
     Sub SpConnect()
Dim wMdb As String
Dim wPass As String
Dim UserName As String
UserName = Environ("USERNAME")
wMdb = "C:\Documents and Settings\" & UserName & "\My Documents\GGG
         \筆王\会員管理.mdb" '← Accessのデータべース


  wPass = "" '← データベースのパスワード
     strDbConst = "Provider=MicroSoft.Jet.OLEDB.4.0;Data Source=" & wMdb & ";Jet  OLEDB:Database Password=" & wPass
     Set ADCN = CreateObject("ADODB.Connection")
     Set ADCM = CreateObject("ADODB.Command")
     Set ADRS = CreateObject("ADODB.Recordset")
     ADCN.Open strDbConst
     ADCM.CommandType = 4
     ADCN.CommandTimeout = 0
     Set ADCM.ActiveConnection = ADCN
    End Sub

  'DB切断
Sub SpDisconnect()
ADCN.Close
Set ADRS = Nothing
Set ADCM = Nothing
Set ADCN = Nothing
End Sub

今月同好会のパソコンを買いかえましたら下記問題点が発生し解決出来ません。
解決方法をご指導いただきたくお願い申し上げます。

  旧PC  WindowsXP  Excel 2002  Access 2002
  新PC  Windows 7  Excel 2010  Access 2010

問題点
 1・旧PCから新PCに移行しましたら、下記メッセージが表示され 
    'DB接続の ADCN.Open strDbConst でストップしてしまい更新出来ません。
    メッセージ
実行時エラー 3706
プロバイ...続きを読む

Aベストアンサー

私自身はADOは使っていないのですが・・・(汗)

原因は、JET4.0を指定していることではないでしょうか。
【参考】
http://www.microsoft.com/downloads/ja-jp/details.aspx?FamilyID=C06B8369-60DD-4B64-A44B-84B371EDE16D
(ページ下方『注意事項』の「2. OLEDBを使用する~」の部分)

とりあえず、パスワードの指定方法がわからないので(汗)
当該MDBファイルのパスワードを一旦解除した上で、
プロバイダの指定を「MicroSoft.Jet.OLEDB.4.0」から
「Microsoft.ACE.OLEDB.12.0」に変更して、確認して
みてください。

なお、もしかしたらですが、Passwordの方は今までと同じ
(但しJETの後ろのスペースが2つだったので1つ削除)、
「JET OLEDB:Database Password」のままでいいのかも
しれません(汗)
http://social.msdn.microsoft.com/Forums/ja-JP/csharpexpressja/thread/bcf40c9e-97c2-486e-867d-98877d0054e1/

私自身はADOは使っていないのですが・・・(汗)

原因は、JET4.0を指定していることではないでしょうか。
【参考】
http://www.microsoft.com/downloads/ja-jp/details.aspx?FamilyID=C06B8369-60DD-4B64-A44B-84B371EDE16D
(ページ下方『注意事項』の「2. OLEDBを使用する~」の部分)

とりあえず、パスワードの指定方法がわからないので(汗)
当該MDBファイルのパスワードを一旦解除した上で、
プロバイダの指定を「MicroSoft.Jet.OLEDB.4.0」から
「Microsoft.ACE.OLEDB.12.0」に変更して、確認して
みてください...続きを読む

QAccess 2013 でADOがうまく使えません

Access 2013 でADOが使えません。

下記のように記載しています。

Dim DB as ADODB.Connection
Dim rs as ADODB.Recordset

Set DB = CurrentProject.Connection

Set rs = New ADODB.Recordset
rs.Open "xxxxxxx", DB, adOpenKeyset, adLockOptimistic

「参照設定」で
Microsoft ActiveX Data Objects Recordset 6.0 Library
にはチェックを入れています。

実行すると
最初の Dim DB as ADODB.Connection の部分で

コンパイルエラー
ユーザー定義型は定義されていません

と出てストップしてしまいます。
何が間違いなのでしょうか。

Aベストアンサー

> 「参照設定」で
> Microsoft ActiveX Data Objects Recordset 6.0 Library
> にはチェックを入れています。

2013 は使ったことがないので確かなことは言えませんが、
普通は
[Microsoft ActiveX Data Objects x.x Library]
を参照設定するのではないでしょうか?

QDoEvents関数って何?

こんにちは。

VBAやプログラミングに詳しい皆様に
教えていただきたい質問があります。

cells(1,1)からcells(5000,1)までの値を消去するときに
処理の進行状況を表示するためにuserform上にプログレスバーを表示したいと思います。

そこで下記のようなコードを入力しました。

userform1.show
for i =1 to 5000
cells(i,1)=""
userform1.progressbar1.value=i/5000*100
next i
unload userform1

しかしこれだとuserformの背景が真っ白になってしまい
ラベルの文字も消えてしまいます。
そこで「EXCEL VBA パーフェクトマスター」という本を見たら

for i =1 to 5000
cells(i,1)=""
userform1.progressbar1.value=i/5000*100
DoEvents
next i
unload userform1
と入力すれば解決することがわかりました。

しかし「DoEvents」についてあまり詳しく書いていなかったのでDoEvents関数をヘルプで見ると、
「発生したイベントがオペレーティング システムによって処理されるように、プログラムで占有していた制御をオペレーティング システムに渡すフロー制御関数です。」

と書いてあるのですが正直、書いてあることがよくわかりません。

どなたかDoEvents関数について、
もう少しわかりやすく教えていただけませんか。
それから、最初に書いたコードで実行すると
ユーザーフォームの背景が真っ白になってしまう原因も
教えていただけませんか?

よろしくお願いいたします。

こんにちは。

VBAやプログラミングに詳しい皆様に
教えていただきたい質問があります。

cells(1,1)からcells(5000,1)までの値を消去するときに
処理の進行状況を表示するためにuserform上にプログレスバーを表示したいと思います。

そこで下記のようなコードを入力しました。

userform1.show
for i =1 to 5000
cells(i,1)=""
userform1.progressbar1.value=i/5000*100
next i
unload userform1

しかしこれだとuserformの背景が真っ白になってしまい
ラベルの文字も消えてしまいます。
そ...続きを読む

Aベストアンサー

簡単に言うと、
OS に制御を渡すってことです。(ヘルプそのまんま)
時間が掛かるループ処理などの場合、ループが終わるまで制御は独占されてしまいます。
ですのでループ中は OS や Excel そのものにも再描画をさせる暇さえ与えません。
途中に DoEvents を入れると制御が OS に渡るので、OS は溜まっていた処理をそこで行うことができます。
結果、フォームの再描画などが行われることになります。

注意点ですが、
Private Sub CommandButton1_Click()
  Dim i As Long

  For i = 1 To 50000
    DoEvents
    Cells(i,1) = ""
  Next i
End Sub

Private Sub CommandButton2_Click()
  MsgBox "hoge"
End Sub

っていうフォームのコードがあった場合、
DoEvents を入れることによって、ループ中にユーザーがCommandButton2 を押すことによって CommandButton2 のクリック イベントも動いちゃいます。
CommandButton1 のクリック イベントではループの前に
CommandButton1.Enabled = False
CommandButton2.Enabled = False
を書いてフォーム上の CommandButton を無効にしておき、ループが終わったら
CommandButton1.Enabled = True
CommandButton2.Enabled = True
と書いて CommandButton を有効に戻してください。

これを工夫すれば、CommandButton2 で CommandButton1 のループを途中キャンセルする処理もすることができます。

Private Canceled As Boolean

Private Sub CommandButton1_Click()

  CommandButton2.Enabled = False

  Dim i As Long
  For i = 1 To 50000
    DoEvents

    If Canceled = True Then
      MsgBox "キャンセルしました"
      Exit Sub
    End If

    Cells(i, 1).Value = ""
  Next i
End Sub

Private CommandButton2_Click()
  Canceled = True
End Sub



コードの行頭にあるスペースは見易さのために全角スペースで作成していますので、これをこのままコピペするとエラーになるかもしれません。
コピペするなら行頭の全角スペースを半角スペースに直してください。

簡単に言うと、
OS に制御を渡すってことです。(ヘルプそのまんま)
時間が掛かるループ処理などの場合、ループが終わるまで制御は独占されてしまいます。
ですのでループ中は OS や Excel そのものにも再描画をさせる暇さえ与えません。
途中に DoEvents を入れると制御が OS に渡るので、OS は溜まっていた処理をそこで行うことができます。
結果、フォームの再描画などが行われることになります。

注意点ですが、
Private Sub CommandButton1_Click()
  Dim i As Long

  For i = 1 To 50000
...続きを読む

Q【Excel VBA】マクロでExcel自体を終了させたい

環境:WindowsXP、Excel2003

マクロでエクセルを終了(ブックを閉じて、アプリケーション自体も終了)させたいのですが、以下のコードではアプリケーションが閉じてくれません。

ThisWorkbook.Close
ExcObj.Quit
Application.Quit

どこか悪いところはありますでしょうか?

よろしくお願いします。

Aベストアンサー

普通に考えれば質問者のコードで上手くいきそうですが
hana-hana3さんの回答にもあるようにThisWorkBook.Closeでコード終了となりますので
Application.QuitをThisWorkBook.Closeの前にもってこないといけません。
Application.Quitはそれがあるプロシージャのコードが全て終わるまで
その実行を保留するちょと特別動作をします。

'-------------------------------------
 Application.Quit
 ThisWorkbook.Close
'-------------------------------------
 
 

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

QVBSでADOを使ってaccessのテーブルに接続

VBSでADOを使ってaccessのテーブルに接続する方法は?

Sub ADO_test()

Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset

cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source= " & "D:\【Access】サンプル.mdb"
rs.Open "テーブル1", cn, adOpenKeyset, adLockOptimistic

MsgBox "test成功です"

rs.Close: Set rs = Nothing
cn.Close: Set cn = Nothing

End Sub

をACCESSVBAで実行すると成功しますが
全く同じコードをメモ帳に貼り付けてtest.vbsで保存し、ダブルクリックすると、

行:3
文字:11
エラー:ステートメントの末尾が不正です。
コード:800A0401

のエラーになります。

VBAは少しわかるのですが、VBSに関しては初心者です。
どこを修正すればコードが通るのか教えてください。

VBSでADOを使ってaccessのテーブルに接続する方法は?

Sub ADO_test()

Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset

cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source= " & "D:\【Access】サンプル.mdb"
rs.Open "テーブル1", cn, adOpenKeyset, adLockOptimistic

MsgBox "test成功です"

rs.Close: Set rs = Nothing
cn.Close: Set cn = Nothing

End Sub

をACCESSVBAで実行すると成功しますが
全く同じコードをメモ帳に貼り付けてtest.vbsで保存...続きを読む

Aベストアンサー

Dim cn 'データ型の指定は出来ません。VBSにお任せになります
Dim rs
const adOpenKeyset = 1
const adLockOptimistic = 3
set cn=createobject("adodb.connection") 'Accessのように参照設定は出来ないので此処で
set rs=createobject("adodb.recordset")

cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source= " & "D:\【Access】サンプル.mdb"
rs.Open "テーブル1", cn, adOpenKeyset, adLockOptimistic 'Accessの定数名では指示できないので実数で
'rs.Open "テーブル1", cn, 1, 3 'これだと後で見ても分からないので、Const で宣言
MsgBox "test成功です"
msgbox rs(0)
rs.Close: Set rs = Nothing
cn.Close: Set cn = Nothing

かな?
定数の実際の値はイミディエイトウィンドウで
?adOpenStatic とかで返ってくる値を確認してください。

Dim cn 'データ型の指定は出来ません。VBSにお任せになります
Dim rs
const adOpenKeyset = 1
const adLockOptimistic = 3
set cn=createobject("adodb.connection") 'Accessのように参照設定は出来ないので此処で
set rs=createobject("adodb.recordset")

cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source= " & "D:\【Access】サンプル.mdb"
rs.Open "テーブル1", cn, adOpenKeyset, adLockOptimistic 'Accessの定数名では指示できないので実数で
'rs.Open "テーブル1", cn, 1, 3 'これだと後で見...続きを読む

QExcelVBAでのAccessデータベースとの接続

ExcelのVBAによるAccessデータベースの操作を勉強中(始めたばかり)です。
ソフトバンク パブリッシング出版の「Excel VBA データベース構築」で勉強しているのですが、その中で、外部データとの接続に関して以下のような例文がありました。

Sub openADOdb()
Dim myADOcon As ADODB.Connection
Set myADOcon = New ADODB.Connection
myADOcon.Open _
"Provider=Microsoft.Jet.OLEDB.3.51;Data Source=C:\残高DB.mdb"
myADOcon.Close
Set myADOcon = Nothing
End Sub

これを実行すると、myADOcon.Open ”Provider~ のところで、以下のエラーが発生しました。

実行時エラー’3706’:
プロバイダが見つかりません。正しくインストールされていない可能性があります。

これはExcelもしくはAccessが正しくインストールされていないということなのでしょうか。対処法としてはどのような方法がありますか。

また、本には「プロバイダ名には、どのOLE DBプロバイダを使用するかをしていします。この文字列は、OLE DBプロバイダのマニュアルやヘルプを調べると記載されています。」と出ているのですが、OLE DBプロバイダのヘルプとはどのようにしたら見れるのでしょうか。

なお、Excel97とAccess97を使っています。
以上2点よろしくお願いします。

ExcelのVBAによるAccessデータベースの操作を勉強中(始めたばかり)です。
ソフトバンク パブリッシング出版の「Excel VBA データベース構築」で勉強しているのですが、その中で、外部データとの接続に関して以下のような例文がありました。

Sub openADOdb()
Dim myADOcon As ADODB.Connection
Set myADOcon = New ADODB.Connection
myADOcon.Open _
"Provider=Microsoft.Jet.OLEDB.3.51;Data Source=C:\残高DB.mdb"
myADOcon.Close
Set myADOcon = Nothing
End Sub

これ...続きを読む

Aベストアンサー

97ではADOは使えません。

ADOは2000からです。
2000の場合はAccess2000の形式のデータベースに接続する場合プロバイダは
Microsoft.Jet.OLEDB.4.0 以上のバージョンを指定します。

"Provider=Microsoft.Jet.OLEDB.3.51;Data Source=C:\残高DB.mdb"
ではなく
"Provider=Microsoft.Jet.OLEDB.4.0;" & _"Data Source=C:\残高DB.mdb"
で出来るはずです。

97で同様の処理をするならDAOを使えばできます。
DAOを使用してAccessデータベースに接続するんです。
OpenDatabase メソッドの引数にデータベース名を指定します
「参照設定」で [Microsoft DAO 3.5 Object Library] に参照します。

Dim ws As DAO.Workspace, db As DAO.Database
Dim rs As DAO.Recordset

Set ws = DBEngine.Workspaces(0)  'デフォルトのワークスペースを定義
Set db = ws.OpenDatabase("C:\残高DB.mdb") 'データベースを開く
Set rs = db.OpenRecordset("Table1", dbOpenDynaset) 'テーブル名を指定してレコードセットを作成する

こんな感じで出来ますよ。

97ではADOは使えません。

ADOは2000からです。
2000の場合はAccess2000の形式のデータベースに接続する場合プロバイダは
Microsoft.Jet.OLEDB.4.0 以上のバージョンを指定します。

"Provider=Microsoft.Jet.OLEDB.3.51;Data Source=C:\残高DB.mdb"
ではなく
"Provider=Microsoft.Jet.OLEDB.4.0;" & _"Data Source=C:\残高DB.mdb"
で出来るはずです。

97で同様の処理をするならDAOを使えばできます。
DAOを使用してAccessデータベースに接続するんです。
OpenDatabase メソッドの引数にデータベ...続きを読む

QエクセルVBAでテキストボックスの値の取得と変更について

エクセルのVBAを使ってシート上のテキストボックスのテキストを取得・変更するマクロを作成したいと思っていますがうまく行きませんので、お知恵を拝借したいとおもいます。

環境:WindowsXPでオフィス2002
状況:
エクセルブックa.xlsのシートに「コントロールツールボックス」のテキストボックスを配置(オブジェクト名はTEXTBOX_C)
エクセルブックb.xlsにコードを書き、a.xlsのTEXTBOX_CのプロパティのValueかTextを取りだしたい

試した事:
コントロールを配置したシートに次のマクロ
TEXTBOX_C.Text = "これはコントロールのテキストボックス"
を書くとテキストボックスに文字を入れ込めますが、別のエクセルブックからだと上手く行きません。

また、オートシェイプのテキストボックスの場合は簡単に出きるのですが、コントロールツールボックスではどうしても上手く行きませんので、対象法などご存知の方いらっしゃいましたら教えてください

Aベストアンサー

エクセルを新規に開きました。
そのSheet1に(コントロールツールボックスの)TextBoxを貼りつけました。
そのBook1から、ファイル-開くで別ブックを開きました。
別ブックのMojule1側に下記を書いて
Sub test02()
MsgBox Workbooks("book1").Worksheets("sheet1").textbox1.Text
End Sub
を実行すると、Book1のTextBoxに入れた文字列が表示
されました。
がそんな質問ではないのですか。


人気Q&Aランキング