0

2つの異なるブックのExcelスプレッドシートの最初の列にあるタグ番号に基づいて特定のデータを比較しようとしているスクリプトがあります。最初のブックにアクセスしようとすると、うまく機能し、次のコマンドを使用してセル内のデータに正しくアクセスできます。

s_WS_string = Workbooks(s_WS_Filename).Sheets(s_WS_SheetName).Range(s_WS_col & s_WS_row).Value 

ここs_WS_colで、およびs_WS_rowはVBAスクリプトで定義された文字列です。このコマンドはデータを正常に取得します。でも、

OURS_string = Workbooks("OURS.xlsx").Sheets("Sheet1").Range(s_OURS_col & s_OURS_row).Value

ではない。s_OURS_col両方ともs_OURS_row文字列です。WSワークシートを表します。これは、静的シートと比較される可変ワークOURS.xlsxシートです。

これらは両方ともまったく同じコマンドであり、まったく同じタイプのパラメーターが渡されますが、一方はセルからデータを取得し、もう一方は取得しません。結局のところ、アップロードのために別の環境で複製しているところです。

2つの文字列は互いに比較され、一致しない場合は、連結されて複製されたワークシートに出力されます。私の出力と私自身のデバッグに基づいて、最初のスプレッドシートで値が見つかることがわかりましたが、静的なスプレッドシートOURS.xlsxでは、まったく同じデータを含むセルにアクセスしても、空のままになるため、空のままになります。一致しないと見なされます。

他の誰かがこの問題を見たことがありますか?

編集1:いくつかの問題を明確にしました。

編集2:この方法でアクセスするには、両方のブックを開く必要があることを理解しています。スクリプトの実行中に両方を開くことを保証します。

編集3:値にアクセスするための引数を渡すところまでスクリプトをステップスルーしました。渡された両方のセルの値を確認しましたが、一致していますが、一方がブックから正しくプルされていません。

4

1 に答える 1

0

変数の少なくとも1つに何か問題があるはずです。Book1とBook2の2つのワークブックを使用してケースを再作成し、それぞれのSheet1のセルA1に値を追加しました。コードは正常に実行されます。

Sub TestCellValueFromWBs()
    Dim s_WS_string, Ours_string As String
    s_WS_string = Workbooks("Book1").Sheets("Sheet1").Range("a1").Value
    MsgBox s_WS_string

    Ours_string = Workbooks("Book2").Sheets("Sheet1").Range("a1").Value
    MsgBox Ours_string
End Sub

コードにステップインし(F8)、変数の値をチェックして、それらが正しいオブジェクトを指していることを確認します。

于 2012-05-11T16:31:22.750 に答える