Microsoft XML Parserを使用したいと思っています。
VBを立ち上げ、標準EXEのプロジェクトで、参照設定を
Microsoft XML v2.6(なぜ2.6か不明)
にして、

dim xDoc as MSXML.DOMDocument
set xDoc = New MSXML.DOMDocument

とコーディングすると、実行時に、
コンパイルエラー:ユーザ定義型は定義されていません***
と怒られます。

でも、
Dim xDoc As Object
Set xDoc = CreateObject("MSXML.DOMDocument")
とすると、実行できます。

どうして、***のようなエラーが出るのですか?
両方ともエラーが出るならつじつまが合っている気がするのですが、
そうじゃないのですか?

環境は
OS:Win98SE,VB6.0(SP5),IE5.5(SP1)
です。
よろしくお願いします。

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

A 回答 (2件)

MSXML.DLLをレジストリ登録すれば


古いMSXMLを使うこともできます。

くわしくは下記URLを参照

参考URL:http://www.microsoft.com/japan/developer/worksho …
    • good
    • 0
この回答へのお礼

お忙しいところ、どうもありがとうございます。
試してみます。

お礼日時:2001/06/29 16:10

>Microsoft XML Parserを使用したいと思っています。


>VBを立ち上げ、標準EXEのプロジェクトで、参照設定を
>Microsoft XML v2.6(なぜ2.6か不明)
>にして、
この時、F2を押してオブジェクトブラウザをだして
<すべてのライブラリ>の脇の↓を押した時に
MSXMLオブジェクトがありますか?

>dim xDoc as MSXML.DOMDocument
>set xDoc = New MSXML.DOMDocument
dim xDoc as MSXML2.DOMDocument
set xDoc = New MSXML2.DOMDocument
または
dim xDoc as DOMDocument
set xDoc = New DOMDocument
でコンパイルエラーが取れませんか?

>Set xDoc = CreateObject("MSXML.DOMDocument")
"MSXML.DOMDocument"この文字列と
>dim xDoc as MSXML.DOMDocument
MSXML.DOMDocumentは意味がことなります。
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。

>この時、F2を押してオブジェクトブラウザをだして
><すべてのライブラリ>の脇の↓を押した時に
>MSXMLオブジェクトがありますか?

これがないのです。MSXML2だけなのです。
なので、使用できないのも仕方ないかと思うのです。

>>dim xDoc as MSXML.DOMDocument
>>set xDoc = New MSXML.DOMDocument
>dim xDoc as MSXML2.DOMDocument
>set xDoc = New MSXML2.DOMDocument
>でコンパイルエラーが取れませんか?

確かに取れます。

でも昔作成した時のプロジェクト(この時は、
Microsoft XML v2.0を参照設定してました)を全て
MSXML→MSXML2にしても動作が保証されるか、つまり
例えば、createElementが使えるかってご存知ですか?
まあ、この辺は英語のドキュメントを見て努力しますが。

>>Set xDoc = CreateObject("MSXML.DOMDocument")
>"MSXML.DOMDocument"この文字列と
>>dim xDoc as MSXML.DOMDocument
>MSXML.DOMDocumentは意味がことなります。

そうなのですか。勘違いしてました。

なんで、MSXMLが参照できないんだろう(;_;)

お礼日時:2001/06/29 15:47

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

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

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

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

QJavaの拡張ライブラリをインストールする時にdllファイルを使った

あるJavaの拡張ライブラリ(下記URLのもの)をインストールする時に、extディレクトリにjarファイルを貼り付けて、さらに付属のdllファイルをsystem32ディレクトリに貼り付ける必要がありました。

あまり、拡張ライブラリをインストールしたことがなかったのですが、少し調べてみるとjarファイルをextディレクトリに置くのは普通らしいのですが、dllファイルを使うというのはあまり聞きません。

jarファイルにはクラスが入っていると思うのですが、dllファイルには、どのような意味があるのでしょうか?

よろしくお願いします。

http://sourceforge.net/projects/netsnmpj

Aベストアンサー

どのような拡張ライブラリが詳細は見ておりませんが…。

