1

スプレッドシートの名前(タブの下部にある名前)のみを印刷することはできますか?かなりの数のスプリーシート(500以上、えーと、音楽のカタログです... CD、その内容、作曲家、指揮者、動き、時間など)が入ったワークブックを持っていて、ブックのすべての部分ではなく、の名前。はい、Accessでこれを行う必要があることはわかっていますが、64年前にCommidoreで開始し、進行中に「変換」してきました。最新バージョンはExcel2007にあります。したがって、基本的には、Accessで実行される「3Dデータベース」ではなく、スプレッドシートを使用して実行される「2Dデータベース」です。多くの点。

4

5 に答える 5

3

VBAを使用すると、シート名のリストをブック内の新しいシートに非常に簡単にダンプできます。

Sub PrintSheetNames()
   i=1
   For Each sht in Sheets
      Cells(i,1).Value = sht.Name
      i=i+1
   Next
End Sub

空白のワークシートに移動して、このマクロを実行します。最初の列にすべてのワークシート名が出力されます。その後、リストを印刷するだけです。

于 2009-07-04T14:02:41.333 に答える
2

.NETではなくVBAを使用していると仮定すると、これに似たサブルーチンを作成できます。同じオブジェクトと名前が.NETで使用できます。

Sub ShowTabNames()
    Dim s As Worksheet
    Dim tabs As String

    For Each s In ActiveWorkbook.Worksheets
        If Len(tabs) > 0 Then tabs = tabs & ", "
        tabs = tabs & s.Name
    Next

    MsgBox tabs
End Sub
于 2009-07-04T14:03:30.847 に答える
1

これは、 Spreadsheet::ParseExcelモジュールがインストールされたPerlを使用して実行できます。

use Spreadsheet::ParseExcel;
use strict;

my $filename = shift || "Book1.xls";
my $e = new Spreadsheet::ParseExcel;
my $eBook = $e->Parse($filename);
my $sheets = $eBook->{SheetCount};
my ($eSheet, $sheetName);

foreach my $sheet (0 .. $sheets - 1) {
    $eSheet = $eBook->{Worksheet}[$sheet];
    $sheetName = $eSheet->{Name};
    print "Worksheet $sheet: $sheetName\n";
}
于 2009-07-04T14:02:18.260 に答える
0

ExcelブックにOleDbConnectionを作成してから、GetOleDbSchemaTableを呼び出して、Excelシートのリストにすぎないすべてのテーブルのリストを取得できます。

ExcelConnection.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables、new object [] {null、null、null、 "TABLE"});

于 2009-07-04T14:06:32.027 に答える
0

これは、 xlrdモジュールがインストールされた Python を使用して実行できます。

import xlrd, sys
filename = (sys.argv[1:2] or ['Book1.xls'])[0]
book = xlrd.open_workbook(filename, on_demand=True)
for name in book.sheet_names():
    print name # name is in Unicode; may need encoding

注: on_demandarg はバージョン 0.7.1 で新しく追加されました。前もってすべてのワークシートを解析しないことで、時間とメモリを節約できます。on_demand=True以前のバージョンを使用している場合は、上記のスニペットでアップグレードまたは削除してください。

于 2009-07-05T06:28:29.673 に答える