• ベストアンサー

Excel2003のVBAでプログラミングをしています。

rivoisuの回答

  • rivoisu
  • ベストアンサー率36% (97/264)
回答No.6

そういう場合「規定のフォーマット」のシートは別のファイルに作成し マクロからそのファイルを開いてデータを貼りつけてセーブする。 マクロの入っているブックはマクロの開始前と終了後は変化しないようにしておく。 そうしないとテストやデバッグが大変になる。また運用も無図解しくなる。

関連するQ&A

  • VBAにて新規ブックへ既存シートのコピー

    みなさんのお力を貸して下さい。 現在エクセルマクロにて新規ブックを作成し、作成したブックへ既存のシートをコピーをしたいと思っています。 しかし、コピーメソッド実行時にエラー1004 WorksheetクラスのCopyメソッドが失敗しましたというエラーが発生して困っています。 Dim oXls As Object Dim oWbk As Object Dim oSheet As Object Set oXls = CreateObject("Excel.Application") Set oWbk = oXls.Workbooks.Add ThisWorkbook.Worksheets("Sheet1").Copy Before:=oWbk.Worksheets("Sheet1")  どなたかご教授、よろしくお願いします。

  • エクセル2013VBAブックコピーでボタンリンク

    エクセル2013のVBAの事で質問です。 あるファイルをSaveCopyAsでコピーして、コピーしたファイルのシートをアクティブシートのみ残して全削除するようにした(その他もシート内で色々処理)のですが、新しく作成したファイルのマクロを登録してあるボタンがコピー前のファイルのマクロにリンクされてしまいエラーを起こしました。 今まで他のファイルでSaveCopyAsを使ってコピーしていましたが、特にそのようなこともなく使えていました。 どんな原因または修正法が考えられるでしょうか? すいませんが、よろしくお願いいたします。

  • Excel VBAでのSaveCopyAsの挙動

    Excel 2016/2019を使っています。よろしくお願いします。 ブックに変更があった場合にバックアップを保存したいので、 上書きにならないように日付と連番をつけてバックアップ専用フォルダにSaveCopyAsを使って保存しようとしています。 明示的に「保存」アイコンをクリックすると期待通りの動作が行われます。しかし、保存せずに「x」印をクリックして閉じてしまった場合でも、変更があるならバックアップファイルを作りたいのですが、SaveCopyAsを通っているのにバックアップファイルが作成されません。 記載したコードは以下のとおりです。 ThisWorkbookオブジェクトに対して、 Public Sub Workbook_beforeClose(Cancel As Boolean) '変更があれば(ThisWorkBookを)保存 If ThisWorkBook.Saved = False Then ThisWorkBook.Save End If End Sub 'ThisWorkBookの保存時にバックアップを作成 Private Sub Workbook_BeforeSave(省略) If ThisWorkbook.Saved = False Then 'バックアップファイルのフルパスを作成  ThisWorkbook.SaveCopyAs "バックアップファイルフルパス" End Sub 何かヒントをお持ちの方みえられましたらご教示いただければ幸いです。

  • エクセルへの書き出し

    サンプル本を片手に作業しています。 PHPでexcelデータを作る場合、以下のようなソースがあります。 <? //依存モジュールの読み込み require_once 'Spreadsheet/Excel/Writer.php'; //エクセルシートのオブジェクトを作成 $workbook = new Spreadsheet_Excel_Writer(); //test02.xlsとしてダウンロードを開始するようHTTPヘッダーを送信 $workbook -> send('test02.xls'); //1枚目のワークシートを作成 $worksheet1 =& $workbook -> addWorksheet('社員名簿'); //データを書き出し $worksheet1 -> write(0,0,'名前'); $worksheet1 -> write(0,1,'年齢'); $worksheet1 -> write(0,2,'出身地'); $worksheet1 -> write(1,0,'鈴木太郎'); $worksheet1 -> write(1,1,'32'); $worksheet1 -> write(1,2,'北海道'); $worksheet1 -> write(2,0,'青山辰夫'); $worksheet1 -> write(2,1,'24'); $worksheet1 -> write(2,2,'青森'); //Excelシートの送信 $workbook -> close(); ?> この場合、Excelは指定した名前で生成されるのでしょうか、 それとも、あらかじめ作成したExcelへ書き込みするのでしょうか?

    • ベストアンサー
    • PHP
  • PHPからExcel出力について

    現在、プログラム(PHP)でデータ出力の機能を作成しているのですが、Excel出力で (1)ブックが開く (2)データを表示 (3)保存 以上の一連の動作はできるのですが、ブックを開いた際にExcel上に「ファイルへのダメージが深刻であり修復は不可能です。数式と値の回復を試みましたが、消失または破損したデータが含まれる可能性があります」といったエラーが表示されてしまいます。 コード変換もしているし、spreadsheet_excel_writerのパッチも当てましたが改善されません。 まだプログラミングが不慣れなもので、解決策が見当たらずに困っています。 どなたかご教授頂けますと助かります。よろしくお願いいたします。 ※申し訳ありません、データを添付していませんでしたので再投稿させていただきました。 ============================================================== //-----------ココから上はデータを取得する関数でデータを取得しています----------- $workbook = new Spreadsheet_Excel_Writer(); $workbook->setVersion(8); $workbook->setVersion(0x0500); $tablename = "sampletable"; $worksheet =& $workbook->addWorksheet($tablename); $worksheet->setInputEncoding("sjis"); $format =& $workbook->addFormat(); $format->_font_name = mb_convert_encoding("MS UI Gothic", "shift_jis"); $format->setBold(); $format->setFgColor(31); //Excelでいうところの見出し部分 $worksheet->write(0,0,"○○"); $worksheet->write(0,1,"○○"); $worksheet->write(0,2,"○○"); $worksheet->write(0,3,"○○"); $worksheet->write(0,4,"○○"); $worksheet->write(0,5,"○○"); $worksheet->write(0,6,"○○"); $worksheet->write(0,7,"○○"); $worksheet->write(0,8,"○○"); //-------ココから下はforeachでデータを表示($worksheet->write)させています-------

    • ベストアンサー
    • PHP
  • 保存してもワークブック&シートが消えています(Excel)

    プログラミング初心者です。今DelphiでExcelを操作するプログラムを作成しており、Serversコンポーネントを使わずにOLEオブジェクトを使って操作しています。DelPhi側でExcelを起動させて、既存のファイルにDelPhiで取り出したSQLのデータをExcelに表示させるというものですが、データを上書き保存してもExcelのブックが消えていているようで、保存したxlsを起動させてもブック及びシートが表示されません。但し印刷プレビューには保存していたデータがプレビューされます。 原因が分からないので、申し訳ありませんがよろしくお願いします。 書いたプログラム↓ (uses節にComObj,Excel2000があります。) Var Excel,WorkBook,WorkSheet: Variant; ... ... Excel := CreateOleObject('Excel Application'); WorkBook := Excel.WorkBooks.Open(FileName := 'C:\@@@.xls',ReadOnly := False); WorkSheet := WorkBook.Wordsheets[1]; WorkSheet.Name := '@@@'; ... ...(以下Record取得の表記など) Excel.Visible := True; (Recordを取得し、値をCellにセットしてからVisibleをTrueにしています。) ... 大変読みにくくて申し訳ありませんがよろしくお願いします。環境はDelphi7,Excel2000,SQLServer2000です。

  • 【Excel VBA】並べ替え

    Excel2003を使用しています。 あるテキストファイルから必要なデータを抽出し、予めExcelで作成してある表に、抽出したデータをコピーするという作業をマクロで処理しています。 Excelの表は、A列→4桁の番号(数値)、C列→文字列、D列→数値で、A列の番号順(昇順)に表示されています。 抽出されたデータは、2行目以下に表示されるので、まず、A2セルに『0000』、C2セルとD2セルにそれぞれ該当のデータがコピーされ、以下、順番にコピーされます。このA2セル『0000』の行データをコピーされたデータの一番最後にもっていき、下記のように上方向へシフトさせたいのですが、このようなことはコードを追加することで可能でしょうか?    A列  C列  D列 2  0000  あ  100 3  1200  い  200 4  1500  う  300        ↓ 2  1200  い  200 3  1500  う  300 4  0000  あ  100 データ元のテキストファイルは、会社で使用しているシステムの機能を使って、テキストファイルにしたものです。このデータが昇順で表示されているので、こちらを並べ替えてマクロを実行すればいいかと思ったのですが、数値と文字列が混在しているので、Excelの表にコピーした後(数値と文字列の混在がなくなった後)に、上記のように並び替えることができればと思い、質問させていただきました。 よろしくお願いします。

  • 【VBA】 Copyメソッドの使用方法について

    【動作環境】 Excel 2003 【仕様概要】 EXCEL起動時に共有フォルダ内のEXCELシートよりマスタ情報を取得し、クライアント側のマスタ情報を最新情報に更新させたい。 【質問内容】 下記コードを実行すると12行目のCopyメソッドを発行時に下記メッセージが表示されてしまいます。 初歩的なコーディング誤りと思われますが、ご教授お願い申し上げます。 [実行時エラー'1004' 'Copyメソッドは失敗しました: '_Worksheet'オブジェクト] ========================================================================= 01: Sub auto_open() 02: Dim xlApp As Excel.Application '/* EXCELオブジェクト変数宣言 - Application */ 03: Dim xlBook As Excel.Workbook '/* EXCELオブジェクト変数宣言 - Workbook */ 04: Dim xlSheet As Excel.Worksheet '/* EXCELオブジェクト変数宣言 - Worksheet */ 05: 06: ' /* EXCELファイルオープン */ 07: Set xlApp = CreateObject("Excel.Application") 08: Set xlBook = xlApp.Workbooks.Open("共有ドライブ\マスタ情報.xls") 09: Set xlSheet = xlBook.Worksheets("マスタ情報") 10: 11: ' /* マスタ情報取得(ワークシートコピー) */ 12: xlSheet.Copy after:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count) 13: 14: ' /* EXCELアプリケーション終了 */ 15: xlBook.Close 16: xlApp.Quit 17: 18: ' /* EXCELオブジェクト変数解放 */ 19: Set xlSheet = Nothing 20: Set xlBook = Nothing 21: Set xlApp = Nothing 22: End Sub =========================================================================

  • Excel2011のVBAについて教えてください。

    初めて質問します。 Excel2011forMACでVBAを使いBOOKを指定してクローズさせたいのですが、 エラー1004が起こりファイルを閉じることができません。 作成したVBAは以前にWindowsXP、Excel2000で作成したものを修正したものだったためなのではないかと思い、 改めてExcel2011forMACで下記ように、コマンドボタンをクリックすると"test.xlsx"を閉じるだけのテストを行いましたが同じエラーが発生します。 Private Sub CommandButton1_Click() Windows("test.xlsx").Close  End Sub 実行すると『実行時エラー'1004' _ オブジェクト'Close'のメソッド'Window'が失敗しました。』となります。 ちなみに、WindowsをWorkbooksにしても同様のエラーが発生しました。 Workbooksではファイルを指定しなければエラーは発生しないのですが、できれば1つのファイルを開いた状態にしておきたいと思っています。 このエラーの解消方法を教えていただけませんか。 それとも、MACでは個別にファイルを閉じることはできないのでしょうか。 Excel2011を使っているMAC OS Xのバージョンは10.6.7です。 VBAについては、初心者レベルで常にヘルプとマクロの記録を頼りになんとか作成しています。さらに、MACでVBAを使ったのが初めてで、この事象が一般的に知られていることなのかわかりません。いろいろ調べて同じような事例が見つけられなかったので質問させていただきます。 よろしくお願いします。

  • EXCEL2003でチェックボックスを大量に

    EXCEL2003のマクロで、 1シート内に、大量のチェックボックスを 作成したいのですが、途中で止まります。 エラーメッセージは、 ”オートメーションエラーです。要素が見つかりません” です。 マクロの内容は、データベースを読み 1レコードずつ、シートの1行に転記した後 横に、チェックボックスを、7個作ります。 500レコードぐらいあるのですが 170レコード目の6個目を作成するところで 先ほどの エラーになります。 一度、その現象になると Worksheet(対象シート名).~~ の、プロパティみたり、メソッド実行したりしようとすると ”オートメーションエラーです。要素が見つかりません” になります。 シート名を認識できなくなっているのでしょうか。 チェックボックスを、2,000行分(14,000個)作りたいのですが 無理でしょうか? ちなみに、Excel2010 ですが http://support.microsoft.com/kb/980528/ja で、レジストリを変更することを 書かれていましたが やってみてもダメでした。 オブジェクト数に限界があるのでしょうか? どんな小さなヒントでもかまいません。 なにとぞよろしくお願いします。