問題タブ [fso]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
vbscript - 「ファイルが存在しません」と「アクセスが拒否されました」を区別する
VBScript で、ファイルが存在するかどうかを知りたい:
私のファイルは内部ネットワークにあります。
区別する方法はありますか:
- ファイルは実際には存在しません
- アクセスが拒否されました
試してみましfso.OpenTextFileたが、これら 2 つのケースの結果は常にErr.Number= 5 です。
arrays - FSOで作業するときにテキストファイルのみを開くようにする方法はありますか - VBA
現在、FSO を使用する作業スクリプトがありますが、作業ディレクトリ内の.xlsm ファイルも開きます。.txt ファイルのみを開きたいです。
動作するはずのこのコードを見つけましたが、自分の状況に適用する方法がわかりません:
私のコード(動作しますが、.xlsmファイルも開きます。これは望ましくありません):
excel - VBA文字列内の別のオブジェクトで1つのオブジェクトをトリムします(FSO.Getfolder関連)基本的にファイルへの相対パスになります
このファイルのインデックスをディレクトリに作成しています。列 1 にフォルダー名、列 2 にファイル名
実際のファイル名を取得し、ファイル名をハイパーリンクすることができました。しかし、サブフォルダーを含む相対パスを使用して、ファイルへのパスを列 1 にリストするのに問題があります。
次のフォルダがあるとします: "C:\users\ME\Documents" そのフォルダ内には多くのサブフォルダがあります。
私が達成したいのは、その実際のサブフォルダーへのパスをリストする文字列です。例:
私が言ったように、私は列2を制御しています。
私がすでに使用しているスクリプトは
私はそれが変化することを理解しました
Cells(i + ROW_FIRST - 1, 1) = objFolder.Name
intoCells(i + ROW_FIRST - 1, 1) = objFSO.Getfolder(".")は、最初の文字列から削除したかったものを正確に返しました!
したがって、基本的には次のようなスクリプトを書きたいと思います。
Cells(i + ROW_FIRST - 1, 1) = objFolder.Name - objFSO.Getfolder(".")
しかし、そのコマンドは明らかに機能しないため、助けが必要です。
これにはまったく異なるアプローチがあるかもしれませんが、私のマクロには既に多くのコードがあるため、Trim または Replace などを使用するのが最も簡単でしょうか?
編集: 「GetAllFolders」という名前のスクリプトにも関数があります。たぶん、私が望む文字列を実装するために何らかの方法でそれを呼び出すことができますか?
file - VBscript WMI はファイルを検索せず、FSO は検索します
にweblogic.jarとweblogic.policyの2 つのファイルがありますC:\Weblogic\wlserver\server\lib。最初の方法では、スクリプトはそれらを見つけて、ファイルの名前を表示します。
で WMI を使用しようとするとCIM_DataFile、スクリプトは同じフォルダー内にファイルを見つけられません (ただし、他のフォルダーにはいくつかのファイルが見つかります)。
私は Windows Server 2012 R2 を使用しており、スクリプトを管理者として実行しています。フォルダーC:\Weblogicには管理者権限が必要です。
WMI 権限の問題でしょうか。誰かがすでにこの問題を抱えていますか?解決策は何ですか?
編集:
ご回答有難うございます。
残念ながら、それはうまくいきません。同じ結果が得られます。同じスクリプトで 2 メソッドを実行します。デスクトップに weblogic.jar、weblogic.policy などのテスト ファイルを作成しようとしましたが、WMI でそれらが見つかりません。
このサーバーで WMI が正しく機能しなくなったのではないでしょうか?
これは私のスクリプトです:
結果は次のとおりです。
フォルダー内の WMI で weblogic ファイルを取得できません: "C:\Weblogic\wlserver\server\lib\" "C:...\Desktop\"
vbscript - VBScript で未定義の変数 "file"
ディレクトリ内のすべてのファイルに書き込むことになっている次の VBScript コードがあります。
しかし、Windows Script Host は不平を言い続け、「file」という名前の未定義の変数があることを教えてくれます。エラーは 7 行目で発生します。このエラーが発生する理由がわかりません。助けていただければ幸いです。
excel - 長いパス (260 以上) を持つファイルにアクセスする
Microsoft Scripting Runtime (FSO) を使用してフォルダーを解析し、そのすべてのコンテンツのリストを生成しています。フォルダーはネットワーク上にあり、結果のパスは 260 より長くなります。私が持っている最小コードは次のとおりです:-
あるレベルのStrFolder長さで 259 になり、Set RootFldr ...フォルダー行は機能しましたが、おそらくコンテンツが原因でパスが 260 の制限に違反したため、For Each Fl In RootFldr.Filesのエラーが発生しました。76: Path not found
Windows エクスプローラーで見ると、フォルダー内にファイルがありました。結果をワークブックに出力しているため、このコードのホストとして Excel を使用しています。
私の質問とその背景を明確にするために、ネットワーク パスの深さが 260 文字を超えるファイルにアクセスするには、FSO (存在する場合は代替案が表示されることを嬉しく思います) を使用する必要があります。私が持っているツールは、フォルダー パスとファイル パス、名前、作成および変更されたサイズを取得するため、FSO として必要です。
vba - Excel VBA +ファイルベース名(または類似)を指定して完全なファイル名のリストを生成
ファイル システム (通常はドライブ) で完全に定義されたファイル パスを検索する必要がありますが、ファイル名の一部のみが与えられます。
フラグメントは実際にはパーツのパーツ番号であり、検索するファイルはすべて「.idw」タイプです。さらに、並べ替えに役立つ一連の名前が付けられています。つまり、1XX-XXXX.idw、2XX-XXX.idw です。
50,000 以上のファイルがあり、FileScriptingObject を使用して各フォルダーを再帰的に読み取り、それらを比較すると、検索ごとに 2 分ほどかかります。
(部品番号のリストが与えられた場合、Excel の列に完全なファイル名を入力する必要があります)
これを行う最善の方法は、探しているすべての idw ファイルのインデックス付きリストを生成し、完全なファイル文字列をベース名のみに減らし、それをキーとして使用することだと思います。ただし、実行ごとにこの辞書/コレクション/リストを何度も使用すると仮定すると、各検索の開始時にタイムリーな実行が必要になります。
辞書を外部ファイルに保存する方法はありますか? そのため、インデックス付きリストを 1 日に 1 回またはそれよりもはるかに少ない頻度で生成できますか?
そうでなければ、私が考えもしなかった VBA でこれを行うためのより良い方法はありますか?