Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Excel 2010)
右クリックで強制終了
投稿日時: 20/06/05 09:16:56
投稿者: FILETUBE

おはようございます。
1つ教えて下さい。
 
Sub ボタン1_Click()
    
     Const adOpenKeyset = 1
     Const adLockReadOnly = 1
  
     Dim cn As Object
     Dim rs As Object
     Dim strSQL As String
     
     Set cn = CreateObject("ADODB.Connection")
     Set rs = CreateObject("ADODB.Recordset")
     cn.Provider = "Microsoft.ACE.OLEDB.12.0"
     cn.Properties("Extended Properties") = "Excel 12.0;HDR=YES;IMEX=1"
     cn.Open "C:\test\UAG.xlsx"
     '****************
     strSQL = "SELECT 品番,カラー,SUM(数量) AS GSUR FROM [Sheet1$A:W" & Sheets(1).Rows.Count & "] "
     strSQL = strSQL & "GROUP BY 品番,カラー"
     '****************
     rs.Open strSQL, cn, adOpenKeyset, adLockReadOnly
     'データを出力する
     Range("A2").Offset(0, 0).CopyFromRecordset rs
     '後処理
     rs.Close
     cn.Close
     Set rs = Nothing: Set cn = Nothing
    
End Sub
 
上記はWin8.1 Pro + Excel2007で作成したSYUKEI.xlsmです。
 
これをWin10 + Excel2010のPCにコピーして実行すると
データは集計して表示されるのですが
左クリックで範囲を選択して右クリックでコピーを選択したいのですが
右クリックするとExcelが終了してしまいます。
 
Win8.1 Pro + Excel2007では問題なく右クリックしてコピー、別ブックに
貼り付けが出来ます。
 
他のWin8.1 Pro + Excel2007のxlsmをWin10 + Excel2010にコピーしても
問題なくコピー、貼り付けが出来ます。
 
右クリックをするとExcelが強制終了してしまわない対策は何かありますか。
 
分かる方おられましたら、宜しくお願いします。

投稿日時: 20/06/05 10:15:18
投稿者: FILETUBE

 追記になります。
集計ボタンをクリックする前の状態では右クリックはできます。
 
Const adOpenKeyset = 1
Const adLockReadOnly = 1
 
集計した後に右クリックできないとなると
この辺りでしょうか。

回答
投稿日時: 20/06/05 23:10:11
投稿者: WinArrow
投稿者のウェブサイトに移動

状況がよくわからないのですが、
 
掲示のコードと
セル範囲を選択後の右クリックとの関係は?
 
 

回答
投稿日時: 20/06/05 23:17:39
投稿者: WinArrow
投稿者のウェブサイトに移動

集計
とは、掲示のコードを実行することですか?
 
その時、対象としているブックは、開いている自ブック?
で書き込みも自ブック?

投稿日時: 20/06/06 10:09:46
投稿者: FILETUBE

WinArrowさん毎回回答ありがとうございます。
集計とは掲示のコードを実行するボタンの名称になります。
UAG.xlsxという別のブックをSQL文を実行して
集計結果を表示する事になります。
 
集計する前は右クリックできるのですが
集計して結果をCopyFromRecordsetで表示させると
右クリックができないのです。
右クリックすると何も表示されず
そのままExcelが終了してしまいます。
 
CopyFromRecordsetで表示させる他のものも同様です。
 
Win8.1 + Excel2007 では問題ありません。
なんとかExcel2010 で右クリックしてコピーができるように
したいのです。
 
ADOのカーソルタイプ、ロックの値を変えてやってみましたがダメでした。
 
対処方法がありましたら、よろしくお願いします。

投稿日時: 20/06/09 23:39:53
投稿者: FILETUBE

 追記になります。
範囲を指定しなくても、データをCopyFromRecordsetで表示したら
右クリックができないのです。
 
何か対処方法はありますか?
よろしくお願いします。

投稿日時: 20/06/10 14:41:07
投稿者: FILETUBE

何度も申し訳ありません。
 
CopyFromRecordsetをコメントにして ''Range("A2").Offset(0, 0).CopyFromRecordset rs
 
Range("A2").Value = "aa" と直接値をセットしても駄目です。
 
' cn.Provider = "Microsoft.ACE.OLEDB.12.0"
' cn.Properties("Extended Properties") = "Excel 12.0;HDR=YES;IMEX=1"
' cn.Open "C:\test\UAG.xlsx"
コメントにして直接値をセットすれば右クリックが出来ました。
 
Excel 12.0、ACE.OLEDB.12.0が違うのでしょうか?
 
このような経験ないでしょうか。
 
対応策がありましたら、教えて頂けないでしょうか。
宜しくお願いします。
 

投稿日時: 20/06/22 11:07:35
投稿者: FILETUBE

こんにちは。
もう一度内容をまとめ、投稿させて頂きます。
 
なぜ右クリックするとExcelが終了してしまうのでしょうか。
 
まず表示させたい元のデータです。
 
C:\test\UAG.xlsx
 
品番 カラー 数量
A BUL 4
B RED 5
 
 
そして別のBook.xlsからボタンをクリックし
UAG.xlsxの内容を表示させます。
 
表示した結果を別ブックにコピーしたいので
範囲を選択し右クリックすると途端に終了してしまいます。
 
開発したWin8.1+Excel2007では問題ありません。
Win10+Excel2010にコピーして実行すると終了してしまい
コピーができません。
 
