■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#6476-0OSの違いで動かない?一帆2002-04-03(水) 09:54
     #6478-1RE#6476:OSの違いで動かない?藤代千尋2002-04-03(水) 11:38
     #6496-1RE#6478:OSの違いで動かない?一帆2002-04-04(木) 01:14
     #6498-1RE#6476:OSの違いで動かない?魔界の仮面弁士2002-04-04(木) 02:04
#6476-0
OSの違いで動かない?
始めまして。お世話になります。
原因がわからないので適当な題名になっていないと思います。
最近、VBを始めたばかりです。

開発環境は、Win2K・VisualStudio6.0 です。
下記のコードのように、こちらが指定したファイルを、指定したディレクトリにコピーするようなプログラムを組み、実行ファイルを作成しました。
当然、開発マシンでは正常動作を確認できました。
これを WinNT4.0(SP6)環境で実行すると「ActiveXコンポーネントがオブジェクトを作成できません」のようなダイアログが出てきます。
(スミマセン、そのマシンが今無くて正確なメッセージを記述できません・・・)
関係ないとは思いますが、このWinNTはOSとSP6をインストールしただけの状態です。

余計なコードは省いています・・・
------------------------------------------------------------------------------
Option Explicit

' ファイルをコピーしたい場所
Const INSTALL_PATH = "d:\********"

Sub Main()
    Dim fso As New FileSystemObject
    Dim backupFolderName
    Dim fo As Folder
    Dim fls As Files
    
    ' コピーしたいディレクトリが存在するか?
    If Not fso.FolderExists(INSTALL_PATH) Then
    	' 存在しないのでディレクトリを作成してコピーして終了
        fso.CreateFolder INSTALL_PATH
        Call CopyFile
        Exit Sub
    Else
    	' ディレクトリが存在する場合その配下にファイルが存在したら、そのファイル郡を退避
        Set fo = fso.GetFolder(INSTALL_PATH)
        Set fls = fo.Files
        If fls.Count <> 0 Then
            fso.MoveFile INSTALL_PATH & "\*.*", "C:\aaaa\"
        End If
              
        ' コピー
        Call CopyFile
        
    End If
    
End Sub


Private Sub CopySecuritySystem()
    Dim fso As New FileSystemObject
    
    
    ' コピーしたいファイルは実行ファイルと同じ階層のディレクトリ「copy_file」にあります。
    fso.CopyFolder App.Path & "\copy_file", INSTALL_PATH
    
    
End Sub
------------------------------------------------------------------------------
#6478-1
RE#6476:OSの違いで動かない?
> 開発環境は、Win2K・VisualStudio6.0 です。
> 下記のコードのように、こちらが指定したファイルを、指定したディレクトリにコピーする
> ようなプログラムを組み、実行ファイルを作成しました。
> これを WinNT4.0(SP6)環境で実行すると「ActiveXコンポーネントがオブジェクトを作成
> できません」のようなダイアログが出てきます。
> 関係ないとは思いますが、このWinNTはOSとSP6をインストールしただけの状態です。

エラーメッセージから見て分かることですが、つまりはオブジェクトが作成できない訳です。
で、作成しているオブジェクトは何かというと、FileSystemObject。

FileSystemObject は、WindowsScriptingHost(WSH) が導入されている環境でないと使えま
せん。 InternetExplorer(IE) 4.0 以上をインストールすれば入ります。
Microsoft 社のホームページから、ダウンロードして、別途インストールすることも可能です。
http://www.microsoft.com/japan/developer/scripting/
#6496-1
RE#6478:OSの違いで動かない?
> > 開発環境は、Win2K・VisualStudio6.0 です。
> > 下記のコードのように、こちらが指定したファイルを、指定したディレクトリにコピーする
> > ようなプログラムを組み、実行ファイルを作成しました。
> > これを WinNT4.0(SP6)環境で実行すると「ActiveXコンポーネントがオブジェクトを作成
> > できません」のようなダイアログが出てきます。
> > 関係ないとは思いますが、このWinNTはOSとSP6をインストールしただけの状態です。
> 
> エラーメッセージから見て分かることですが、つまりはオブジェクトが作成できない訳です。
> で、作成しているオブジェクトは何かというと、FileSystemObject。
> 
> FileSystemObject は、WindowsScriptingHost(WSH) が導入されている環境でないと使えま
> せん。 InternetExplorer(IE) 4.0 以上をインストールすれば入ります。
> Microsoft 社のホームページから、ダウンロードして、別途インストールすることも可能です。
> http://www.microsoft.com/japan/developer/scripting/

ありがとうございます。
今、気付いたんですがWinNT環境にSP6をあてたから(?)か、InternetExplorerは5.5になってました。
IEを個別にバージョンアップしたんではないので、IE4以上だけどダメなんですかね・・・
結構特殊な使用法をするためWSHもIEの個別VerUPは望めそうにないですね。
考え方を変えてFileSystemObjectを使用しなければいいのか?
#6498-1
RE#6476:OSの違いで動かない?
> 「ActiveXコンポーネントがオブジェクトを作成できません」
配布先に SCRRUN.DLL のバージョンが異なる場合や、そもそもファイルが無い場合に、
上記のエラーが発生します。

SCRRUN.DLL のバージョンに違いがないか、確認してみてください。

# SCRRUN.DLL自体は再頒布可能ですが、SCRRUN.DEPの記述に問題がある場合や、
# System File Protectionが原因でインストールされなかったなどの原因により、
# バージョン問題が発生する可能性があります。


>     Dim fso As New FileSystemObject
相手先の SCRRUN.DLL のバージョンが分からない場合は、
参照設定せずに、レイトバインドでの実行をおすすめします。


とはいえ、開発時は参照設定をしておいた方が、VBのヒント機能(IntelliSense)が
使えるので、コーディングが楽になりますよね。

私の場合は、#Ifディレクティブを利用して、
アーリーバインド/レイトバインドの切り替えの手間を減らしています。

具体的には、

#If USE_SCRIPTING_LIBRARY = 0 Then
   Dim FSO As Object
#Else
   Dim FSO As Scripting.FileSystemObject
#End If
   Set FSO = CreateObject("Scripting.FileSystemObject")

のようにコーディングしています。

開発時は、参照設定をした上で、プロジェクトのプロパティの
『条件付きコンパイル定数』の項に、『USE_SCRIPTING_LIBRARY = 1』と
記述する事で、『As Scripting.FileSystemObject』の方が有効になります。

配布用EXE作成時は、参照設定を外した上で、『条件付きコンパイル定数』の
記述を削除しておけば、『As Object』の方が有効になります。
このページと関連する記事:
#14067-0違う名前でのファイルのコピー2001-01-24(水) 09:00
#4179-0RE#4176:他マシンで動かしたときの文字化けについて1999-12-08(水) 19:17
#20059-0特定の拡張子のファイルのみコピーする方法2002-03-06(水) 09:30
#44463-0フォルダのコピー2001-06-26(火) 14:09
#20322-0sfc.dllがありません。2001-04-16(月) 20:32
#7399-0テキストファイル読み込みのオブジェクトでActiveXエラーが・・・2000-02-07(月) 18:41
#3057-0ActiveXについて・・・1999-08-11(水) 14:53
#1070-2環境の違いでの動作の違い。2001-11-06(火) 05:09
#6657-0RE#6656:DLLファイルの認識方法について2000-03-13(月) 21:31
#15303-0エラーの回避について2001-03-27(火) 13:29
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)