• ベストアンサー

このVBSの修正点を教えてください。

Dim objExcel 'Excelのオブジェクトを作成する Set objExcel = CreateObject("Excel.Application") 'Excelを見えない形で表示させる。 objExcel.Application.Visible = True 'Excelブック①のパスとシート名を選択 objExcel.Workbooks.Open("C:\Users\user\Desktop\1_作成\銀行借入調達返済\2307-2406銀行借入調達返済 (全社表示).xlsm ") objExcel.Worksheets(objExcel.Worksheets.Count).select '実行するマクロ名を指定。 objExcel.Application.Run "CopyWorksheets_And_Autofill" objExcel.Application.Run "CopyNewBook" Set objExcel = Nothing 保存はANSIで.vbsで保存しました。

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1619/2458)
回答No.1

10行目が objExcel.Workbooks.Open("C:\Users\user\Desktop\1_作成\銀行借入調達返済\2307-2406銀行借入調達返済 (全社表示).xlsm になると思います。この最後に改行があって ") となっていますので改行で分割されて「"」が10行目では存在しないという事になって文字列が閉じられていないというエラーだと思います。

terabayahi1988
質問者

お礼

ありがとうございます。解決しました。

terabayahi1988
質問者

補足

回答ありがとうございます。 Dim objExcel 'Excelのオブジェクトを作成する Set objExcel = CreateObject("Excel.Application") 'Excelを見えない形で表示させる。 objExcel.Application.Visible = True 'Excelブック①のパスとシート名を選択 objExcel.Workbooks.Open("C:\Users\user\Desktop\1_作成 _ \銀行借入調達返済\2307-2406銀行借入調達返済 (全社表示).xlsm") objExcel.Worksheets(objExcel.Worksheets.Count).select '実行するマクロ名を指定。 objExcel.Application.Run "CopyWorksheets_And_Autofill" objExcel.Application.Run "CopyNewBook" Set objExcel = Nothing 改行を挟むと文字が54になっており、改行部分だとわかりました。これはどうすればいいですか。

