ページ 1 / 1
エクセルへの書込みは出来ないのでしょうか
Posted: 2007年3月25日(日) 04:26
by oka
プログラムを仕事にしている者ではありませんが仕事の効率を上げるため
「エクセルファイルにデータ書き込んでそのエクセルファイルを開く」
というプログラムを作れればと考えています。
実践コードモジュールにアクセスへのものがあったので
エクセルに直して実施してみたところ参照(SELECT)は出来るのですが
書込み(INSERT)がエラーになります。
ActiveBasicではなくODBC(?)の問題と思いますが
エクセルへの書込みは出来ないのでしょうか。
もしご存知の方がおられたら教えて下さい。
データベースアクセス
Posted: 2007年4月12日(木) 00:17
by omasu
久々にお世話になります。
データベースアクセスクラスのような技術力は私にはありませんので
参考としての投稿です
エクセル化については、かなり簡単な仕組みで作成が可能だ思います。
過去に作成した例では
事前に
基本となるエクセルの表を作成する
データの基となるCSVデータファイルのリンクを作成する
プログラムで
CSVデータファイルを出力する
CSVデータファイルとエクセルを順番に起動する
参考の起動コード
コード: 全て選択
Exec "FILE1.csv"
Exec "FILE2.csv"
Exec "FILE3.csv"
Exec "基本エクセルシート.xls"
上記の方法で大量データの編集加工後、エクセルでの表計算出力をしていました。
表自体を編集加工するプログラム作成であれば申し訳ありません。
アクセスの記事で躊躇しましたが、参考になれば幸いと思います。
Posted: 2007年4月14日(土) 17:31
by 河川屋
>エクセルファイルにデータ書き込んでそのエクセルファイルを開く
この意味が、どうあってもABからエクセルファイルを書きたい、というなら別ですが、
エクセルファイルを開いてからコマンドボタンを押してファイルから読み込むことでいいなら
エクセル上のVBAなら簡単です。ODBCのようなことは一切不要でVBA基本文法のみ。
(ただし、枠はすでに作ってあって、そこにデータを読み込むか書き出したい場合に限り簡単。)
VBAはこんな感じ。一応は任意のセルを対象として読み書きできます。
Sub ボタン1_Click()
ok = MsgBox("データをファイルより入力します", vbOKCancel)
If ok = vbCancel Then Exit Sub
Worksheets("sheet1").Activate 'シート1に移動する。(初期状態はアクティブセル。)
fl$ = Range("A1").Value 'A1のセルにファイル名を入れておく。
Open fl$ For Iutput As #1
input #1,x
Cells(i,j).Value=x ’iが行番号、jが列番号になる。あらかじめ値を設定しておく。
'または
Range("B2").Value=x ' "B2"がセル位置に当たる。
end sub
ありがとうございます
Posted: 2007年4月20日(金) 14:33
by oka
omasu様、河川屋様ありがとうございます。
別にActiveBasicで全部実施しなくても他のツールを使えばいいことですね。
「全部ActiveBasicでやらなきゃいけない」という強迫観念にとりつかれていた
気がします。
ほんとうにありがとうございました。
エクセル化その後
Posted: 2007年4月22日(日) 00:09
by omasu
お世話になります。
エクセル化を別の切り口で考えてみました。
エクセルをスクリプトで作成するという考え方です。
下記のコードは簡単なチェックサムの計算をするというスクリプトですが、
アクティブベーシックでスクリプトを作り"ファイル名.xls"等にファイル出力し、
アクティブベーシックから"Exec"で当該ファイルを起動すればエクセルとして起動します。
[ここをクリックすると内容が表示されます] [ここをクリックすると非表示にします]コード: 全て選択
<html xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
<head>
<meta http-equiv=Content-Type content="text/html; charset=shift_jis">
<meta name=ProgId content=Excel.Sheet>
<meta name=Generator content="Microsoft Excel 9">
<link rel=File-List href="./チェックサム.files/filelist.xml">
<link rel=Edit-Time-Data href="./チェックサム.files/editdata.mso">
<link rel=OLE-Object-Data href="./チェックサム.files/oledata.mso">
<style>
<!--table
{mso-displayed-decimal-separator:"\.";
mso-displayed-thousand-separator:"\,";}
@page
{margin:.98in .79in .98in .79in;
mso-header-margin:.51in;
mso-footer-margin:.51in;}
tr
{mso-height-source:auto;
mso-ruby-visibility:none;}
col
{mso-width-source:auto;
mso-ruby-visibility:none;}
br
{mso-data-placement:same-cell;}
.style0
{mso-number-format:General;
text-align:general;
vertical-align:bottom;
white-space:nowrap;
mso-rotate:0;
mso-background-source:auto;
mso-pattern:auto;
color:windowtext;
font-size:11.0pt;
font-weight:400;
font-style:normal;
text-decoration:none;
font-family:"MS Pゴシック";
mso-generic-font-family:auto;
mso-font-charset:128;
border:none;
mso-protection:locked visible;
mso-style-name:標準;
mso-style-id:0;}
td
{mso-style-parent:style0;
padding-top:1px;
padding-right:1px;
padding-left:1px;
mso-ignore:padding;
color:windowtext;
font-size:11.0pt;
font-weight:400;
font-style:normal;
text-decoration:none;
font-family:"MS Pゴシック";
mso-generic-font-family:auto;
mso-font-charset:128;
mso-number-format:General;
text-align:general;
vertical-align:bottom;
border:none;
mso-background-source:auto;
mso-pattern:auto;
mso-protection:locked visible;
white-space:nowrap;
mso-rotate:0;}
.xl24
{mso-style-parent:style0;
text-align:center;
border:.5pt solid windowtext;}
ruby
{ruby-align:left;}
rt
{color:windowtext;
font-size:6.0pt;
font-weight:400;
font-style:normal;
text-decoration:none;
font-family:"MS Pゴシック", monospace;
mso-font-charset:128;
mso-char-type:katakana;
display:none;}
-->
</style>
<!--[if gte mso 9]><xml>
<x:ExcelWorkbook>
<x:ExcelWorksheets>
<x:ExcelWorksheet>
<x:Name>チェックサム</x:Name>
<x:WorksheetOptions>
<x:DefaultRowHeight>270</x:DefaultRowHeight>
<x:Print>
<x:ValidPrinterInfo/>
<x:PaperSizeIndex>9</x:PaperSizeIndex>
<x:HorizontalResolution>300</x:HorizontalResolution>
<x:VerticalResolution>300</x:VerticalResolution>
</x:Print>
<x:Selected/>
<x:ProtectContents>False</x:ProtectContents>
<x:ProtectObjects>False</x:ProtectObjects>
<x:ProtectScenarios>False</x:ProtectScenarios>
</x:WorksheetOptions>
</x:ExcelWorksheet>
</x:ExcelWorksheets>
<x:WindowHeight>4725</x:WindowHeight>
<x:WindowWidth>8475</x:WindowWidth>
<x:WindowTopX>480</x:WindowTopX>
<x:WindowTopY>30</x:WindowTopY>
<x:AcceptLabelsInFormulas/>
<x:ProtectStructure>False</x:ProtectStructure>
<x:ProtectWindows>False</x:ProtectWindows>
</x:ExcelWorkbook>
</xml><![endif]-->
</head>
<body link=blue vlink=purple>
<table x:str border=0 cellpadding=0 cellspacing=0 width=242 style='border-collapse:
collapse;table-layout:fixed;width:183pt'>
<col width=89 style='mso-width-source:userset;mso-width-alt:2848;width:67pt'>
<col width=37 span=3 style='mso-width-source:userset;mso-width-alt:1184;
width:28pt'>
<col width=42 style='mso-width-source:userset;mso-width-alt:1344;width:32pt'>
<tr height=18 style='height:13.5pt'>
<td height=18 class=xl24 width=89 style='height:13.5pt;width:67pt'>チェックサム</td>
<td class=xl24 width=37 style='border-left:none;width:28pt'><ruby>横<span
style='display:none'><rt>ヨコ</rt></span></ruby>1</td>
<td class=xl24 width=37 style='border-left:none;width:28pt'><ruby>横<span
style='display:none'><rt>ヨコ</rt></span></ruby>2</td>
<td class=xl24 width=37 style='border-left:none;width:28pt'><ruby>横<span
style='display:none'><rt>ヨコ</rt></span></ruby>3</td>
<td class=xl24 width=42 style='border-left:none;width:32pt'><ruby>横<span
style='display:none'><rt>ヨコ</rt></span></ruby><ruby>計<span style='display:
none'><rt>ケイ</rt></span></ruby></td>
</tr>
<tr height=18 style='height:13.5pt'>
<td height=18 class=xl24 style='height:13.5pt;border-top:none'><ruby>縦<span
style='display:none'><rt>タテ</rt></span></ruby>1</td>
<td class=xl24 style='border-top:none;border-left:none' x:num>1</td>
<td class=xl24 style='border-top:none;border-left:none' x:num>2</td>
<td class=xl24 style='border-top:none;border-left:none' x:num>3</td>
<td class=xl24 style='border-top:none;border-left:none' x:num
x:fmla="=SUM(B2:D2)">6</td>
</tr>
<tr height=18 style='height:13.5pt'>
<td height=18 class=xl24 style='height:13.5pt;border-top:none'><ruby>縦<span
style='display:none'><rt>タテ</rt></span></ruby>2</td>
<td class=xl24 style='border-top:none;border-left:none' x:num>4</td>
<td class=xl24 style='border-top:none;border-left:none' x:num>5</td>
<td class=xl24 style='border-top:none;border-left:none' x:num>6</td>
<td class=xl24 style='border-top:none;border-left:none' x:num
x:fmla="=SUM(B3:D3)">15</td>
</tr>
<tr height=18 style='height:13.5pt'>
<td height=18 class=xl24 style='height:13.5pt;border-top:none'><ruby>縦<span
style='display:none'><rt>タテ</rt></span></ruby>3</td>
<td class=xl24 style='border-top:none;border-left:none' x:num>7</td>
<td class=xl24 style='border-top:none;border-left:none' x:num>8</td>
<td class=xl24 style='border-top:none;border-left:none' x:num>9</td>
<td class=xl24 style='border-top:none;border-left:none' x:num
x:fmla="=SUM(B4:D4)">24</td>
</tr>
<tr height=18 style='height:13.5pt'>
<td height=18 class=xl24 style='height:13.5pt;border-top:none'><ruby>縦<span
style='display:none'><rt>タテ</rt></span></ruby><ruby>計<span style='display:
none'><rt>ケイ</rt></span></ruby></td>
<td class=xl24 style='border-top:none;border-left:none' x:num
x:fmla="=SUM(B2:B4)">12</td>
<td class=xl24 style='border-top:none;border-left:none' x:num
x:fmla="=SUM(C2:C4)">15</td>
<td class=xl24 style='border-top:none;border-left:none' x:num
x:fmla="=SUM(D2:D4)">18</td>
<td class=xl24 style='border-top:none;border-left:none' x:num
x:fmla="=SUM(B2:D4)">45</td>
</tr>
<![if supportMisalignedColumns]>
<tr height=0 style='display:none'>
<td width=89 style='width:67pt'></td>
<td width=37 style='width:28pt'></td>
<td width=37 style='width:28pt'></td>
<td width=37 style='width:28pt'></td>
<td width=42 style='width:32pt'></td>
</tr>
<![endif]>
</table>
</body>
</html>
実際に上記スクリプトをコピーしてテキストファイルにペーストし、
拡張子を".xls"にして実行すれば、エクセルとして起動し、
チェックサムの表計算が可能です。
追伸:スクリプトをアクティブベーシックで作ることになりますので、
プログラムが完成すれば売り物になるかも知れませんね。m(_ _)m