おそらく、100% Pure Java(純粋なJava APIのみで実装されたもの)で実現できない機能をCやC++などのネイティブコードで書いて、jarファイル内にあるクラスの中でJNI(Java Native Interface)を使用して呼び出しているのでしょう。
dllファイルはそのネイティブコードにあたる部分になります。

なお、この拡張ライブラリは100% Pure Javaではない(環境依存する)ので、その点は注意して下さいね。

QMicroSoft BasicのDim文とVisualBasicのDim文の違い

私が20年前にMicroSoft Basicを使っていたときは、DIM文はDIMENSIONの略で配列型変数の宣言に使っていました。

最近VisualBasicの勉強を始めたのですが、変数の宣言はすべてDim文になっており、昔のMS BasicのDim文と意味合いが変わっているのに驚いています。

ここで質問させてください。
・なぜ配列を意味するDimension文が変数の宣言なのか?
・どのバージョンのBasicからDim文の意味が変わったのか?

私が使用していたのはNEC N-Basic,N-88Basic,N-98Basicです。

Aベストアンサー

VISUAL BASIC のDimは ディメンジョンの略です。
私の経験ではVB2.0時代からありました。

配列0を考えた場合変数とおなじであるからだとおもいます

QDLLファイルのインストールができません。

WIN95を再インストールしたのですが、エクセル97を起動しようとすると、
「起動にはOLEAUT32.DLLが必要です。セットアップメニューより再インストールしてください」と表示されたので、スタート~検索~で調べると、同名のファイル(ただしWIN2.1用)がありましたので、これ削除しようとすると「このファイルはウィンドウズ95内で使用中のため削除不可」というコメントが出ます。仕方なく、他のパソコンから95用バージョンの同名ファイルをFDDにコピーしてC¥WINDOWS¥SYSTEMにコピーしようとしても、「同名のファイルがあるため不可」の表示が出て前に進みません。他のインストール法をご存知の方、どうか教えてください。

Aベストアンサー

#2一部訂正

ごめんなさい。タイプミスです。
「copy a:\oleaut32.dll c:\windows\sysytem」

「copy a:\oleaut32.dll c:\windows\system」
です

QDim x As Integer = 0

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

只今、本に記載してあるソースコードを手入力しています。
標記のように入力したら、『コンパイルエラー 修正候補:ステートメントの最後』というエラーが出ました。

(1)このエラーは無視してもよいのでしょうか?
(2)そもそも、変数の宣言文の後ろに=0をつけている意味がわかりません。当方VB初心者です。

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

Aベストアンサー

この点は(変数の宣言と初期化は)言語による、と考えるべきです。
この質問は何の質問か。
VB系統らしいことは判るが
VB以外のBASIC
VB6
VBA
VB.NET系統
のどれか質問に書くべき。質問者は経験が無くて、視野がそこまで行かないのかも知れないが。
ーーー
VBAでは(多分VBでも同じ。テスト環境がないので)
Sub test01()
Dim x As Integer
x = 0
MsgBox x
End Sub
はOK
ーー
Sub test01()
Dim x As Integer =0
MsgBox x
はDim x As Integer =0
と入力した段階でエラー。
http://www.bunsugi.ed.jp/vba4graduate/vba_hensuusyokika.htm
ーーー
定数のConstであればこういう書き方はOK
Sub test01()
Const x As Integer = 0
MsgBox x
End Sub
ーーー
VB.NETでは、OK
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
Dim x As Integer = 10
MsgBox(x)
End Sub
ーー
Javaでは可能であるようです
http://msugai.fc2web.com/java/var2.html
ーーーーー
>ろに=0をつけている意味がわかりません
宣言と同時に値を与える=初期化する

この点は(変数の宣言と初期化は)言語による、と考えるべきです。
この質問は何の質問か。
VB系統らしいことは判るが
VB以外のBASIC
VB6
VBA
VB.NET系統
のどれか質問に書くべき。質問者は経験が無くて、視野がそこまで行かないのかも知れないが。
ーーー
VBAでは(多分VBでも同じ。テスト環境がないので)
Sub test01()
Dim x As Integer
x = 0
MsgBox x
End Sub
はOK
ーー
Sub test01()
Dim x As Integer =0
MsgBox x
はDim x As Integer =0
と入力した段階でエラー。
http://www.bunsug...続きを読む

