5

Microsoft Office がインストールされていない PC で、VBScript を使用してスプレッドシートに行を追加する必要があります。

Set objExcel = CreateObject("Excel.Application")[ ]を試しました

PC に Excel が存在しないため、このオブジェクトを作成できません。

Excel を使用せずにスプレッドシートを変更する方法はありますか?

4

10 に答える 10

9

以下のコードを使用するには、vbscriptファイルと同じフォルダーに「Test.xls」という名前のExcelブックを作成します。

Test.xlsで、セルA1からB4に次のデータを入力します。

First   Last
Joe     Smith
Mary    Jones
Sam     Nelson

以下のvbscriptコードを.vbsファイルに貼り付けます。

Const adOpenStatic = 3
Const adLockOptimistic = 3

filename = "Test.xls"
Set cn = CreateObject("ADODB.Connection")
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & filename & _
        ";Extended Properties=Excel 8.0"

query = "Select * from [Sheet1$A1:B65535]"
Set rs = CreateObject("ADODB.Recordset")
rs.Open query, cn, adOpenStatic, adLockOptimistic

rs.AddNew
rs("First") = "George"
rs("Last") = "Washington"
rs.Update

rs.MoveFirst
Do Until rs.EOF
  WScript.Echo rs.Fields("First") & " " & rs.Fields("Last")
  rs.MoveNext
Loop

コマンドプロンプトで、次のように入力します。

CSCRIPT Yourfile.vbs

スプレッドシートに名前を追加してから、すべての名前を書き出します。

Joe Smith
Mary Jones
Sam Nelson
George Washington
于 2008-10-31T16:57:45.117 に答える
2

Microsoft Jet Driver の使用を試すことができます。

vbscript のサンプルについては、こちらを参照してください。行を挿入するその他のリンクと方法については、こちらを参照してください。

于 2008-10-31T13:10:35.513 に答える
1

これは私が使用したスクリプトの最終バージョンです。助けてくれてありがとう。

Dim arrValue
arrValue = Array("Test","20","","I","2.25","3.9761","20","60","12","1","","1","1","1")
AddXLSRow "C:\Test.xls", "A1:N109", arrValue

Sub AddXLSRow(strSource, strRange, arrValues)
'This routine uses the data from an array to fill fields in the specified spreadsheet.
'Input strSource (String) = The Full path and filename of the spreadsheet to be used.
'Input arrValues (Array) = An array of values to be added to the spreadsheet.
Dim strConnection, conn, rs, strSQL, index

strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strSource & ";Extended Properties=""Excel 8.0;HDR=Yes;"";"

Set conn = CreateObject("ADODB.Connection")
conn.Open strConnection
Set rs = CreateObject("ADODB.recordset")
strSQL = "SELECT * FROM " & strRange
rs.open strSQL, conn, 3,3
rs.AddNew 
index = 0
For Each field In rs.Fields
         If field.Type = 202 Then
                   field.value = arrValues(index)
         ElseIffield.Type = 5 And arrValues(index) <> "" Then
                   field.value = CDbl(arrValues(index))
         End If
         If NOT index >= UBound(arrValues) Then
                   index = index + 1
         End If
Next
rs.Update
rs.Close
Set rs = Nothing
conn.Close
Set conn = Nothing
End Sub
于 2008-10-31T19:14:38.740 に答える
1

私は知っています...数年後ですが、今日、サーバーにExcelをロードせずにvbScriptを使用してExcelスプレッドシートにアクセスする方法を理解する必要がありました。ネットで検索したところ、あなたの情報は役に立ちましたが、まだもっと必要だったので、検索を続けました. 他の誰かが私と同じ問題を抱えている場合に備えて、必要な解決策を見つけて、ここで共有したいと思いました.

Windows 2008 サーバーで vbScript を使用して Excel スプレッドシートにアクセス (読み取り/書き込み) しようとしましたが、サーバーに Excel をインストールしたくありませんでした。私の解決策はここにありました(PowerShellを使用していますが、VBSに解読するのは簡単です):

vbScript を使用して、Excel がインストールされていない Excel スプレッドシートから読み取る

vbScript を使用して、Excel がインストールされていない Excel スプレッドシートに書き込む

これが、将来同じソリューションを必要とする人に役立つことを願っています。

L8r...

UCG

于 2011-04-23T16:55:48.633 に答える
1

極度の困難がないわけではありません。Microsoft はファイル形式の仕様を公開しています。Excel はこちら ですが、これらを軽視することはできません。VBScript を使用するのは難しいと思います。

于 2008-10-31T13:09:17.700 に答える
0

この質問を見たいと思うかもしれません。これはC#ベースですが、スプリートシートにアクセスするための手法についての洞察が得られるはずです。

于 2008-10-31T13:57:31.783 に答える
0

Excel がインストールされていないと、Excel ドキュメントを変更する方法がわかりません。

ただし、Excel 2007 スプレッドシート (xslx) を使用している場合は、Excel を物理的にインストールしなくても、.NET Framework の OpenXML 機能を使用してコンテンツを更新できるはずです。

Office OpenXML の詳細については、こちらをご覧ください。

于 2008-10-31T13:08:07.857 に答える
0

パーティーに遅れてすみません。誰もVSTOについて言及していないという事実は、おそらく私が質問を誤解していることを意味します. とにかく、私はそれを使用している人々からさまざまなレビューを聞いています.

于 2008-10-31T19:57:59.980 に答える
-1

ExcelがインストールされているときにのみインストールされるExcelCOMオブジェクトが必要なので、あなたの質問に対する簡単な答えはノーだと思います。これは、Officeアプリを作成する際の実際の欠点の1つでした。つまり、エンドユーザーが使用するためにアプリケーション全体(Excel、Wordなど)が必要でした。

于 2008-10-31T17:02:57.320 に答える
-2

EPPlus を使用します。epplus.codeplex.com

Excel をインストールしなくても、VSTO でできることのほとんどを実行できます。

于 2012-12-13T11:08:42.027 に答える