公開日:2019-04-03 最終更新日:2020-02-17 VBAでのタイマー処理(SetTimer,OnTime) VBAでタイマー処理(一定時間間隔で処理)を行う方法についての解説です。

本記事は2012年末頃に、社内向けに作成した説明資料をQiita向けに編集したものです。 最新の仕様とは異なる場合があるので注意してください。 #はじめに .NET Frameworkには「COM相互運用1」と呼ばれる機能があり、COMコンポーネント2を手軽に呼び出すことができます。一方、ExcelをはじめとするOffice製品は、その機能をマクロ(VBA)などからも活用できるようにCOMコンポーネントとして実装されています。このため、COM相互運用を使えば.NETアプリケーションから容易にExcelやWordのファイルを開き、それをさまざまに操作することが可能です。 本記事ではC#で作成されたサンプルアプリケーションのソースコードを基に、COM相互運用機能を用いてExcelファイルを操作する方法を説明します。 使用しているVisual Studioのバージョンは” Microsoft V
仕事関係で、ExcelやらのVBAマクロをちょいちょい書いていたけど、どーにもこーにも以下のような不満があった。 とても使いやすいとは言えないIDE*1 VB6ベースの言語体系 ソース管理がとても厄介*2 後は個人的に、C♯erなので、文末に;打って怒られたり、変数の宣言でいきなり、int hoge;なんてやって怒られたりと、かなりストレスがたまる作業だったわけで。 VisualStudioの2005からだったと思うけど、Tools for OfficeがProfessional以上には付いてきていたのは知ってたけど、あんまりいじってなかった。 今回、作業量がちょっと大きめでなおかつ、入力をExcel、出力をPublisherにするようなシロモノを組むことになり、思い切ってC♯を使うことにしてみた。最初は、ExcelのAddinでやろうかと思ったわけですが、別にアドインにする必要も無いし、
2019/08/27C#,VBA 野暮用で試したので。 ポイントはこんな感じ。 ExcelのVBAでSubプロシージャやFunctionプロシージャはC#から呼び出されるための特別な書き方をしなくてOK Visual Studioのプロジェクト参照設定で"Microsoft Excel X.X Object Library"ってのを追加しておく ※X.Xは数値でPCにインストールしてあるExcelのバージョン Microsoft.Office.Interop.Excel.Application.Runメソッドで取り扱うExcelのパスと必要に応じてVBAに渡す引数を指定する C#側でExcelに関係するオブジェクトはSystem.Runtime.InteropServices.Marshal.ReleaseComObjectメソッドで明示的に解放する 準備したサンプルのExcel VBAマ
『全てのVBAコードを生まれる前に消し去りたい。 すべての宇宙、過去と未来の全てのVBAを、この手で』 このページはExcel VBAを実務で利用されている方で、VBAに心の底から辟易しており、現代的なプログラミング言語(C#6.0)を使って、Excelファイルから分離されたコードで、お手軽にExcel操作を行いたいという方を対象としています。 このページでは、Excelの操作には、VBAに代えてC# Scriptを使います。C# Scriptを実行するにあたっては、C# スクリプト実行エンジンとしてRoslyn for Scripting C#を組み込んだExcel VSTOアドイン "ExcelCSX" を用いています。 このページを通じて、忌まわしきExcel VBAと決別し、より便利で快適なC#スクリプトの魅力を体験して頂ければ幸いです。 Excel C# Script入門講座 E
ひな形サンプル Find 開いているBOOK Excelのバックグラウンドプロセスを直接殺す ひな形サンプル using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; // 参照設定 // Microsoft Excel 16.0 Object Library using System.Runtime.InteropServices; using Excel = Microsoft.Office.Interop.Excel; using System.Diagnostics; /// <summary> /// /// </summary> namespace Excel_COM_2.ExcelCOM_01 { ///
概要 この記事では、Microsoft Visual C# .NET を使用して、Microsoft Excel 用の Automation クライアントを作成する方法を示します。 詳細情報 Automation は、Visual C# .NET などの言語で記述されたアプリケーションが他のアプリケーションをプログラムで制御できるようにするプロセスです。 Excel のオートメーションを使用すると、新しいブックの作成、ブックへのデータの追加、グラフの作成などのアクションを実行できます。 Excel やその他の Microsoft Office アプリケーションでは、ユーザー インターフェイスを使用して手動で実行できるほぼすべてのアクションを、Automation を使用してプログラムで実行することもできます。 Excel では、オブジェクト モデルを使用してこのプログラム機能が公開されます
公開日:2019-04-02 最終更新日:2020-03-27 クラスとイベントとマルチプロセス並列処理 エクセルVBAではマルチスレッドによる並列処理はサポートされていません、 つまり通常は順序良く直列に処理していくしかありません。 しかし処理時間が多大にかかるような処理も現実には存在しているため、 エクセルVBAで並列処理したいという要望も出てきます。 「VBA マルチスレッド」「VBA マルチプロセス」これらで検索すると VBAからVBScriptを起動して時間のかかる処理を行い、その結果をエクセルで取得するというようなものが多くヒットします。 もともとVBAでは自身のアプリケーション内ではなく、別アプリケーション(別プロセス)でExcelを起動させてブックを開くことができます。 これはOLEオートメーションと呼ばれていますが、複数のプロセスを起動できるのでマルチプロセスと言って良い
概要 本記事では、Excel側のVBAからC#で作成したDLLの関数を呼び出す方法を紹介します。 VBAでごりごりコードを書く作業が苦手(苦痛)且つ、C#での開発に慣れている方は、今回の記事が参考になるのではないかと思います。 今回は、C#のDLLに指定ディレクトリ以下のファイルリストを取得する関数を実装してみたいと思います。 手順 DLL側作業 DLLプロジェクト作成…C#でクラスライブラリプロジェクトを作成します。 DLLプロジェクト設定…COM運用できるようにプロジェクトを設定します。 DLL実装…DLLに関数を実装します。 DLL登録…DLLをシステムに登録します。 Excel側作業 参照設定…Excel側作業:Excelの参照設定にDLLを追加します。 DLL呼出…Excel側作業:ExcelからDLLを呼び出します。 【手順1】DLLプロジェクト作成 VisualStudio起
「母親が丸一日かけて作っていた30人分のシフト表を、プログラムで自動化した」という、とある人物のツイートが大反響を呼んだ。 母親が毎月ヒーヒー言いながらから丸一日かけて作成してた(意味わからないくらい条件が複雑な)シフト表(30人分)を、Pythonで自動作成するプログラム書いてあげた 日曜の3時間生贄になったけど、ITリテラシー皆無な母親は魔法みたいと言って5千円くれたし、PythonでExcel操作する勉強になったから○ このツイートは3.6万いいね、3000回以上の RTを記録。「技術者として最高の親孝行」「うちの息子になってほしい」「日本の未来は明るい」などといった、好意的な反応が寄せられた。 ツイートした24歳のシステムエンジニアmorioさんは、キャリコネニュースの取材にこう語る。 「驚きましたね。Twitterは“見る専”で、たまに気持ちをつぶやくくらい。自分のツイートがバズ
EPPlus 4.1 release EPPlus 4.1 が 14 日に公開されましたね。 Added functions Rank, Rank.eq, Rank.avg and Search Custom function compilers can now be added via FormulaParserManager Applied a whole bunch of pull requests... Performance and memory usage tweeks Ability to set and retrieve 'custom' extended application propeties. Added style QuotePrefix Added support for MajorTimeUnit and MinorTimeUnit to chart axes
計算式 Excelにデータを投入したら計算したくなるもの。セルの Formula プロパティに式を書くことで計算することができる。Excelと異なり、先頭に「=」を付ける必要はない。前回作成したサンプルのセルへの書き込み部分を以下の様に改変する。 // 適当にデータを追加 sheet.Cells["A1"].Value = "ネタ"; sheet.Cells["B1"].Value = "単価"; sheet.Cells["C1"].Value = "個数"; string[] neta = { "鮪", "烏賊", "エンガワ", "雲丹", "イクラ", "鰺", "穴子", "石鯛", "鰯", "鰹" }; Random rnd = new Random(); for (int i = 0; i < neta.Length; i++) { sheet.Cells[i + 2, 1]
●共通 エクセルを開くライブラリ検証メモ Excelファイルを C# と VB.NET で読み込む "正しい" 方法 ClosedXMLやEPPlusでExcelファイルを読み書きしてみた。 C# の Excel ファイル操作ライブラリー C#でExcelファイルを扱うライブラリごとのファイルクローズ方法(EPPlus、NPOI) ●Open XML SDK(マイクロソフト。オープンソース。Word/Excel/PowerPoint。使い方が結構面倒) Open XML SDK 2.5 for Office へようこそ Open-XML-SDK(GitHub) いまさらOpen XML SDKでExcel? Open XML SDKを使用して Officeのファイルを C#で自在に操る方法 Open XML SDK を使って Excel ファイルを操作する (1) - 準備編 Open X
public static void Check(string Ver) { int length = 200; try { string filePath = Directory.GetCurrentDirectory() + "\\NPOI_XML." + Ver; //ブック作成 var book = CreateNewBook(filePath); //シート無しのexcelファイルは保存は出来るが、開くとエラーが発生する book.CreateSheet("Sheet"); //シート名からシート取得 var sheet = book.GetSheet("Sheet"); //セルに設定 WriteCell(sheet, 0, 0, filePath); // for (int i = 0; i < length; i++) { WriteCell(sheet, 0, i + 1
はじめに こんにちは。grnishiです。もう11月ですね。皆さん年末調整は提出しましたか?めんどくさいですけど人事に急かされる前に提出してしまいましょう。その気になればすぐ終わります。 本題 何かゲームを運用していると、データを集計して報告書を作るなんて仕事がありますよね。 例えばイベント期間の売上がどうだったか?とかユーザの状況はどうだったのか?とか。 サーバ側でMySQL叩いて集計する際などはCSVやTSVでデータを吐き出す事が多いと思います。 ただ報告書としてまとめるにはCSVやTSVだとちょっと寂しい。エクセルでそれなりに綺麗にしたいという欲求に駆られる事も多いかと思います。 そんな時は集計結果のデータをエクセルにペタっと貼り付けて体裁を整える。みたいな作業をします。 でもめんどくさいんですよね。いちいち色変えたりとか。罫線付けたりとか。 そんな時はエクセルを生成するプログラムを
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く