QNorton Internet Security 2004のアンインストールに関して、 NAVShExt.dllファイルが削除できません。

インストール後起動しないので再インストールしたくてやったのですが、Norton Internet Security 2004のアンインストールが成功しません。コントロールパネルからの削除ができなかったので、テクニカルサポートで調べながら、レジストリキーの削除、Cドライブの中のSymantec関連のファイルを手動で削除しました。2003試用版のアンインストールが不完全(LiveRegとLiveUpdate削除済みでしたが)の可能性もあるとのことで、削除ツールはSymsetup.exeとRnisUPG.exeとRnav2003.exeを試してみました。
tempファイルもすべて削除しました。
最後にどうしても削除できないファイルが[C:\ProgramFiles\Norton Internet Security\Norton AntiVirus\NAVShExt.dll]です。
このファイルに何かしようとすると次のメッセージが出ます。
「このファイルは有効なWin32アプリケーションではありません」
「削除できません。アクセスできません。ディスクがいっぱい出ないか、書き込み禁止になっていないか又はファイルが使用中でないか確認してください」
このまま、再インストールしてしまってよいものかどうか...
昨日別の質問で3名の方からご回答いただき、セーフモードでも試したり、削除ツールをさがしたりしましたができませんでした。

インストール後起動しないので再インストールしたくてやったのですが、Norton Internet Security 2004のアンインストールが成功しません。コントロールパネルからの削除ができなかったので、テクニカルサポートで調べながら、レジストリキーの削除、Cドライブの中のSymantec関連のファイルを手動で削除しました。2003試用版のアンインストールが不完全(LiveRegとLiveUpdate削除済みでしたが)の可能性もあるとのことで、削除ツールはSymsetup.exeとRnisUPG.exeとRnav2003.exeを試してみました。
tempファイルも...続きを読む

Aベストアンサー

#3です
以下のURLではだめですか

situation
navshext.dll を削除できません。指定されたファイルは、Windows が使っています。」 が手動削除等でNorton AntiVirus のインストールフォルダを削除しようとすると発生する

http://service1.symantec.com/support/INTER/navjapanesekb.nsf/b0dbf49e05cc8def88256db3005f48d0/57b25753a2aec1c049256bd8001e1f4e?OpenDocument&csm=no&prev=http%3A//search.symantec.com/custom/jp/techsupp/kb/query.html%3F*col=kb*st=1*nh=10*qp=url%3A/INTER/navjapanesekb.nsf;,%20url%3A/INTER/gobackjapanesekb.nsf%20url%3A/INTER/navjapanesekb.nsf%20url%3A/INTER/ghostjapanesekb.nsf%20%0A%09%09%09%09%09%09%09url%3A/INTER/nisjapanesekb.nsf%20url%3A/INTER/nswjapanesekb.nsf%20url%3A/INTER/pcajapanesekb.nsf%20url%3A/INTER/winfaxjapanesekb.nsf%20url%3A/INTER/winfaxjapanesekb.nsf%0A%09%09%09%09%09%09%09url%3A/INTER/sharedtechjapanesekb.nsf%20url%3A/INTER/japanesecustserv.nsf*qt=%8E%E8%93%AE%8D%ED%8F%9C*miniver=*pcode=*la=ja<>&sone=_tasks.html&stg=&prod=&ver=&base=&next=&tpre=jp&src=jp_sg&pcode=

#3です
以下のURLではだめですか

situation
navshext.dll を削除できません。指定されたファイルは、Windows が使っています。」 が手動削除等でNorton AntiVirus のインストールフォルダを削除しようとすると発生する

http://service1.symantec.com/support/INTER/navjapanesekb.nsf/b0dbf49e05cc8def88256db3005f48d0/57b25753a2aec1c049256bd8001e1f4e?OpenDocument&csm=no&prev=http%3A//search.symantec.com/custom/jp/techsupp/kb/query.html%3F*col=kb*st=1*nh=10*qp=url%3A/INTER/navjapanese...続きを読む

Qマクロで100マス計算! Dim i,j As Integer For i = 2 ToRang

マクロで100マス計算!

Dim i,j As Integer

