
クリップボード内容をエクセルのシートに貼り付けることをvbで行おうとしています。
1回目はできるのですが、2回目にはエラーが出てしまいます。(貼り付けるセルを指定したときに)
現状のコードを添付します。おかしなところがわかる方、教えて下さい。
'-------------------------------------------------------
'エクセルを起動させる
'-------------------------------------------------------
Public Sub ExcelProc()
Dim xl2 As Excel.Application
Dim xl2Book As Object
Dim xl2Sheet As Object
Dim ELSFileName As String
'エクセルの起動
Set xl2 = CreateObject("excel.application")
xl2.Visible = True
xl2.Workbooks.Open ("d:\test.xls")
Set xl2Book = xl2.ActiveWorkbook
Set xl2Sheet = xl2Book.Worksheets(1)
'D10にクリップボードの内容を貼り付ける
xl2Sheet.Select
Range("d10").Select
ActiveSheet.Paste
'保存するファイル名を作成
ELSFileName = "c:\test10.xls"
'保存
ChDir "C:\"
ActiveWorkbook.SaveAs FileName:=ELSFileName, FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False
Set xl2Sheet = Nothing
xl2Book.Close True
Set xl2Book = Nothing
xl2.Quit
Set xl2 = Nothing
End Sub
この関数を2度実行させたらエラーになります。
Range("d10").Select 'この箇所でエラーになる。
お願いします。
No.2ベストアンサー
- 回答日時:
以下のように変更してみてください。
Active~を使用するとうまくEXCELが開放されないみたい。
'D10にクリップボードの内容を貼り付ける
xl2Sheet.Range("d10").PasteSpecial
'Range("d10").Select
'ActiveSheet.Paste
'
''保存するファイル名を作成
ELSFileName = "c:\test10.xls"
''保存
ChDir "C:\"
xl2Book.SaveAs FileName:=ELSFileName, FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False
ありがとうございました。
うまくいきました。
ちなみに、クリップボードにはvb上のフォームをコピーしています。
Public Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
sub test
keybd_event &H12, 0, 0, 0 'Altキーを押す
keybd_event &H2C, 0, 0, 0 'PrintScreenキーを押す
keybd_event &H12, 0, &H2, 0 'Altキーを離す
keybd_event &H2C, 0, 0, 0 'PrintScreenキーを離す
DoEvents
end sub
上記コードでフォームをコピーしているのですが、これだけでなく、フォーム内のコントロールのみを抜き出して、クリップボードにコピーすることなどできるのでしょうか?参考に教えて下さい。
多分、新しい質問にもそのうち入れると思いますがわかるようであれば教えて下さい。
No.3
- 回答日時:
横道にそれて済みませんが、VB-->Excelなら
VBでなら
Sub main()
If Clipboard.GetFormat(vbCFText) = True Then
s = Clipboard.GetText
End If
MsgBox s
End Sub
は単独で動きました。
VBAではオブジェクトがないとエラーになりますが。
何か参照設定でもしてVBAでも動きませんでしょうか。
ClipBoardは安定しています。何回使おうと。
ここが小生には判らないのですが。
VBAではコピー・ペースト(特にペースト)は理屈の理解が難しい。
OKWEBの質問439996で苦労しました。
そこのnishi6さんのご回答など参考になりませんでしょうか。外れていたら済みません。
No.1
- 回答日時:
>Range("d10").Select 'この箇所でエラーになる。
貼り付ける対象が見当たらないからでしょうきっと。
ワークブックとシートをそれぞれアクティブにしてあげたらどうでしょうか?
この回答への補足
回答ありがとうございます。
下記のように変更してみました。
'D10にクリップボードの内容を貼り付ける
xl2Book.Activate
xl2Sheet.Activate
xl2Sheet.Select
Range("d10").Select
ActiveSheet.Paste
しかし、結果は変わりませんでした。
補足として、このプロシージャは、コマンドボタンのクリックイベントで実行しています。起動後1回ボタンを押すと正常に動作を行うのですが、2回目ボタンを押すと先ほどの箇所でエラーになります。
いったいどうしてでしょう、原因がわかりません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PIC kit2 エラーについて
-
7-zip22.01(x64)使用時に起きた...
-
VB6のvbModalに関して
-
Winでソフトのシリアル番号を調...
-
バッチスクリプト処理でエラー...
-
メーリングリスト宛てのメール...
-
バッチファイル内置換
-
linuxのsshの反応が非常に遅い。
-
Linux環境変数設定(putenv?se...
-
pkg-config のPKG_CONFIG_PATH...
-
アプリケーションをインストー...
-
バッチファイルで多重起動を防ぐ
-
rshについて
-
OS インストール場所確認
-
フロッピーディスクの読み込み方法
-
Ngraphについて
-
自動釣銭機(富士電機ECS777)の...
-
Apace2のインストールでエラー
-
誰かにサーバにあるデータを消...
-
NERO9のアンインストールについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Basp21を使用してメール送信が...
-
JavaScriptのページが見えたり...
-
エクセルVBA 実行時エラー 5029...
-
Excel IFの限界
-
VBからACCESSのレポートをプレ...
-
dsPICの書き込みエラー
-
ご教授願います PC初心者です。...
-
VBSエラー
-
VB.NET と クリスタルレポート
-
ネットワーク接続を確認する手...
-
Unityのandroid向けCardboard用...
-
Grid Engineのqrsh使用時にpyth...
-
スクリプトエラーが消えません
-
ウェブマスターツールのURL エ...
-
クリップボードの内容をEXCELに...
-
VBAで画像ファイルをダウンロー...
-
VBAのRegExpで後方一致/不一致...
-
PIC kit2 エラーについて
-
Androidエミュレータでレーシン...
-
エラー 印刷になってしまいま...
おすすめ情報