教えて! goo のコンテンツに対する取り組みについて

PasteSpecialが実行エラーとなってしまいます

エラー番号:80010108(16進)
エラー内容:'PasteSpecial' メソッドは失敗しました: 'Range' オブジェクト
発生条件:クリップボードを監視しているソフトを常駐していると発生する

情報不足であれば補足します

gooドクター

A 回答 (3件)

#1です。



しつこいようですが、切り貼りのコードでは不具合の有無すら検証出来ませんし、何をされたいのかも解かりません。

かなりVBAの知識がおありのようで、私などの出る幕では無いようです。
レスはこれで最後にしようと思いますが、参考まで。

失敗の原因とクリップボード監視ソフトの因果関係は検証出来ないので解かりませんが、個人的な印象としては、何らかの原因で iniFaileSetPositionSheet を見失う事があり、それが原因で失敗しているように感じます。
iniFaileSetPositionSheet を Workbook.Worksheet.Range のように明示的にブックから指定してみるとか。。。

最後に、CSVをタブ区切りに変えてセルの書式が標準のシートに、クリップボードを使ってコピー&ペーストするのと、単純に開くのと、どんな違いがあるのか私には解かりませんでした。

Sub Test()
Dim wb As Workbook, fName As String
 fName = "C:\aaa.csv"
 Set wb = Workbooks.Open(fName)
 wb.Worksheets(1).UsedRange.Copy
End Sub
    • good
    • 0
この回答へのお礼

お礼が遅くなってすみません

1秒WAITさせたら、エラーがでなくなりました
とりあえずこれで行きます
でも 原因が不明なんです。。。。

Application.Wait (Now() + TimeValue("00:00:01"))
iniFaileSetPositionSheet.Range("A2").PasteSpecial

お礼日時:2004/04/23 16:24

#1です。



動作しない形でコードを提示されても、検証出来ません。
myTextData ? iniFaileSetPositionSheet ?

省略するにしても最低限の動作はするコードで、この場合はOKで、この場合はダメなどの状況説明が無いと辛いです。

不明な部分を独自に補正&加工して下記のようにし、常駐秀丸でクリップボード監視をさせながら試しましたが別に問題なかったです。(Windows2000 + Excel2000とWindows95 + Excel97)

'********************************************************************
Private Sub Workbook_Open()
Dim myInt As Integer
Randomize
myInt = Int((100 * Rnd) + 1)  'コピー用データをランダムに作るだけ
If iniFileSet(ThisWorkbook.Worksheets(1), Str(myInt)) Then
  MsgBox Str(myInt) & " を " & _
     ThisWorkbook.Worksheets(1).Name & _
     " の A2 に貼付けました。", vbInformation
End If
End Sub

'********************************************************************
Public Function iniFileSet(ws As Worksheet, s As String) As Boolean
On Error GoTo ER:
  iniFileSet = False
  Set MyDataObject = New DataObject
  MyDataObject.SetText s
  MyDataObject.PutInClipboard
  ws.Range("A2").PasteSpecial
  iniFileSet = True
  Exit Function
ER:
End Function

'********************************************************************

もとのコードはクリップボード監視ソフトが常駐していなければ問題なく動くんでしょうか?

この回答への補足

>myTextData

Dim myTextData As String
Set myFso = New Scripting.FileSystemObject
Set myTst = myFso.OpenTextFile(faileNeme)
With myTst
Do While .AtEndOfStream = False
myTextData = myTextData & Replace(.ReadLine, ",", vbTab) & vbCrLf
Loop
End With

CSVファイルを読み込み、','をTABコードに変換しています


>iniFaileSetPositionSheet
すべてのセルの書式が標準の空のシート
(読み込んだCSVを書き込みシート)

>もとのコードはクリップボード監視ソフトが常駐していなければ問題なく動くんでしょうか?
はい 問題なく動きます

補足日時:2004/03/12 10:35
    • good
    • 0

これだけで的確な回答を出来る人がいるでしょうか?



実際に見ているのと違い、文章だけでのやり取りですので、

Excelのバージョン
具体的なコード
プロシージャを呼び出している状態(シートに置いたCommandButtonから実行など)
クリップボード監視ソフトの名前
ブックやシートの状態  etc

可能な限り具体的に提示された方が回答が得られやすいと思います。

この回答への補足

Excelのバージョン:2000,2002 両方で発生
具体的なコード:

Private Sub Workbook_Open()

~略~
iniFaileSet
~略~

End Sub

Public Function iniFaileSet() As Boolean

~略~
Set myDataObject = New DataObject
myDataObject.SetText myTextData
myDataObject.PutInClipboard
iniFaileSetPositionSheet.Range("A2").PasteSpecial
~略~

End Function

クリップボード監視ソフトの名前 :なんでもいいです
たとえば 秀丸

補足日時:2004/03/11 10:50
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

人気Q&Aランキング