For i = 2 ToRange(”A1”).End(xlDown).Row
For j=2 To Range(”B1”).End(xlToRight).Column

Cells(i,j).Value = Cells(i,1).Value * Cells(1,j).Value
Next j
Next i
Endsub

上記のように記述しましたが、
iの最終行が2となってしまっていますがなぜこのコードが間違っているのか分からないです。。どなたか教えていただけたら嬉しいです!

Aベストアンサー

確認してはいませんが…


>改行、スペースは実際にはきちんととっていますので気にしないでください
とのことなので、違っているのかもしれませんが、

>For i = 2 ToRange(”A1”).End(xlDown).Row
         ↓
 For i = 2 To Range(”A1”).End(xlDown).Row
で、うまくいきませんか?
100マス(10×10)と最初から決まっているので、範囲は 2 To 11 でも良いように思いますが…

改行、スペースなどが正しくなっているなら、Range(”A1”).End(xlDown).Rowの値が2以下になっている可能性が考えられます。(ということは、A1が空白セル、または、A3が空白セルなどなど・・)
A1が空白セルの場合は、
 For i = 2 To Range(”A2”).End(xlDown).Row
とするか、
 For i = 2 To 11
などとすることで、動作するのではないかと推測します。

Qファイル変換ソフト実行時エラー"序数 6467 がMFC42.DLLから見つかりませんでした"が表示される

 あるファイル変換ソフトを実行したところ、以下のメッセージが表示され正常終了できませんでした。
 調べたところ、MFC42.DLLは、C:\WINDOWS\system32とファイル変換ソフト・インストールフォルダに存在し、MFC42.DLLを入れ替えようとしたのですが、ファイル使用中となりできませんでした。
 また、WINDOWSのパス設定を、C:\WINDOWS\system32からファイル変換ソフト・インストールフォルダに変更すればと思ったのですが、変更方法がわかりませんでした。
 どなたか、対処方法を教えてください。

"序数 6467 がDLLダイナミックライブラリMFC42.DLLから見つかりませんでした"

Aベストアンサー

> 序数 6467 が~

典型的なDll Hellです。

真・コンピュータ用語辞典 - DLL Hell
http://www.geocities.co.jp/SiliconValley/5634/t82C4_0001.html#2448

> MFC42.DLL

こちらは、色んなアプリケーション(Word, Excel, オンラインソフト…)が使用するファイルです。
うかつに書き換え、削除すると、Windowsは起動しても、アプリケーションが使えなくなります。

> また、WINDOWSのパス設定を、C:\WINDOWS\system32からファイル変換ソフト・インストールフォルダに変更すればと思ったのですが、

同じ理由でこちらも止めた方が良いです。
下手をするとOSさえ起動しなくなるかも。

--
Windows9x/Meであれば、ファイル変換ソフトのフォルダにDLLがある今の状態で問題なかったのですが、Win2000あたりから管理方式が変わってしまいました。
レジストリをいじくると、XPでも9x形式のパス検索を行うように出来たはずですが、方法を失念。

類似の操作として、以下の手順で互換モードで起動してみると、どうでしょう?

Windows アプリケーションの互換モードの使用方法
http://support.microsoft.com/default.aspx?scid=kb;ja;292533

参考URL:http://support.microsoft.com/default.aspx?scid=kb;ja;292533

> 序数 6467 が~

典型的なDll Hellです。

真・コンピュータ用語辞典 - DLL Hell
http://www.geocities.co.jp/SiliconValley/5634/t82C4_0001.html#2448

> MFC42.DLL

こちらは、色んなアプリケーション(Word, Excel, オンラインソフト…)が使用するファイルです。
うかつに書き換え、削除すると、Windowsは起動しても、アプリケーションが使えなくなります。

> また、WINDOWSのパス設定を、C:\WINDOWS\system32からファイル変換ソフト・インストールフォルダに変更すればと思ったのですが、

同...続きを読む

QVB6変数の宣言dim j,k,p,m,n as Integerは良くない?

お世話になります。

VB暦1年です。

汎用の変数宣言でタイトルのように
dim j,k,p,m,n as Integer
dim ssa,ssb as String