関連するQ&A

  • vbs 文字位置を中央に

    vbscriptでエクセルファイルへ出力するスクリプトを作成しています。 エクセルファイルのセルに文字列を入力し、文字を中央揃えにしたいのですが、うまくいきません。 ----------------------------------------- Dim FSO, objExcel, objBook, objSheet Set FSO = CreateObject("Scripting.FileSystemObject") Set objExcel = CreateObject("Excel.Application") objExcel.Visible = True Set objBook = objExcel.Workbooks.Add Set objSheet = objExcel.Worksheets("Sheet1") objSheet.range("a1") = "test" objSheet.range("a1").HorizontalAlignment = xlHAlignCenter Set FSO = Nothing : objExcel = Nothing : Set objBook = Nothing : Set objSheet = Nothing ----------------------------------------- どうすれば、中央揃えにできますでしょうか? よろしくおねがいします。

  • ACCESSでExcelにデータ出力、高速化

    ACCESSのVBAを使ってテーブルのデータを 既存ブックに出力し、別名で保存をしたいのですが、 どうも、処理が遅くて困っています。 改善点がありましたら教えてくださいお願いいたします。 Dim objExcel As Excel.Application Dim xlWrkbk As Excel.Workbook Dim xlWrksh As Excel.Worksheet Dim rs As DAO.Recordset Dim strFilename As String strFilename = CurrentProject.Path & "既存ブック名.XLS" Set objExcel = New Excel.Application Set xlWrkbk = objExcel.Workbooks.Open(Filename:=strFilename, ReadOnly:=True) Set xlWrksh = xlWrkbk.Worksheets("シート名") Set rs = CurrentDb.OpenRecordset("テーブル名", dbOpenSnapshot) With objExcel xlWrksh.Range("A:N").Clear xlWrksh.Range("A2").CopyFromRecordset rs xlWrkbk.SaveAs Filename:=CurrentProject.Path & "新しいブック名.xls" xlWrkbk.Close .Quit rs.Close End With Set rs = Nothing Set objExcel = Nothing Set xlWrkbk = Nothing Set xlWrksh = Nothing

  • ACCESSからEXCELに出力する際、時間がかかる。

    よろしくお願いします。 ACCESS VBA を使用して、既存のEXCELファイルにデータを出力しているのですが、すごく時間がかかってしまいます。件数が少ない時はそれほど気にならないのですが。時間短縮する方法を教えてください。 Sub S_ExportExcel_ADO() Dim CN As ADODB.Connection Dim rst As ADODB.Recordset Dim objExcel As Excel.Application Dim i As Integer Dim W_SQL As String On Error GoTo Err_S_ExportExcel_ADO Set objExcel = New Excel.Application objExcel.Workbooks.Open ("test.xls") objExcel.Worksheets("sheet1").Select Set CN = CurrentProject.Connection Set rst = New ADODB.Recordset W_SQL = "SELECT * FROM データ" rst.Open W_SQL, CN, adOpenKeyset, adLockReadOnly i = 1 Do Until rst.EOF objExcel.Cells(i, 4) = Trim("" & rst![データ1]) objExcel.Cells(i, 5) = Trim("" & rst![データ2]) objExcel.Cells(i, 6) = Trim("" & rst![データ3]) objExcel.Cells(i, 7) = Trim("" & rst![データ4]) objExcel.Cells(i, 9) = Trim("" & rst![データ5]) '***省略*** objExcel.Cells(i, 35) = Trim("" & rst![データ15]) objExcel.Cells(i, 36) = Trim("" & rst![データ16]) i = i + 1 rst.MoveNext Loop 'EXCEL保存 objExcel.ActiveWorkbook.Close objExcel.Quit rst.Close CN.Close Set rst = Nothing Set CN = Nothing Set objExcel = Nothing End Sub

  • EXCELのYEAR関数をOLEで呼ぶには

    いつもお世話になっております。 EXCEL2002を使用しております。 A1セルに日付型のセルがあるとして、 そこに、"2002/12/24"が入っているとします。 このセルから年を取得する場合、 Year(Cells(1,1)) で取得できると思うのですが、 これをOLE経由で取得する場合、どのように呼べばよいでしょうか。 本ケースではDelphi(6.0)上からExcelを呼ぶものとして、 上記の解決方法をご教授いただければと存じます。 以下は、フォーム表示時にExcelを起動、値を設定し、Excelを終了させるソースです。(Excelが保存確認してくるので、Excelはおわりませんが、、) procedure TForm1.FormCreate(Sender: TObject); var objExcel: Variant; BookName:String; strSheetName:String; a :String ; begin objExcel := CreateOleObject('Excel.Application') ; //Excel起動 objExcel.WorkBooks.Add[null] ; objExcel.visible := true ; BookName := objExcel.ActiveWorkBook.Name ; strSheetName :=objExcel.WorkBooks[BookName].WorkSheets[1].Name ; objExcel.WorkBooks[BookName].WorkSheets[strSheetName].Range['A1'].value := 36884 ; //ここで年を取得したいのです。 objExcel.Quit ; objExcel := Unassigned ; end; 他の言語からでの呼び出し方法でもかまいませんので、 どなたかご教授をよろしくお願いいたします。

  • Accessで空のExcelファイルを出力する方法について

    下記を実行した所、C:\excel.xlsのセルA1に「1」と記述されました。 【ソース】 Private Sub コマンド0_Click() Dim objExcel As Object Set objExcel = CreateObject("Excel.Application") objExcel.Workbooks.Open FILENAME:="C:\excel.xls" objExcel.Range("A1") = 1 objExcel.Application.ActiveWorkbook.Save objExcel.Application.Quit End Sub しかし、C:\excel.xlsが存在しない状態で実行すると下記のエラーメッセージが表示されました。 【エラーメッセージ】 実行時エラー '1004' 'C:\excel.xls'が見つかりません。ファイル名およびファイルの保存場所が正しいかどうか確認してください。 上記現象を回避する為には、毎回空のExcelファイルを出力した上でセルに値を書き込めば良いと思いましたが、空のExcelファイルを出力する方法が分かりませんでした。 その為、何かアドバイスをいただける方がいらっしゃいましたら、どうかよろしくお願いします。

  • アクセスからエクセルのプロシージャーを実行する際の

    アクセスからエクセルのプロシージャーを実行する際のエラーです。 おはようございます。長文ですがお許しください。 http://www.geocities.jp/cbc_vbnet/tips/excll.html(03.プロシージャの作成) を参考にアクセスからエクセルのプロシージャーを実行させてるのですがエラーになります。 エクセルファイルのパス→C:\Users\User\Desktop\a.xlsm エクセルファイルに入っているプロシージャ→test() *********************エクセルの標準モジュール********************* Sub test() MsgBox "" End Sub *********************アクセスのイベント********************* Private Sub 更新_Click() Dim App As Excel.Application ’参照設定済み Dim MyFileName As String Dim res As Variant MyFileName = "C:\Users\User\Desktop\a.xlsm" Set App = Excel.Application res = App.Application.Run(MyFileName & "!" & "test") End Sub このアクセスのイベントを実行すると、 「実行時エラー1004 マクロ'C:\Users\User\Desktop\a.xlsm!test'を実行できません。 このブックでマクロが使用できないか、また全てのマクロが無効になっている可能性があります。」 となります。 エクセルのマクロの設定は、「全てのマクロを有効にする」にしてあります。 a.xlsmはダブルクリックすれば普通に開けるし、testも問題なく実行できます。 そして、このアクセスのイベントを実行した後は、エクセルファイルが開けなくなります。 一瞬開くんですが、すぐ閉じてしまいます。 タスクマネージャーのプロセスからエクセルのアプリケーションを強制終了させると 再度開けるようになりますが、画像のように変なドキュメントの回復が出ます。 とりあえず、エクセルが開けなくなることは置いといて、 アクセスからエクセルのプロシージャーを実行する方法を教えてください。 当方オフィス2007です。ご回答よろしくお願いします。

  • 他ブックを実行するマクロ

    あるexcelファイル(ブック名「自動操作.xlsm」)からべつのexcelファイル(ブック名「a.xlsm」)というファイルを実行するマクロを組んでいます。 Application.Runを用いて「自動操作.xlsm」のコードを以下のように記述しました。 ※「\」は半角の円マークだと考えてくれればいいです。ここで半角の円マークをかいても\と表示されます。また、自動操作とaは同じディレクトリにあります。 Sub Test1() Application.Run "'C:Users\ディレクトリ名\a.xlsm'!test" End Sub また、「a.xlsm」は以下のように記述しました。 Sub test() Dim i As Integer For i = 1 To 5 '移動元ファイルパスの設定 Cells(i, 1) = i Next End Sub ただ1~5行にその行数を記入するマクロです。 a.xlsmを開いた状態でこれを実行すると、「アプリケーション定義またはオブジェクト定義のエラーです」とでます。 a.xlsmを閉じた状態で実行すると、「このブックでマクロが使用できないか、またはすべてのマクロが無効になっている可能性があります」とでます。 いったいなにを間違えているのでしょうか。

  • ASPでEXCELを扱うには?

    こんにちは。 ASPでEXCELを起動させたいのですが、 Set objExcel = CreateObject("Excel.Application") ここでエラーが出ます。 ”ActiveX コンポーネントはオブジェクトを作成できません。: 'Excel.Application'” 環境はwindows2000とEXCEL2000です。 最終的には、EXCELの各シートをCSVで保存したいと思っています。 初心者ですがよろしくお願いします。

  • VBからExcelを使用したいのですが…

    ExcelをVBから使用したいのですが、Withの使い方で困ってます。 Sub PrintInExcel(ByVal PrintDate As Date, ByRef rsBanking As ADODB.Recordset) Dim objExcel As New Excel.Application With objExcel    .Workbooks.Add    With .Workbooks(1)    .Worksheets("Sheet1").Cells(5, 3) = "Hello" ←これは良くて    With .Worksheets("Sheet1")     .Cells(0, 0) = "Daily Worksheet for" & PrintDate ←エラーになる セルに値を入れる時は、ワークシートから書かなければいけないのでしょうか?それとも書き方が間違っているのでしょうか?よろしくお願いします。

  • VB6でExcelシートのコピー、貼付け

    VB6でExcelファイルを開いてシートをコピーし、新規ファイルとして保存したいのですが方法がわかりません。 (既存のExcelシートを雛形として新しくBookを作りたいんです) Set objexcel = CreateObject ("Excel.Application") Set objexcel_new = CreateObject("Excel.Application") objexcel.Workbooks.open (App.Path & "\book1.xls") objexcel_new.Workbooks.Add '新規に作る 'シートのコピー objexcel.sheets("Sheet1").Copy objexcel_new.sheets("Sheet1").Select objexcel_new.activesheet.Paste としても、実行前のクリップボードの中身が貼り付けられるだけで、シートがコピーできません。 よろしくお願いします。

専門家に質問してみよう