'***********************************************************************************
Sub ボタン1_Click()
 
    Dim cn As New ADODB.Connection
    Dim rs As New ADODB.Recordset
    Dim EXProperties As String
    Dim constr As String
    Dim DBFile As String
    Dim strSQL As String
    DBFile = "C:\test\UAG.xlsx"
    EXProperties = """Excel 12.0;HDR=Yes;IMEX=1;Readonly=False"""
 
    constr = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
             "Data Source=" & DBFile & ";Extended Properties=" & EXProperties
    cn.ConnectionString = constr
    cn.Open
    '****************
    strSQL = "SELECT 品番,カラー,数量 FROM [Sheet1$A:C" & Sheets(1).Rows.Count & "] "
    '****************
    rs.Source = strSQL
    rs.ActiveConnection = cn
    rs.Open
    Range("A2").Offset(0, 0).CopyFromRecordset rs
    '後処理
    cn.Close
    Set cn = Nothing
    Set rs = Nothing
    CommandBars("Cell").Enabled = True
    Application.ShowMenuFloaties = False
End Sub
'***********************************************************************************
 
CommandBars("Cell").Enabled = True
Application.ShowMenuFloaties = False
を追加してみましたがやはり終了してしまいます。
 
cn.Openを無しに Range("A2").Value = "AA"とすると
Excel2010でも右クリックができます。
 
何か対応策が分かる方がおられましたら
教えて頂けないでしょうか。
 
宜しくお願いします。

回答
投稿日時: 20/06/24 16:59:20
投稿者: WinArrow
投稿者のウェブサイトに移動

データ側のブックは、Xlsx
取込み側のブックは、xls
 
という説明がありました。
 
SQL文の指定
>[Sheet1$A:C" & Sheets(1).Rows.Count & "] "
 
の疑問
(1)範囲指定の仕方について
結果艇に $A:C1048576
となるが、これで問題ないのかな?
 
xlsxとxlsの行数の違いが影響していませんか?
 
  

投稿日時: 20/06/29 13:45:22
投稿者: FILETUBE

 返答遅くなり申し訳ありません。
 
@ strSQL = "SELECT 品番,カラー,数量 FROM [Sheet1$A:C100] "
 と修正し実行しても終了してしまいます。
 
Aデータ側のブックを、xls 取込み側のブックも、xlsとしても終了してしまう。
  またデータ側のブックを、xls 取込み側のブックを、xlsmとしても終了してしまう。
 
どうして右クリックすると終了してしまうのでしょうか?
不思議です。
 

回答
投稿日時: 20/06/29 14:54:42
投稿者: WinArrow
投稿者のウェブサイトに移動

FILETUBE さんの引用:
返答遅くなり申し訳ありません。
 
@ strSQL = "SELECT 品番,カラー,数量 FROM [Sheet1$A:C100] "
 と修正し実行しても終了してしまいます。

行の値を変更するようにアドバイスしたのではありません。
 
$A:C100
という指定は、セルの範囲としては、おかしいではないですか?
ということです。
 
なぜ,、範囲の開始が「列」($A)で、終了がセル(C100)なんですか?
 
範囲の開始が列ならば、終了も列
範囲の開始がセルならば、終了もセル
となるのではないかと思います。
 

投稿日時: 20/06/29 15:46:47
投稿者: FILETUBE

 なるほど、そういうことですか。
 
strSQL = "SELECT 品番,カラー,数量 FROM [Sheet1$A:C] "
 
と修正して実行しましたが、やはりWin10+Exce2010のパソコンで実行すると
右クリックした途端に終了してしまいます。
 

回答
投稿日時: 20/06/29 17:01:48
投稿者: WinArrow
投稿者のウェブサイトに移動

>[Sheet1$A:C]
列の範囲ではなく
セルの範囲指定はテストしてみましたか?
 
 
再掲
 
xlsxとxlsの行数の違いが影響していませんか?
 
取り込む側のブックの拡張子:xls、
取り込まれる側のブックの拡張子:xlsx
取込む側のブックの行数が少ないわけなので、問題があるかもしれません。
 

投稿日時: 20/07/01 00:06:06
投稿者: FILETUBE

回答ありがとうございます。
 
xls どうしのテストはしてみましたが、ダメでした。
セル指定の範囲はテストしていません。
 
右クリックで何故か終了してしまうのはこの辺りの理由でしょうか。

回答
投稿日時: 20/07/01 07:05:05
投稿者: WinArrow
投稿者のウェブサイトに移動

掲示のコードをこちらでもテストしてみました。
 
環境は、
Windows10
Office2019
 
正常に処理が終了しました。
コードの問題では、なさそうです。
 
別の環境のPC(Windows10 Excel2010)がありましたら、
実行してみてください。

回答
投稿日時: 20/07/01 08:42:53
投稿者: WinArrow
投稿者のウェブサイトに移動

↓のWEBページも参考にしてみてください
 
https://dot1.tv/excel2010_down/

投稿日時: 20/07/02 09:48:04
投稿者: FILETUBE

回答ありがとうございます。
 
Win8.1+Excel2007で
ADODB.Connection
ADODB.Recordsetを含んだVBAを作成し
Win10+Excel2010のPCにコピーして実行すると
右クリックした途端に終了してしまいます。
 
Win10+Excel2010で他のExcel作業では問題ありません。
 
更新プログラムでしょうか、Win10+Excel2010のPCは
他の人のものなので、更新プログラムを実行するのを
どうしようかと思いまして。

回答
投稿日時: 20/07/02 13:25:39
投稿者: WinArrow
投稿者のウェブサイトに移動

更新プログラムに不具合があるか?
確認してから、持ち主に相談して下さい。
掲示板に相談されても回答はつかないと思いますよ

投稿日時: 20/07/06 08:27:34
投稿者: FILETUBE

いろいろとありがとうございました。
 
今回の件は諦めます。