など、カンマ区切りで変数宣言を使っていたのですが
最近、知人にasの手前の変数は型どおり宣言されるが
その手前の変数はVariant型で宣言されてしまうと指摘されました。

指摘されるまで気にはしていませんでしたが
ウォッチで確認すると変数に代入されるまでは
型がVariant/Emptyとなってます。

以後、気をつければいいのですが
過去にコーディングしたプログラムにも多少、使用していて客先に納品してしまっているものもあります。
後々、問題になるのかな?

Aベストアンサー

おっしゃる通り、カンマで区切る場合は、
Dim j As Integer, k As Integer, p As Integer
という風にすべてAsで型を明示しないと、
Variant型になってしまいます。
つまり、
Dim j
Dim k
Dim p As Integer
とわけて書いた場合と同じです。
(VB.NETは、
Dim j, k, p As Integer
で全部Integerになるようなので、ややこしいですね)

すでにご存知とも思いますが、一般的にVariant型を多用しているコードは、宣言を見ても、どういう種類の値を使うかわかりづらいですし、比較対象の型を誤るというようなバグの原因になりやすいので、型を明示できるような状況で敢えてVariant型を使うべきではないです。

しかし、すでに納品してしまったコードについては、問題はメモリを余計に使ってしまうことくらいではないでしょうか?
他の人が気づかなかったことから考えるに、多分狭いスコープで使っていますよね? 比較対象や代入するべき型を誤るというようなロジックの誤りがない限り、少なくとも動作上の問題は発生しないと思います。ただ、直せる機会があるのであれば、直した方がいいとは思いますが。

おっしゃる通り、カンマで区切る場合は、
Dim j As Integer, k As Integer, p As Integer
という風にすべてAsで型を明示しないと、
Variant型になってしまいます。
つまり、
Dim j
Dim k
Dim p As Integer
とわけて書いた場合と同じです。
(VB.NETは、
Dim j, k, p As Integer
で全部Integerになるようなので、ややこしいですね)

すでにご存知とも思いますが、一般的にVariant型を多用しているコードは、宣言を見ても、どういう種類の値を使うかわかりづらいですし、比較対象の型を誤るというよう...続きを読む

QDLLファイルを削除してもいい?

『Acrobat Reader4.0』を、アンインストールする時に、『DLLファイルを削除しますか?削除すると、他のアプリケーションが起動しない場合があります』のような内容だったので、削除しないまま、アンインストールしました。そのファイルは、残ったままなんですが・・ファイルは削除してしまうと、どういう時に不都合になるのでしょうか?DLLファイルの意味をよく理解していないので、詳しく教えて下さいませ。よろしくお願いします。m(__)m

Aベストアンサー

DLL(ダイナミックリンクライブラリ)は、プログラムの一部を実行ファイルから切り離して、複数のプログラムから使えるようにしたものです。
つまりそのDLLはAcrobat Reader以外のプログラムも使う可能性がある、ということです。
ただし、アンインストーラが自分以外の共有DLLを削除することは、まず、ありません。
アンインストーラが削除しようとするのは、Acrobatをインストールしたときに一緒に入れられたDLLであり、それを他のプログラムが参照することは普通あまり考えられないからです。

後でDLLを手動で削除するときは、そのDLLファイルの置かれている場所を判断の目安にしてください。

アプリケーション(この場合はAcrobat)と同じフォルダ内にあるDLL→ほとんどの場合は消しても問題ない

WindowsのSYSTEMフォルダにあるDLL→消すと問題が起きるおそれがある

Q調べてもわからないのでこの文の意味を教えてください。 Dim a as system.Reflect

調べてもわからないのでこの文の意味を教えてください。

Dim a as system.Reflection.Assembly=system.Reflection.Assembly.GetExcutingAssembly()

Dim b as string = system.IO.Path.GetDirrectoryName(a.Location)


VB.NETを使用しています。

Aベストアンサー

Dim a as system.Reflection.Assembly=system.Reflection.Assembly.GetExcutingAssembly()
自分自身 (実行プログラム) を参照

Dim b as string = system.IO.Path.GetDirrectoryName(a.Location)
実行プログラムがあるフォルダーのパスを取得


人気Q&Aランキング

おすすめ情報