プロが教える店舗&オフィスのセキュリティ対策術

VB6.0で次のようなコーディングをしています。

Dim FNmDic As Variant
Dim HelpFile As File

Set FNmDic = CreateObject("Scripting.Dictionary")
FNmDic.Add Left(HelpFile.Name, 3), HelpFile.Path

このFNmDic.Addに2秒もかかってしまいます。

HelpFileは、先頭3文字が数字のファイルを指しており、キーの役目をしています。
HelpFileがローカルにあるファイルをさしている場合は、遅くないのですが、
ほかの端末の共有フォルダにあるファイルを指すとAddが遅いです。
また、この現象はエンドユーザの環境で発生し、私の開発環境では発生していません。

Addを1秒以下にしたいのですが、何か解決の糸口はあるでしょうか?

A 回答 (2件)

「Dim HelpFile As File」 が FileSystemObject の File であるなら Microsoft Scripting Runtime への参照設定がされていると思うので


Dim FNmDic As Variant
Set FNmDic = CreateObject("Scripting.Dictionary")

Dim FNmDic As Scripting.Dictionary
Set FNmDic = New Scripting.Dictionary
とすることができる。

ここからが本題。
FNmDic.Add Left(HelpFile.Name, 3), HelpFile.Path
この 1行に時間が掛かっているとして、それが Scripting.Dictionary のせい (FNmDic.Add) なのか、Scripting.File のせい (HelpFile.Name や HelpFile.Path) のせいなのか、それとも両者をこの書き方にすると遅くなるのか、切り分けてみたらよいともいます。

Dim fso As Scripting.FileSystemObject
Set fso = New Scripting.FileSystemObject

Dim HelpFile As Scripting.File
Set HelpFile = fso.GetFile("ファイル パスの文字列")

Dim hKey As String
Dim hValue As String
hKey = Left(HelpFile.Name, 3)
hValue = HelpFile.Path

Dim FNmDic As Scripting.Dictionary
Set FNmDic = New Scripting.Dictionary
FNmDic.Add hKey, hValue

Add への引数に File オブジェクトを使わないようにしてみた。
hKey や hValue に値を入れる箇所が遅くなるのか、相変わらず Add が遅いのかが分かると思う。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。お礼が遅れ、申し訳ありません。

おっしゃる通り、根本的に何が(どこが)原因なのか切り分ける必要がありますね。
いろいろ確認してみたいと思います。ソース、参考にさせていただきます。
ありがとうございました。

お礼日時:2014/09/05 09:24

OS や IE のバージョンにも依存するかもしれませんが


http://windows.microsoft.com/ja-JP/windows-vista …

イントラネット セキュリティを使用するために、Internet Explorer で何か設定を行う必要がありますか。
で改善したことはあります。
あなたと他者の OS や IE のバージョンとそのセキュリティ設定あたりから
調べ始める必要があるかもです。
ご参考まで。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。お礼が遅れ、申し訳ありません。

セキュリティあたりも怪しいですね。
確認したいと思います。
ありがとうございました。

お礼日時:2014/09/05 09:25

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