0

そのため、特定のフォルダー内のファイルを検索する手段として、ユーザーフォームを使用して回答を渡そうとしています。たとえば、これは私がやりたいことです。

ファイル 1 を選択 _ _

ファイル 2 を選択 _ _

ボタン

テキスト ボックスにファイル パスを入力し、現在のワークブックにデータを読み込む別のマクロにパラメーターとして渡すことができるようにしたいと考えています。しかし、私はこれについてどこにも何も見つけることができません。

誰かがこのようなものの基本的な例を示すことができますか?


素晴らしい。ユーザーフォームからこれを渡す方法にまだ混乱しています。

ので、私は持っています

Private Sub TextBox1_Change()

サブ終了

Private Sub TextBox2_Change()

サブ終了

GetDataFromSelectedFile マクロに渡すことができるグローバル変数として回答を指定するにはどうすればよいですか?


これはユーザーフォームのレイアウトです:

LabelTextBox1 テキストボックス LabelTextBox2 テキストボックス

                   Command Button

ユーザーフォームの下のサブ:

Private Sub CommandButton1_Click() Call ProcessSelectedFile - これは以前に投稿された Call RemoveDups と同じです -
ProcessSelectedFile が実装された後に機能するため、実際には何をするかは問題ではありません End Sub

Private Sub TextBox1_Change() 'ChDrive (sPath) ' 何をしているのか不明だったところです 'ChDir (sPath) 'vOpen_File = Application.GetOpenFilename

サブ終了

Private Sub TextBox2_Change()

サブ終了

基本的に、回答をユーザーフォームに記録してProcessSelectedFileに渡し、コマンドボタンをクリックしてこれら2つのマクロを実行する方法を教えていただければ機能します。

ありがとう

4

2 に答える 2

1

使いやすさのために GetOpenFilename 関数を使用する必要があります。

ChDrive (sPath)
ChDir (sPath)
vOpen_File = Application.GetOpenFilename

さらに、パスの存在を確認する場合は、次のようにします。

If fso.FolderExists(sPath) Then
    msgbox "File exists"
Else
    msgbox "File doesn t exist"
End If

これについては、ライブラリ「Microsoft Scripting Runtime」を参照してください。これにはグローバル変数を使用しないでください。不要です。

于 2012-06-07T13:19:14.320 に答える
1

これにより、正しい方向に向けられるはずです。

c:\killme呼ばれるディレクトリに2つのテストファイルをセットアップしました。両方のファイルのセルに異なる値を入力し、保存して閉じました。workbook1.xlsxworkbook2.xlsxA1Sheet1

3 番目のワークブックでは、モジュールを追加し、以下のコードを追加しました。

Option Explicit

Sub GetDataFromSelectedFile(sFile As String, sPath As String)
    ' Clear sheet before getting data from selected workbook
    ActiveSheet.UsedRange.Clear

    ' Get data from the selected workbook
    With Sheet1.Range("A1")
        .Formula = "= '" & sPath & "[" & sFile & "]Sheet1'!RC"
        .Value = .Value
    End With
End Sub

Sub ProcessSelectedFile()
    Dim SelectedFile As String
    Dim SelectedPath As String

    ' Set SelectedFile to value selected by user
    SelectedPath = "C:\killme\"
    SelectedFile = "workbook2"

    Call GetDataFromSelectedFile(SelectedFile, SelectedPath)
End Sub

パスとファイルを GetDataFromSelectedFile に渡し、現在のワークブックの Sheet1 の範囲 A1 に、選択したファイルの対応するセルが入力されます。

于 2012-06-07T02:23:08.850 に答える