
Public xlApp As Excel.Application
Public xlBook As Excel.Workbook
Set xlApp = CreateObject("Excel.Application")
'非表示・画面更新無・アラート非表示
xlApp.Visible = False
xlApp.ScreenUpdating = False
xlApp.DisplayAlerts = False
Set xlBook = xlApp.Workbooks.Add
xlBook.SaveAs "test123.xls"
'※ここでエラー
Workbooks("TEST.xls").Sheets("TEST_1").Copy After:=xlApp.Workbooks(xlBook).Sheets(3)
Set xlApp = Nothing
Set xlBook = Nothing
環境:WindowXP SP2,Excel2003 SP3
以上のようにオブジェクト変数のEXCELに対してのシートコピーを行いたいのですが、コンパイルを行うとエラーがなく、実行すると「コンパイルエラー 修正候補:区切り記号 または(」とエラーが発生します。色々書き方を試してみたのですが、どれもうまくいきませんでした。
宜しくお願いします。
No.3ベストアンサー
- 回答日時:
>xlApp.Visible = Falseの場合、この表示さえなく行うことができるので別アプリで行っておりました。
>自アプリ上では、この処理は無理なのでしょうか。
No.1の回答の2の方法で可能ですが、1つ問題があります。
新規のアプリケーションは、ファイルからTEST.xlsを開くため、
未保存のデータは反映されません。
予めTEST.xlsを保存しておく必要があります。
Sub test2()
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set xlApp = CreateObject("Excel.Application")
'非表示・画面更新無・アラート非表示
xlApp.Visible = False
xlApp.ScreenUpdating = False
xlApp.DisplayAlerts = False
Set xlBook = xlApp.Workbooks.Add
Workbooks("TEST.xls").Save '保存する
xlApp.Workbooks.Open Workbooks("TEST.xls").FullName '保存したファイルを開く
xlApp.Workbooks("TEST.xls").Sheets("TEST_1").Copy After:=xlBook.Sheets(3)
xlBook.SaveAs "c:\temp\test123.xls"
xlApp.Quit
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
この回答への補足
今確認したところ、一度test.xlsを閉じた上で、test123.xlsを開けば正常に開くことが分かりました。
test.xlsを開いたままtest123.xlsを起動するとアプリのみ起動してシートが何もない状態になるようです。これはtest123.xlsを閉じて再度開けば正常にはなるのですが・・・
venzou 様
重ね重ねご回答ありがとうございます。
なるほど、コピー元とコピー先を新アプリのほうで扱うんですね。
ちなみにvenzou様のを参考に実行してみたのですが
作成されたtest123.xlsはシートが一個もないBookになってしまいました。
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlClone As Excel.Workbook
Set xlApp = CreateObject("Excel.Application")
'非表示・画面更新中止・アラート表示中止
xlApp.Visible = True
xlApp.ScreenUpdating = False
xlApp.DisplayAlerts = False
Set xlBook = xlApp.Workbooks.Add
Set xlClone = xlApp.Workbooks.Open("test.xls")
xlClone.Worksheets(TEST_1).Copy After:=xlBook.Sheets(3)
xlBook.SaveAs "test123.xls"
xlApp.Quit
この関数が走る前にtest.xlsは変更されないのでセーブはしてません。
またvenzou様が書いたopen文だとエラーになったのでこちらにしました。
No.2
- 回答日時:
>Workbooks("TEST.xls").Sheets("TEST_1").Copy After:=xlApp.Sheets(3)
>Workbooks("TEST.xls").Sheets("TEST_1").Copy After:=xlBook.Sheets(3)
>としたのですが、今度は「Worksheetクラスのcopyメソッドに失敗しました」とエラーが出ました。
このxlAppとxlBookは新規のアプリケーションですよね?
新規のアプリケーションと、TEST.xlsを開いているアプリケーションとは、
別のアプリケーションになります。
アプリケーションが異なるので、コピーは出来ないと思います。
>Workbooks("TEST.xls").Sheets("TEST_1").Copy After:=xlBook.Sheets(3)
__↑TEST.xlsを開いているアプリケーション______↑新規のアプリケーション
-------------------------------------------
No.1の回答の1ですが、
Set xlBook = Workbooks.Add
この部分では、TEST.xlsを開いているアプリケーションと同じ
アプリケーション上にブックを作ります。
Workbooks("TEST.xls").Sheets("TEST_1").Copy After:=xlBook.Sheets(3)
このコピーは同じアプリケーション上でのコピーになります。
こちらの環境(Excel2000)ではエラーは出ませんでした。
-------------------------------------------
>コピーして作成されたBookを開かずにおいていたかったからです。
Application.ScreenUpdating = false
では、ダメなのかな?(^^;
Sub test()
Dim xlBook As Workbook
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set xlBook = Workbooks.Add
Workbooks("TEST.xls").Sheets("TEST_1").Copy After:=xlBook.Sheets(3)
xlBook.SaveAs "c:\temp\test123.xls"
xlBook.Close
Set xlBook = Nothing
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
venzou 様
再度のご回答ありがとうございます。
別アプリの場合は、コピー自体できないのですね。そこからして間違ってました。
venzou様のサンプル通り実行したところ無事作成コピーと行うことができました。ただ一瞬ですがタスクバーに、作成コピーしているBookが表示されてしまいますよね?
xlApp.Visible = Falseの場合、この表示さえなく行うことができるので別アプリで行っておりました。
自アプリ上では、この処理は無理なのでしょうか。
No.1
- 回答日時:
このプログラムは何処で実行される物でしょうか?
1:TEST.xls上で実行されるものでしょうか?
2:それとも、全く別のワークブックやVBなど?
これにより回答が異なります。
--------------------------------------------------------
1の場合、新規のアプリケーションを立ち上げる必要はない。
Set xlBook = Workbooks.Add
Application.DisplayAlerts = False
Workbooks("TEST.xls").Sheets("TEST_1").Copy After:=xlBook.Sheets(3)
xlBook.SaveAs "c:\temp\test123.xls"
xlBook.Close
Set xlBook = Nothing
Application.DisplayAlerts = True
--------------------------------------------------------
2の場合、TEST.xlsを開く必要がある
Set xlApp = CreateObject("Excel.Application")
'非表示・画面更新無・アラート非表示
xlApp.Visible = flse
xlApp.ScreenUpdating = False
xlApp.DisplayAlerts = False
Set xlBook = xlApp.Workbooks.Add
xlApp.Workbooks.Open "c:\temp\TEST.xls" 'ここでファイルを開く
xlApp.Workbooks("TEST.xls").Sheets("TEST_1").Copy After:=xlBook.Sheets(3)
xlBook.SaveAs "c:\temp\test123.xls"
xlApp.Quit
こんな感じでどうでしょう?
venzou様
ご回答ありがとうございます。
実行する場所は1.のTEST.xls自身となっております。
なぜ1.のケースで新規のアプリケーションとしているかと言いますと
コピーして作成されたBookを開かずにおいていたかったからです。
ですからxlApp.visible = falseとしました。
また
Workbooks("TEST.xls").Sheets("TEST_1").Copy After:=xlApp.Sheets(3)
Workbooks("TEST.xls").Sheets("TEST_1").Copy After:=xlBook.Sheets(3)
としたのですが、今度は「Worksheetクラスのcopyメソッドに失敗しました」とエラーが出ました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excelのマクロ ブック間である範囲をコピー Workbooks(“a.xlsx“).Sheets 3 2022/05/12 17:02
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) VBAでファイルを開くプログラムがエラーです 2 2023/02/21 16:56
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/03/25 08:33
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) エラー処理 3 2022/04/11 14:58
- Visual Basic(VBA) DisplayAlertsブロパティで ”実行時エラー424オブジェクトが必要です” 5 2022/05/15 18:02
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) 別ブックからシートのコピー 3 2022/04/01 20:07
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
iPodのアプリについて
-
古くて恐縮ですが・・。
-
ボーダフォンのJAVAってなに
-
MySQLInstanceConfig.exe の実...
-
Pevasiveってなんですか?
-
シャットダウン時に・・・
-
FairUse4WM v1.3 がインストー...
-
コピーのショートッカトキーは?
-
開いている全エクスプローラー...
-
Java 8 Updateを消去していいのか
-
アプリケーションエラーについて
-
Win7起動時のエラー表示、原因...
-
Xeon? Itanium?
-
英語版windowsOSを利用している...
-
CrystalDiskInfoの書き込み量
-
Excelを開こうとすると常に「st...
-
Hyper-Vってなんに使うツールなの
-
virtual boxで画面の自動キャプ...
-
SleipnirでAdobeが出てきません...
-
バーチャルホストに複数のSSL設...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Corei 7-12700(Alder Lake) と ...
-
写真保存アプリは運営側からは...
-
Outlook でのメールの表示方法...
-
問題が発生したため、このプロ...
-
PCのアカウント名変更の影響に...
-
エラー名:AppHangB1 iexplore....
-
WINDOWS vs LINUX
-
オラクルってなんの会社なんで...
-
エクセルの動作が停止する事が...
-
Netscapeの設定について
-
英語版windowsOSを利用している...
-
16ビット と 32 ビット
-
【Mac】ウィンドウを閉じた時の...
-
インターネット アプリケーショ...
-
一太郎などの使用者欄の名前を...
-
PING.EXE - アプリケーション...
-
jwwでjwcファイルが開かない!
-
パソコンのエラーについて
-
windows 7で、特定のアプリケー...
-
Microsoft .NET Frameworkを削...
おすすめ情報