VB6.0でEXCELを扱おうとしています。
元ファイルのある範囲から別ファイルに「値だけ」をコピーしたいのですが
記述方法が良く判りません。
ただのペーストは出来るのですが、どなたかご教授いただけると幸いです。
現在はこんな感じです
gxlSheet1.Range(Cells(10, 1), Cells(57, 17)).Copy '範囲をコピー
xlSheet2.Activate
xlSheet2.Cells(1, 1).Select
xlSheet2.Paste
よろしくお願いします。
PasteSpecialメソッドでしょうか。
.PasteSpecial Paste:=xlValues, Operation:=xlNone,SkipBlanks:=False, Transpose:=False
そういうのは、Excelで「ツール」→「マクロ」→「新しいマクロの記録」
を使って調べるといいですよ。
ありがとうございます。
WEBでサーチするとマクロについては色々載っており、Pastespecialについてもありました。
しかし、このまま記述すると「Paste:=」 の部分が”コンパイルエラー:名前付き引数が見つかりません”になってしまうのです。
なので、VBから扱う場合の記述方法はどうするのが正しいのかと思い、質問させていただいた次第であります。
よろしくお願いします。
VB6ではExcelの参照設定をしないと
xlValues や xlNone がどのような値なのかワカリマセン。
どうしても CreateObject でExcelを扱いたいならば、各定数がいくつなのかを
VB6に教えてあげましょう。
で、xlValues や xlNone がいくつなのかは、Excel VBE の「オブジェクトブラウザ」を開き、
検索してみてください。
見つかると
Const xlValues = -4163 (&HFFFFEFBD)
のような記述が見つかります。
それを、VB6のコードに記述して使ってください。
(xlNoneはご自分で検索してください。)
あ、
> 名前付き引数が見つかりません
の方でした。
よくわからないけど、名前付き引数を使わない方法で書けばよいのでは?
(これも参照設定すれば回避できるかな。)
> WEBでサーチするとマクロについては色々載っており、Pastespecialについてもありました。
WEBよりも、ヘルプで調べた方がいいですよ。
ヘルプによりと、PasteSpecialメソッドは、Rangeオブジェクト用とWorksheetオブジェクト用の
2種類あって、Pasteを引数に持つのはRangeオブジェクト用です。
また、Activateや.Selectは、不要です。
xlSheet2.Cells(1, 1)..PasteSpecial Paste:=xlValues, Operation:=xlNone,SkipBlanks:=False, Transpose:=False
事情により遅くなりましてすみません。
実はまだPastespecialはうまく動作出来ていないのですが、もっと調べてみようと思います。
アドバイスいただきました皆さん、どうもありがとうございました。
ツイート | ![]() |