PerlでExcelのワークシートを同じファイル内にコピーしたりワークシートの名前を変更することは可能でしょうか?

このQ&Aのポイント
  • PerlでExcelのワークシート内セルに書き込み・セルからの読み出しはできています。
  • VBAではワークシートをコピーする場合は、「Worksheets("Sheet1").Copy After:=Worksheets("Sheet3")」でコピーできるようですが、Perlではどう記述すれば良いか分かりません。
  • Perlではワークシートをコピーしたりワークシートの名前を変更することは出来ないのでしょうか?
回答を見る
  • ベストアンサー

PerlでExcelのワークシートを同じファイル内にコピーしたりワーク

PerlでExcelのワークシートを同じファイル内にコピーしたりワークシートの名前を変更することは可能でしょうか? 環境は、WindowsXPpro、IIS5.1、PerlV5.10でWin32_OLEモジュールを使用しています PerlでExcelのワークシート内セルに書き込み・セルからの読み出しはできています。 VBAではワークシートをコピーする場合は、 「Worksheets("Sheet1").Copy After:=Worksheets("Sheet3")」 でコピーできるようですが、 Perlではどう記述すれば良いか分かりません。 Perlではワークシートをコピーしたりワークシートの名前を変更することは出来ないのでしょうか? よろしくお願いします。

  • Perl
  • 回答数2
  • ありがとう数10

質問者が選んだベストアンサー

  • ベストアンサー
  • moon_piyo
  • ベストアンサー率60% (88/146)
回答No.2

こんにちは $wbにブックのオブジェクトがはいってるとして $wb->worksheets("Sheet1")->copy({after => $wb->worksheets("Sheet3")}); でコピーします

minnaosiet
質問者

お礼

回答有難うございました VBAの記述をPerlで使用する方法がなかなか理解できていませんでした。 教えていただいた通りPerlで記述すると Excelのシートをコピーすることが出来ました。

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

Win32::OLE でワークシートが変数 $worksheet にあるなら $worksheet->{name} で名前にアクセスできるみたい.

minnaosiet
質問者

お礼

返事が遅くなり申し訳ございません $worksheet->{name}でExcelのセルにデータを記入したりは一応出来るのですが シートをコピーする場合、Perlでどう記述するかが不明でした

