1

VB PasteSpecial に問題があります。
このコードは、Excel VB で完全に機能します (データを含むセルを選択した場合)。

Selection.Copy
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=True
Application.CutCopyMode = False

ただし、データを抽出するサードパーティ ソフトウェア (QlikView) を使用しており、それを Excel ドキュメントにコピーする必要があります。通常のペーストで問題ありませんが、転置する必要があります。

明らかに、ワークブックにはコピーするコンテンツがないため、使用しません

Selection.Copy

しかし、最初にドキュメントから何もコピーしないため (コピー メモリにテーブル データがあっても)、この呼び出しは不正な引数例外を返します (これは、最初にその VERY ワークブックのセルをコピーしてからマクロを呼び出した場合にも発生します)。それを転置するため)。

ランタイム エラー '1004' が返されました。Range クラスの PasteSpecial メソッドが失敗しました。

はい、ドキュメントに貼り付けて、その領域から切り取り、正しい場所に移動して転置することはできますが、それは不適切なコーディングです。

これを経験し、これを機能させる方法を得た人はいますか?

4

2 に答える 2

2

上記の方法を使用する必要があります。これを試すこともできます

Range("A1").Select
ActiveSheet.PasteSpecial Format:="Text", Link:=False, DisplayAsIcon:=False
Application.CutCopyMode = False

ただし、もう一度コピーして転置する必要があります。それ以外の場合は、転置する直接的な方法はありません。

于 2012-04-26T17:44:53.837 に答える
2

PasteSpecial を使用してデータを転置できないのは、データを QlikView からコピーした後にクリップボードに保存されるため、データの形式が原因です。

QlikView テーブル (コピー元であると想定) からデータをコピーすると、HTML、Unicode、および標準 (コード ページ) テキストの 3 つの形式でクリップボードにコピーされます。

QlikView がクリップボードにコピーするさまざまな形式を示すクリップボード ビューアーのスクリーンショット

これを Excel のクリップボード形式と比較すると、次のようになります。

Excel がクリップボードにコピーするさまざまな形式を示すクリップボード ビューアーのスクリーンショット

ご覧のとおり、Excel でデータをコピーすると、データが独自の形式でクリップボードに保存されるため、必要に応じてセルを転置する方法を認識しています。QlikView の場合、クリップボードにはプレーン テキストしか含まれていないため、Excel はこれを転置する方法を認識せず、その結果、PasteSpecial 呼び出しは失敗します。

QlikView のテーブルから Excel にコピーする場合、QlikView の「ピボット テーブル」チャートを使用して、可能であれば QlikView で既に転置を実行することをお勧めします (列と行を自由にドラッグできるため)。それ以外の場合は、Siddharth のコードを使用して、Excel で変換する必要があります。

于 2014-07-07T09:54:19.443 に答える