質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

925閲覧

VBA ADOのStream オブジェクトを別のモジュール

ITOMO5963

総合スコア98

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2021/02/01 11:30

#実現したいこと。
メインモジュールでADOのStream オブジェクトをSetし別モジュール(SecondModule)でもそのまま利用したいです。
エラーは「ado 名前が適切ではありません」となります。
どのようにすればよいでしょうか?お力沿いお願いいたします。


[main]

vba

1Option Explicit 2Public ado As Object 3 4 5Sub Main() 6 7 '出力設定する 8 Dim Config As String 9 Set ado = CreateObject("ADODB.Stream") 10 ado.Charset = "UTF-8" 11 ado.Open 12 13 ado.WriteText vbLf, 0 14 15 'Secondmodule呼び出し 16 Call SecondModule.Second_Process 17 18 'コンフィグを保存する 19 'BOMを削除する 20 ado.Position = 0 21 ado.Type = 1 22 ado.Position = 3 23 24 Dim tmp() As Byte 25 tmp = ado.Read 26 ado.Close 27 28 ado.Open 29 ado.Write tmp 30 31 Config = Environ("UserProfile") & "\Desktop\test.conf" 32 ado.SaveToFile Config, 2 33 ado.Close 34 35End Sub

[SecondModule]

vba

1Option Explicit 2 3Public Sub Second_Process() 4 5ado.WriteText vbLf, 0 6 7End Sub 8

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

質問のコードをコピーして実行してみましたが、問題なく実行できてファイルが生成されました。
adoという名前の変数とかモジュールが別にあったりしませんか。

とりあえず回避として、adoという変数名を変更してみてください。


直接の回答ではありませんが、プログラミングには、グローバル変数は極力使わないというセオリーがあります。
グローバル変数 - Wikipedia

vba

1Public ado As Object

これはグローバル変数になります。

ここは、グローバル変数を使わずに引数で渡すという方法の方がベターです。
[SecondModule]

vba

1Public Sub Second_Process(ado As Object) 2 3 ado.WriteText vbLf, 0 4 5End Sub

vba

1Public ado As Object 2 3Sub Main() 4 Dim ado As Object 5 6'中略 7 8 'Secondmodule呼び出し 9 Call SecondModule.Second_Process(ado) 10 11'後略

投稿2021/02/01 12:59

hatena19

総合スコア34075

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

radames1000

2021/02/02 00:18

「グローバル変数を使わない」に一票です。
ITOMO5963

2021/02/02 01:49

実現したいことも達成できました。ありがとうございます。 グローバル変数を使わない仕様にしました。助かります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問