関連するQ&A

  • マクロでエクセルシートのコピー

    マクロでシート1を最後尾に名前をつけてコピーしたいと思ってます。 つけたい名前は、シート2のあるセルにかいてあります。 私は下記のように書いたのですが、エラーになってしまいます。 Worksheets("Sheet2").Select newsheet = Cells(1, 1) Sheets("Sheet1").Select Sheets("Sheet1").Copy After:=Sheets(newsheet) どのようにすればシートをシート名をつけてコピーできますか? 教えてください。 エクセル97です。

  • EXCEL VBA ワークシートのコピーについて

    seaclearsky8です。 一つのブックに何枚ものワークシートを追加して保存するVBAについて ご教授、よろしくお願いします。 コピー元  MASTER Book MASTER Workseets コピー先 Copy Book copy Worksheets コピー元にはワークシートがMASTERワークシートの一枚しかありません。 その一枚のワークシートに値をVBAで入れていき処理し コピー先のコピーBOOKにワークシートをコピーしていきたいです。 しかし、MASTERBOOKの処理が何通りかあり、 コピー元の一枚のワークシートに 処理別にデータを写し コピー先BOOKに          ワークシート名 ワークシート1 処理1ワークシート  ワークシート2 処理2ワークシート ワークシート3 処理3コピー元ワークシート3 という具合にワークシートを複数コピーしたいのですが 処理ごとにデータを代入し、コピー処理はできるのですが。 コピー先BOOK ワークシート3 処理3ワークシート だけしかコピーされてないBOOKが作成されます。 上書きされているのだと思われます。 対処法が調べましたが見つけられていません。 すいませんが対処法及び参考VBA等ご教授宜しくお願いいたします。

  • EXCEL VBA ワークシートのコピーについて

    seaclearsky8です。 一つのブックに何枚ものワークシートを追加して保存するVBAについて ご教授、よろしくお願いします。 コピー元  MASTER Book MASTER Workseets コピー先 Copy Book copy Worksheets コピー元にはワークシートがMASTERワークシートの一枚しかありません。 その一枚のワークシートに値をVBAで入れていき処理し コピー先のコピーBOOKにワークシートをコピーしていきたいです。 しかし、MASTERBOOKの処理が何通りかあり、 コピー元の一枚のワークシートに 処理別にデータを写し コピー先BOOKに          ワークシート名 ワークシート1 処理1ワークシート  ワークシート2 処理2ワークシート ワークシート3 処理3ワークシート という具合にワークシートを複数コピーしたいのですが 処理ごとにデータを代入し、コピー処理はできるのですが。 コピー先BOOK ワークシート3 処理3ワークシート だけしかコピーされてないBOOKが作成されます。 上書きされているのだと思われます。 対処法が調べましたが見つけられていません。 すいませんが対処法及び参考VBA等ご教授宜しくお願いいたします。

  • エクセル VBA シートのコピーが上手く出来ない

    原因が分かりません。宜しくお願いします。 エクセルVBAで、フィルターを掛けたシートを別シートへコピーしています。 問題なく出来ていたルーチンでしたが、他の作業の影響か、 気がついたらコピー出来なくなっていました。 他のシートでも同じ方法でコピーを行っていますが、問題ありません。 問題のコーディングは以下のとおりです。 Worksheets("work2").Unprotect Worksheets("work2").Range("A:Z").ClearContents Worksheets("コピー元").Range("A5").AutoFilter Field:=6, Criteria1:=フィルタ請求年1, Operator:=xlOr, Criteria2:=フィルタ請求年2, VISIBLEDROPDOWN:=True Worksheets("コピー元").Range("A1").CurrentRegion.SpecialCells(xlVisible).Copy Worksheets("work2").Range("A1") Worksheets("work2").Protect Worksheets("コピー元").Range("A1").CurrentRegion.SpecialCells(xlVisible).Copy Worksheets("work2").Range("A1") の箇所では、エラーメッセージもでませんが、コピーもされていないことを確認しています。 どのような原因が考えられるでしょうか? または、どのような方法で原因追求が出来るでしょうか? ご回答お待ちしています。

  • EXCELのシート名を同じシート内のセルにコピー

    EXCELのワークシートの名前の変更(例えば「19877」)を入力すると、 同じシート内のあるセル(例えば「B4」)に同じ名前(「19877」)がコピーされる。 入力作業が2回かかるのを1回ですませたい。 あるいは、逆の場合、 シート内のあるセルB4に19877を入力すると、シートの名前が19877になる。 よい方法があれば教えてください。

  • ワークシートを別ファイルにコピー出来ない

    エクセル2010です。 コピー元ファイルを開き、ファイルメニュー→新規→空白のブック により新ファイルを開き、コピー先ファイルとして名前を付けて保存、 コピー元ワークシートを選択しシートコピーしようとすると、以下のエラー表示があります。 文面忘れましたが、 コピー元とコピー先でワークシートの行列数が異なるため、コピー出来ない。ワークシートでなくデータを選択し、コピー&ペーストせよ。 ちなみに、作成したコピー先ファイルを一旦閉じて再度開くと、何故か普通にワークシートコピー出来ます。 メッセージに従うとセル幅や印刷範囲の設定がコピーされないので、やりたくありません。 普通にシートコピーしたいのです。一旦閉じて再度開くなどという動作は回避出来ないのでしょうか?

  • エクセル 複数ワークシート セルのコピー

    お世話になります。 複数のワークシート上に同じ表があり、その表のある特定のセル(例えば、A1セル)の数字を、新たに作成した特定のワークシートのどこでもいいので一度にCOPYしたいです。 ワークシートからワークシートへ毎回COPYという手間を省きたいと思っています。 マクロを使ってでもいいですし、何かいい方法があればご教授よろしくお願いします。

  • VBでEXCELのシートのコピーに関して

    同一Book内で、シートのコピーをしようと考えて、幾つかのHPを参考に、以下のような 記述をしました。 その際に、以下の記述をした場合、本来はコピー先のシート名を変更したいにも関わらず、コピー 元のシート名が変わってしまいます。 追加したシートの名前を変更させるには、どのような書き方にすれば良いでしょうか? 自分で記述しておきながら、どのように対応したら良いかわからず。。。 また、以下のような記述をした場合、追加したセル側のシートを操作したいにも関わらず、 コピー元のシートを書き換えてしまいます。 追加したシートのセルを操作したい(値を入力)ような場合は、どのような記述を すれば良いでしょうか。。。 ご教授頂ければと思います。 '既存のEXCELファイルを開く Dim xlFilePath As String = "C:\test.xls" '起動時の処理 Dim xlApp As New Excel.Application Dim xlBooks As Excel.Workbooks = xlApp.Workbooks Dim xlBook As Excel.Workbook = xlBooks.Open(xlFilePath) '確認のためExcelのウィンドウを表示する xlApp.Visible = True Dim xlSheets As Excel.Sheets = xlBook.Worksheets Dim xlSheet As Excel.Worksheet = CType(xlSheets.Item(1), Excel.Worksheet) Dim xlSheet2 As Excel.Worksheet = xlBook.Worksheets(1) 'シートのコピー xlSheet.Copy(After:=xlSheet2) 'シートに名前を付ける xlSheet.Name = "TEST" Dim xlRange As Excel.Range 'データの入力セル範囲 xlRange = xlSheet.Range("A1:A1") 'セルへデータの入力 xlRange.Value = “AABBCC”

  • エクセルVBAを利用してワークシート名を変更するには

    エクセルVBAを利用してワークシート名を変更するには Sub ~~() Worksheets("sheet1").Name = "新しい名前" End Sub と文献にはあるのですが ワークシート上の名前変更のための コマンドボタンをクリックしたら ある場所のセルの値が名前になるように設定したいのですが どのようにすればいいのでしょうか?? いちおうわからないなりに予想したのは Sub シートの名前変更() ActiveSheets.Name = Range("Z3").Value End Sub これでZ3の値を名前に設定できるのではと思ったのですが うまくいきませんでした

  • EXCEL VBAにてのワークシート作成

    エクセルのVBAにてワークシートを作成することで困っています。 自分で書き込んだのは Private Sub CommandButton1_Click() Worksheets("原紙").Copy ActiveSheet.Name = TextBox1 Worksheets.Add After:=Worksheets(2) End Sub Private Sub UserForm_Initialize() TextBox1 = Format(Date, "yy.mm.dd") End Sub 実行したいことはCommandButton1クリック時に 左から2番目にあるワークシート 原紙を テキストボックス1に入力されている(日付) 名前を付けて左から3番目に新規で作成したいのですが 思うように動かずエラーが出てしまいます。 どの様に修正すれば宜しいでしょうか? またクリック時にすでにテキストボックス1と同じ 名前のワークシートが存在した場合はそのワークシートを Activeにしたいのですがどの様に書き込めば宜しいでしょうか? 重ね重ねですが宜しくお願いいたします。