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

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

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

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

Q&A

解決済

1回答

1302閲覧

VBSでコンパイルエラー発生

cerophan

総合スコア15

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

0グッド

0クリップ

投稿2023/02/13 08:41

編集2023/02/13 08:49

実現したいこと

VBAで動いていたコードをVBSに移行するのに悩んでいます。
下記のコード、Likeが使えなくてRegExpを利用したところですが
そもそも下記の「ReDim Preserve tmp(1 To i)の行で
コンパイルエラーが出ます
具体的には「)がありません」とのこと
下記以外の場所にも怪しいところはなさそうで
該当の行を外すとエラーは消えます

発生している問題・エラーメッセージ

')'がありません。 800A03EE Microsoft VBScript コンパイルエラー

該当のソースコード

vbs

1Dim temp() 2Set regEx = CreateObject("VBScript.RegExp") 3regEx.Pattern = testPattern 4 5For Each test In fso.GetFolder(FolderPath).Files 6 If regEx.Test(test.Name) Then 7 ReDim Preserve tmp(1 To i) 8 Set tmp(i) = f 9 i = i + 1 10 End If 11Next

試したこと

他のエラーはなんとか検索してなおしてきましたが
ここが謎でつまづいています…お助けいただければ幸いです

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

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

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

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

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

guest

回答1

1

ベストアンサー

VBScript では下限値、上限値を指定して配列を宣言できません。
配列のサイズ変更は、新しく配列を用意してコピーするので、配列が大きくなると遅くなります。
大き目の配列を用意し、複数件まとめて拡張するようにしたほうが良いです。

例)

vb

1Option Explicit 2Dim fso, f 3Dim tmp(), count 4Dim i 5Redim tmp(100) 6Set fso = CreateObject("Scripting.FileSystemObject") 7count = 0 8For Each f In fso.GetFolder("C:\").Files 9 count = count + 1 10 If count > Ubound(tmp) Then 11 Redim Preserve tmp(count + 100) 12 End If 13 Set tmp(count) = f 14Next 15For i = 1 To count 16 MsgBox tmp(i).Name 17Next

Scripting.Dictionary を使うのも良いかと思います。

例)

vb

1Option Explicit 2Dim fso, f 3Dim tmp, i 4Set fso = CreateObject("Scripting.FileSystemObject") 5Set tmp = CreateObject("Scripting.Dictionary") 6i = 0 7For Each f In fso.GetFolder("C:\").Files 8 i = i + 1 9 Set tmp(i) = f 10Next 11For i = 1 To tmp.Count 12 MsgBox tmp(i).Name 13Next

投稿2023/02/13 09:58

編集2023/02/13 10:13
KOZ6.0

総合スコア2721

cerophan👍を押しています

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問