• ベストアンサー

VBでExcelファイルをテキストファイルにコンバートしたい

TAGOSAKU7の回答

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.4

質問とは無関係ですが、最近答えたことと同じような話題がのぼっているのが見えたので、ちーと乱入デシ 参照設定とCreateObjectについて発言しました。 よかったら、見てやってくださいまし。 それでは、おじゃーまいたしました。

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=500315
lily02
質問者

お礼

どうもありがとうございます。 参照設定しながらCreateObjectでこれまで作ってきました。 違うんですね? もっと勉強してみます。

関連するQ&A

  • VBでExcelファイルの編集

    VBでExcelファイルを作成しようとしていますが、罫線を引くとき、Rangeで範囲を指定しているんですが矩形でかかれず、一本線だけが書かれてしまいます。 どうしたら四角く矩形で罫線が書かれるか教えてください。 Set objExcel = CreateObject("Excel.Application") 'エクセルオブジェクト作成 objExcel.Visible = False 'エクセルを非表示で objExcel.Workbooks.Add '新規に作る With objExcel.Sheets("Sheet1").Range("a19:k29").Borders(1) .LineStyle = xlContinuous .Weight = 4 .ColorIndex = xlAutomatic End With

  • 横にコピーするには・・。

    教えてください・・。 01.xls・02.xls・03.xlsとあり、その中のシート(01・02・03)をコピーして、全部というシートにまとめたいと思っています。 列にデータを追加したいのですが、行にデータが追加されてしまいます・・。 どうしたらいいのか教えてください。 01のシートがAからDまで 02のシートがEからGまで 03のシートがHからLまで とコピーをしたいと思っています・・。 --------- PathName = ThisWorkbook.Path & "\" ArrBook = Array("01.xls", "02.xls", "03.xls") For i = LBound(ArrBook) To UBound(ArrBook) Workbooks.Open PathName & ArrBook(i) Next Set WS(1) = Workbooks("01.xls").Worksheets("01") Set WS(2) = Workbooks("02.xls").Worksheets("02") Set WS(3) = Workbooks("03.xls").Worksheets("03") Set WS(4) = ThisWorkbook.Worksheets("全部") With WS(4) .Cells.ClearContents .Cells(1, 1) = "A" .Cells(1, 2) = "B" .Cells(1, 3) = "C" .Cells(1, 4) = "D" .Cells(1, 5) = "E" .Cells(1, 6) = "F" .Cells(1, 7) = "G" .Cells(1, 8) = "H" .Cells(1, 9) = "I" .Cells(1, 10) = "J" .Cells(1, 11) = "K" .Cells(1, 12) = "L" .Cells(1, 13) = "M" .Cells(1, 14) = "N" .Cells(1, 15) = "O" .Cells(1, 16) = "P" .Cells(1, 17) = "Q" LastRow(1) = WS(1).Range("A65536").End(xlUp).Row LastRow(2) = WS(2).Range("A65536").End(xlUp).Row LastRow(3) = WS(3).Range("A65536").End(xlUp).Row For i = 1 To 3 LastRow(4) = .Range("A65536").End(xlUp).Row + 1 WS(i).Rows("2:" & LastRow(i)).Copy .Cells(LastRow(4), 1) LastRow(4) = .Range("A65536").End(xlUp).Row End With For i = LBound(ArrBook) To UBound(ArrBook) Workbooks(ArrBook(i)).Close SaveChanges:=False Next End Sub

  • 【VB】【エクセル操作】 SaveAsでエラーが出てしまいます。

    VB6.0で作成したソフトの一部でエクセルを操作する箇所があります。 『新しいブックを作成して名前を付けて保存する』ところでエラーが出てしまいます。 Excel2007,2003では正常に動作するのですが、2000ではエラーが発生し強制終了されてしまいます。 '//////////////////////////////////////////////////////////// Private Sub EditExcelFile(FileName As String) Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Add xlApp.Visible = True With xlBook .Application.DisplayAlerts = False .SaveAs (FileName) .Application.DisplayAlerts = True End With Set xlBook = Nothing Set xlApp = Nothing End Function '//////////////////////////////////////////////////////////// 上記コードの .SaveAs (FileName)の箇所でエラーがでます。 .SaveAs (FileName)をコメント文にすると2000でも正常に動作します。 FileNameは新しいブック名のパスが入ります。 2000でも正常に動作させるにはどのような処理を加えれば良いでしょうか? 宜しくお願い致します。

  • VB.NET Excelの解放

    Excel出力の解放について質問です。 下記URLを参考に作成しましたが、出力をし終えたときにプロセスを見るとExcelの解放がされません。 http://hanatyan.sakura.ne.jp/dotnet/Excel01.htm 助言をもらえないでしょうか? With SaveFileDialog1 .FileName = savefilename If .ShowDialog() = Windows.Forms.DialogResult.OK Then wstrPath = .FileName() If Func_Excelチェック(wstrPath) = False Then Exit Function End If End If End With Dim excel As New Excel.Application Dim xlbooks As Excel.Workbooks = excel.Workbooks Dim xlbook As Excel.Workbook = xlbooks.Add Dim xlsheets As Excel.Sheets = xlbook.Worksheets Dim xlsheet As Excel.Worksheet = xlsheets.Item(1) Dim xlCells As Excel.Range Dim xlRange1 As Excel.Range xlCells = xlsheet.Cells Dim i As Integer = 1 作成データテーブルに接続 xlRange1 = xlCells(1, 1) xlRange1.Value = "工場番号" MRComObject(xlRange1, True) While sqlReader.Read xlRange1 = xlCells(i + 1, 1) xlRange1(xlCells(i + 1, 1)).Select() xlRange1.Value = sqlReader("入力_工場番号") MRComObject(xlRange1, True) i += 1 End While excel.DisplayAlerts = False xlsheet.SaveAs(wstrPath) 'Select Case Val(excel.Version) 'Case 9 'xlbook.SaveAs(Filename:=wstrPath) 'Case 12 'xlbook.SaveAs(Filename:=wstrPath, FileFormat:=56) 'End Select 'MRComObject(xlsheet, True) excel.DisplayAlerts = True MRComObject(xlsheet)'xlSheet の解放 MRComObject(xlsheets)'xlSheets の解放 xlbook.Close()'xlBook を閉じる MRComObject(xlbook)'xlBook の解放 MRComObject(xlbooks)'xlBooks の解放 excel.Quit()'Excelを閉じる MRComObject(excel)'excel を解放 Private Function Func_Excelチェック(ByVal arg As String) As Boolean Dim excel As New Excel.Application Dim xlbooks As Excel.Workbooks = excel.Workbooks Dim xlbook As Excel.Workbook excel.Visible = False excel.Application.DisplayAlerts = False Try If System.IO.File.Exists(arg) = True Then xlbook = xlbooks.Open(arg) xlbook.SaveAs(arg, FileFormat:=42, CreateBackup:=False) MRComObject(xlbook, True) Return True Else Return True End If Catch ex As Exception MessageBox.Show("") Return False Finally xlbooks.Close() MRComObject(xlbooks, True) excel.Quit() MRComObject(excel, True) End Try End Function

  • これのおかしいところはありますか?エクセル B列

    Option Explicit Sub ExtractColumnB() Dim FolderPath As String Dim FileName As String Dim SourceWorkbook As Workbook Dim TargetWorkbook As Workbook Dim SourceWorksheet As Worksheet Dim TargetWorksheet As Worksheet Dim LastRow As Long Dim TargetLastRow As Long ' 対象フォルダの選択 With Application.FileDialog(msoFileDialogFolderPicker) .Title = "フォルダを選択してください" .AllowMultiSelect = False If .Show <> -1 Then Exit Sub FolderPath = .SelectedItems(1) End With ' 出力用ワークブックとワークシートを作成 Set TargetWorkbook = Workbooks.Add Set TargetWorksheet = TargetWorkbook.Worksheets(1) ' 対象フォルダ内のExcelファイルを順次処理 FileName = Dir(FolderPath & "\*.xls*") Do While FileName <> "" ' ソースファイルを開く Set SourceWorkbook = Workbooks.Open(FolderPath & "\" & FileName) Set SourceWorksheet = SourceWorkbook.Worksheets(1) ' B列のデータを抽出 LastRow = SourceWorksheet.Cells(Rows.Count, 2).End(xlUp).Row ' 抽出したデータを出力用ワークシートにコピー TargetLastRow = TargetWorksheet.Cells(Rows.Count, 2).End(xlUp).Row + 1 SourceWorksheet.Range("B1:B" & LastRow).Copy TargetWorksheet.Range("B" & TargetLastRow) ' ソースファイルを閉じる SourceWorkbook.Close SaveChanges:=False ' 次のファイルへ FileName = Dir Loop ' 確認メッセージ MsgBox "B列のデータ抽出が完了しました。", vbInformation End Sub

  • VBからExcelを操作

    VisualBasic6.0(初心者) VBを始めたばかりで、Excelの入力文字をVBで変換しようと考えています。 様々な保管場所にあるExcelを開いて選択セルの文字をコマンドボタンで変換しようと下記コードを考えました。(一部) 問題は、Load時にすでに開いているExcelを閉じてまいます。 何か良い方法は無いでしょうか?(アクティブなExcelを操作したい) また、下記コードで不適切なところがありましたら御教授願います。 Private Sub Form_Load() Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Add Set xlSheet = xlBook.Worksheets(1) Set xlApp = GetObject(, "Excel.Application") With xlApp.Selection Cells(1, 1).Value = "" End With xlApp.DisplayAlerts = False xlApp.Quit Set xlSheet = Nothing Set xlBook = Nothing Set xlApp = Nothing End Sub '----------------------(大文字変換) Private Sub CB2_Click() On Error Resume Next If ActiveCell.Row = Null Then MsgBox "Excel が見つかりません" Else Dim xlApp As Excel.Application Set xlApp = GetObject(, "Excel.Application") If Err.Number Then MsgBox "Excel が起動されていません" Else Dim X As Long Dim Y As Long Dim Hmae As String Dim Hgo As String X = 0 Y = 0 With xlApp.Selection Do Do Hmae = Cells(ActiveCell.Row + X, ActiveCell.Column + Y).Value Hgo = StrConv(Hmae, 1) Cells(ActiveCell.Row + X, ActiveCell.Column + Y).Value = Hgo X = X + 1 Loop Until X >= .Rows(.Rows.Count).Row - .Row + 1 X = 0 Y = Y + 1 Loop Until Y >= .Columns(.Columns.Count).Column - .Columns(1).Column + 1 End With End If xlApp.DisplayAlerts = False Set xlApp = Nothing End If End Sub

  • Excel VBA msoAutomationSecurityForceDisableについて

    マクロを無効にしてファイルを読み込むコードを過去レスを見て作成しましたが、msoAutomationSecurityForceDisableを定数でなく、変数としか認識しないため、うまく機能しません。 下記コードのどこを修正すべきか、ご教示願います。 Sub read() Dim DirN As String Dim Fname As String With ThisWorkbook.Worksheets("手当") .Activate .Range(.Cells(7, 1), .Cells(10000, 40)).ClearContents End With Set NxL = CreateObject("Excel.application") NxL.Visible = True NxL.AutomationSecurity = msoAutomationSecurityForceDisable NxL.DisplayAlerts = False DirN = Worksheets("手当").Range("C2").Value & "\" Fname = Dir(DirN & "*.xls") Set Mybook = NxL.Workbooks.Open(DirN & Fname) Call read1(Mybook) Do While Fname <> "" Set NxL = CreateObject("Excel.application") NxL.Visible = True NxL.AutomationSecurity = msoAutomationSecurityForceDisable NxL.DisplayAlerts = False '追加してファイル名を検索する場合はDir関数の引数はなくす。 Fname = Dir() Set Mybook = NxL.Workbooks.Open(DirN & Fname) Call read1(Mybook) Loop End Sub

  • ASPによるEXCELファイルの操作

    宜しくお願いします。 サーバーに保管してあるEXCELテンプレートが保管してあります。 ASPを用いて、テンプレートの特定セルにデータを入力したのち そのテンプレートをクライアント側のPCに保存したいのですが可能でしょうか。 ちなみに、自分のPC内(Localhost)では、下記のプログラムでうまく動いたのですが サーバーに移すと、このプログラムのところでエラーが出ます。 初心者で見よう見まねでプログラムしているので、理屈等が理解できていないのですが どなたかアドバイスいただけると幸いです。 宜しくお願いします。 '================================================= '----- EXCEL作成 '================================================= Sub excel_save() Dim strFileName Dim ex, wb, sh, objExcelBook strFileName = "C:\Temp\報告書.xls" Set ex = Server.CreateObject("Excel.Application") ex.visible=false ex.displayalerts=false Set objExcelBook = ex.Workbooks.Open(strFileName) Set wb = ex.activeworkbook Set sh = wb.Sheets("報告書") sh.Range("I3").Value = KanriNo objExcelBook.SaveAs ("【" & KanriNo & "】報告書.xls") objExcelBook.Close False ex.Application.Quit set sh = Nothing Set wb = Nothing Set objExcelBook = Nothing Set ex = Nothing End Sub

  • 複数ファイルのA1だけを抽出して別ファイルにしたい

    すみませんが、教えてください。 特定のフォルダ内に入っているcsvのA1列目のみ抽出して別ファイルにしたく、検索したところ 同じように困っていた方がいたようで、参考にさせていただいたのですが、 以下を実行しても インデックスが有効範囲にありませんと出ます。 各csvファイルのシート名は 1000近くあるファイル全て違い、別々の名前(コード00-000とか)になっています。 (エクセルで開いたとき) お手数ですが、教えていただきたくお願いいたします。 参考にしたマクロです。 Sub macro1() Dim myPath As String Dim myFile As String myPath = "ファイルの場所\" myFile = Dir(myPath & "*.xls") Do Until myFile = "" Workbooks.Open myPath & myFile With Workbooks("集約.xls").Worksheets("Sheet1").Range("A65536").End(xlUp) .Offset(1, 0).Value = myFile .Offset(1, 1).Value = Workbooks(myFile).Worksheets("概要").Range("C3").Value End With Workbooks(myFile).Close savechanges:=False myFile = Dir() Loop End Sub 宜しくお願いいたします。

  • VB2008 エクセル出力

    VB2008 エクセル出力 教えていただけると助かります VB6.0使用時にエクセル出力をするために下記のようなプログラムで出力していました ※「Microsoft Excel 9.0 Object Library」を参照 Dim xlApp As EXCEL.Application Dim xlBook As EXCEL.Workbook Dim xlsheet As EXCEL.Worksheet Dim File As String File = App.Path + "\EXCEL\" + "フォーム.xls" Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open(File) Set xlsheet = xlBook.Worksheets("テスト") xlsheet.Range("A1") = "テスト" 'フォルダ作成 If Dir("D:\", vbDirectory) = "" Then Call Mkdirs("D:\テスト") 'Worksheetを名前をつけて保存します。 xlApp.DisplayAlerts = False xlsheet.SaveAs "D:\テスト\テスト.xls" xlApp.Quit Set xlApp = Nothing Set xlBook = Nothing Set xlsheet = Nothing VB2008の場合だとどのように書けば同じように動きますか ※色々試してみましたがダメでした 「Microsoft Excel 12.0 Object Library」を参照しています