[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『Excel2000→Excel2016変更による互換性の不具合』(モモンガ)
いつもお世話になってます。
PC変更となり、
以前のExcel2000で作成したマクロをExcel2016で継続して使用したいのですが、
変更に伴い互換性?の不具合で困っております。
動作として簡単に説明すると、
既存のBooK1(Excel2000)の任意データを、新しいBookを作成し貼り付け、
指定条件で抽出表示しています。
仕様として、
フォーム上に、コマンドボックスが4個とコマンドボタンが1個あります。
コマンドボックス1:項目1
コマンドボックス2:条件1
コマンドボックス3:項目2
コマンドボックス4:条件2
コマンドボタン1:表示
コマンドボックスは、貼り付けた後でオートフィルタで抽出する用です。
コードを実行させると、「既にデータがありますが、置き換えますか」
と注意文が表示され、「OK」を押すと、再度同じ注意文が表示され、
再度「OK」を押すと、一応の動作は完了します。
(貼り付け出来てない列有り)
逆に、注意文の時に、「キャンセル」を押すと、
「実行エラー'1004': RangeクラスのTextToColumnsメゾッドが失敗しました。」
とエラー表示され、動作が中断されます。
下記にコード(抜粋)を記載しますが、
どこが悪さをしているのか分かりません。
なんでも良いので、アドバイスお願いします。
Private Sub 抽出_Click()
Dim exiWB As String Dim NewWB As String Dim A As Workbook Dim C As Workbook Dim sh1 As Worksheet Dim sh2 As Worksheet
Set A = ThisWorkbook exiWB = ThisWorkbook.Name Set C = Workbooks.Add(Template:=xlWBATWorksheet) NewWB = ActiveWorkbook.Name ActiveWorkbook.Sheets("Sheet1").Name = "データ"
Set sh1 = Workbooks(exiWB).Worksheets("Sheet2") Set sh2 = Workbooks(NewWB).Worksheets("データ")
With sh2 sh1.Columns("E:G").Copy .Columns("B:D") sh1.Columns("B:C").Copy .Columns("E:F") sh1.Columns("H:I").Copy .Columns("G:H") sh1.Columns("K:L").Copy .Columns("I:J") sh1.Columns("D:D").Copy .Columns("K:K") End With
Windows(exiWB).Activate Worksheets("Sheet2").Activate Application.CutCopyMode = False Worksheets("Sheet2").Activate Worksheets("Sheet2").Range("B65536").End(xlUp).Activate Worksheets("Sheet2").Visible = xlSheetVeryHidden Windows(NewWB).Activate
With Worksheets("データ") Range("B:D,F:F,I:I,O:P,R:S,U:V").NumberFormatLocal = "@" End With
Worksheets("データ").Columns("E:E").ColumnWidth = 30 Worksheets("データ").Columns("F:F").ColumnWidth = 15
Application.CutCopyMode = False Worksheets("データ抽出").Range("A1").Activate ActiveSheet.Range("A:W").AutoFilter Columns("B:B").Select Selection.TextToColumns Destination:=Range("B1"), DataType:=xlDelimited, _ FieldInfo _ :=Array(1, 2)
If ComboBox項目1.Value = "会員" Then If ComboBox条件1.Value = "会員含む" Then Columns("W:W").Select Selection.AutoFilter Field:=23 ・ ・ ・ ・ ・ ・ End If
If Not ComboBox条件2.Value = Empty Then B = ComboBox条件2.Value Windows(NewWB).Activate Sheets("データ").Select Columns("K:K").ColumnWidth = 10 Selection.AutoFilter Field:=n, Criteria1:="=**" & B & "*", Operator:=xlAnd End If Worksheets("データ").Columns("W:W").Select Selection.NumberFormatLocal = ";;;" Worksheets("データ").Range("A2").Activate End Sub
< 使用 Excel:Excel2016、使用 OS:Windows10 >
せっかく、変数にセットしているのだから、
>Set A = ThisWorkbook >Set C = Workbooks.Add(Template:=xlWBATWorksheet) >Set sh1 = Workbooks(exiWB).Worksheets("Sheet2") >Set sh2 = Workbooks(NewWB).Worksheets("データ")
Activateしない書き方に修正してみませんか。
一部できていますが、できていないとことろが多いです。
>Worksheets("Sheet2").Activate
(マナ) 2017/06/17(土) 19:44
>Activateしない書き方に修正してみませんか。
>一部できていますが、できていないとことろが多いです。
すみません。
セルのコピー貼り付けについては、教えて頂いて出来たのですが、
その他のところは分かりませんでした。
ちなみにお伺いしたいのですが、それとエラーとの関係は、
無きにしも非ずな感じでしょうか?
(モモンガ) 2017/06/19(月) 09:21
そもそも、何をしようとしているマクロかわからないのですが、
コードを読み解こうという気になれはかっただけです。
本題のエラーとは関係ないです。
おそらく、エクセルのバージョンとも関係ないです。
「区切り位置」の操作を、手作業で実行してみてください。
同じ結果になると思います。
(マナ) 2017/06/20(火) 19:46
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.