2


1

クリップボードのデータをExcelからコピーしようとしています(例: タブで区切られたテキスト)と辞書のコレクションにそれを解析します。 アイデアは、各行がヘッダーからセル値にマップされる辞書によって表されるということです。 コピーされたデータの最初の行にはヘッダーが含まれています。

クリップボードからテキストを取得するのは簡単です。

DataObjectとしての薄暗いdataObj文字列としての薄暗いclipString dataObj =新しいDataObject dataObj.GetFromClipboard clipString = dataObj.GetText

それから私は入力を行に分割しました:

バリアントとして薄暗いstrRows

strRows = Split(clipString、vbNewLine)

次に、ヘッダーを抽出します。

新しいコレクションとしての薄暗いヘッダー変形としての薄暗いstrCols strCols = Split(strRows(0)、vbTab)

col = LBound(strCols)の場合UBound(strCols) -  1個のヘッダー。AddstrCols(col)

最後に行を抽出します。

セルを暗くする行を暗くする新しいコレクションとして

i = 1の場合UBound(strRows) -  1の場合strCols = Split(strRows(0)、vbTab)Set cells = CreateObject( "Scripting.Dictionary")col = 0の場合UBound(strCols)の場合 -  1セル(列1)、strCols(列)次の行。セルを追加します。

しかし、私はエラーを受けています。 ライン上

headers.Add strCols(col)、col

アクセス時に実行時エラー '12’が返されます:型が一致しません。

*アップデート*は上記の問題を解決しました、提案をありがとう。 今私はライン上でエラーが出ています

cells = CreateObject(Scripting.Dictionary)に設定します。

424:オブジェクトが必要です。

私が間違っていることについてのどんなヒントでも - VBAは本当に私の強みではありません。

*アップデート2 *この問題も修正しました(以下の提案に感謝します)。 コードは動作します。

2 Answer


3


2つ目の問題は、ターゲットクラスの文字列名を指定する必要があるため、実際には

cells = CreateObject( "Scripting.Dictionary")に設定します。


2


colは文字列型でなければならないと思います。

+ headers.Add strCols(col)、cstr(col)+