ファイル操作

//必須
using System.IO;

//exeファイルをネットワークからMyDocument内へコピーする
string copyFrom = @“\\server\\work\\file.exe";
string copyTO = “c:\\file.exe";
File.Copy(copyFrom, copyTO);

//ファイル削除
File.Delete(copyTO);

//ディレクトリ削除
Directory.Delete(dirMyDoc);

//ファイル存在チェック
String FNAME = “xvax.ini";
if (File.Exists(FNAME) != true) {
	MessageBox.Show(“File not Found “, “File not Found");
	return;
}

//ファイル読み込み
String line;
StreamReader sr = new StreamReader(FNAME);
//1行だけ読み込む
line = sr.ReadLine();

//ファイル書き込み
using (StreamWriter sw = File.CreateText(“書き込み対象ファイル+パス")) {
	sw.WriteLine(“test,test");
	//File Close
	sw.Close();
}
カテゴリー: C#

メッセージボックス

//ノーマル
MessageBox.Show(“メッセージ", “タイトル(省略可)");

//Yes,No判定
if (MessageBox.Show(“よろしいですか?", “判定", MessageBoxButtons.YesNo) != DialogResult.No) {
	textBox1.Text = “Yes";
else
	textBox1.Text = “No!";
}
カテゴリー: C#

環境情報取得

//MyDocument内のパス取得
string dirMyDoc = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + “\\xvax";

//パス上にディレクトリ存在しない場合
if ( Directory.Exists(dirMyDoc) == false ) {
	//ディレクトリ作成
	Directory.CreateDirectory( Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + “\\xvax" );
}

//NT LOGIN Name
using System.Runtime.InteropServices;

[DllImport("Advapi32.dll", EntryPoint = "GetUserName", ExactSpelling = false, SetLastError = true)]
static extern bool GetUserName([MarshalAs(UnmanagedType.LPArray)] byte[] lpBuffer, [MarshalAs(UnmanagedType.LPArray)] Int32[] nSize);

byte[] str = new byte[256];
Int32[] len = new Int32[1];
len[0] = 256;
GetUserName(str, len);
//ex
lblLogName.Text = System.Text.Encoding.ASCII.GetString(str);
カテゴリー: C#

指定セル内の指定文字列を赤色に変更

Sub SEARCH_WORD()

	Dim chkVAL As String, FX As Integer
	
	chkVAL = InputBox(“Keyword(該当文字列を赤色にします)", “SEARCH")
	If chkVAL = “" Then Exit Sub

	For Each c In Selection
		
		FX = InStr(1, c.Value, chkVAL)
		If FX > 0 Then c.Characters(Start:=FX, Length:=Len(chkVAL)).Font.ColorIndex = 3
	Next

End Sub

隠しシートの表示

通常はメニューの「書式」-「シート」-「再表示」で非表示シートを表示可能。

しかし、マクロで「VeryHidden」をセットされると「再表示」でも見ることができない。
例)Sheets(“aaa”).Visible = xlVeryHidden

VeryHiddenのシートが存在するかを確認する方法:
1)VBAエディター上のイミディエイトボックスを表示
2)存在するシート数を確認する
 ?sheets.Count
 4
3)表示されているシート数が4未満の場合は、VeryHiddenがあり得る
4)下記のコマンドで強制表示させる(イミディエイトボックス内)
 for i=1 to 4:Sheets(i).Visible=true:next

ピボット並び替え&上位フィルター

Sub run()
	'引数:並べ替えのフィールド名、対象のシート名、Pivot実データの開始Y番号,TOP幾つまでを表示するか
	pivot_SORT_TOP “TITLE", “Sheet4", 5, 10
End Sub

'X軸は日付など、並び替え可能な項目であること
Sub pivot_SORT_TOP(CMname As String, pivot_sheet As String, Y As Long, TOP As Integer)

	Dim X As Long, CH As String

	Sheets(pivot_sheet).Select

	On Error Resume Next
	'縦の項目を一度、全部表示にする
	For i = 1 To ActiveSheet.PivotTables(1).PivotFields(CMname).PivotItems.Count
		ActiveSheet.PivotTables(1).PivotFields(CMname).PivotItems(i).Visible = True
	Next
	
	'Pivotの末列の座標を探す
	X = 2
	Do While Cells(Y – 1, X) <> “": X = X + 1: Loop
	X = X – 1
	
	'横列の昇順並び替え
	Cells(Y – 1, 2).Select
	Selection.Sort Order1:=xlAscending, Type:=xlSortLabels, OrderCustom:=1, _
		Orientation:=xlLeftToRight, SortMethod:=xlPinYin
	
	'並び替えたい列を選択
	Cells(Y, X).Select
	'Range(Chr(64 + X) & Y).Select
	
	'X,Y座標をR1C1形式に変換
	CH = “R" & Y & “C" & X
	'末列を降順でSORT
	Selection.Sort Key1:=CH, Order1:=xlDescending, Type:=xlSortValues, _
		OrderCustom:=1, Orientation:=xlTopToBottom, SortMethod:=xlPinYin
	
	'表示項目がTOP指定より多い場合は、フィルター処理
	If ActiveSheet.PivotTables(1).PivotFields(CMname).PivotItems.Count > TOP Then
	
		On Error Resume Next
		'TOP以降は非表示する
		For i = TOP + 1 To ActiveSheet.PivotTables(1).PivotFields(CMname).PivotItems.Count
			ActiveSheet.PivotTables(1).PivotFields(CMname).PivotItems(i).Visible = False
		Next
	End If
	On Error GoTo 0
	
End Sub

グラフのバーをグループ単位で色分け

'グラフのバーをグループ単位で色分け
'大前提:実行前に対象のグラフが選択されていること
Sub Set_Color_Bar()
	
	Dim i As Integer, N As Integer

	'バーの数分だけループ(この例では13個)
	For i = 1 To ActiveChart.SeriesCollection.Count
		N = Val(Right(ActiveChart.SeriesCollection(i).Name, 2))
		'何番目のバーを処理しているか
		If i < 5 Then
			'最初の4本までは青系のバーにする
			Bar_attr i, 33
		ElseIf i < 9 Then
			'最初の5~8本は黄系のバーにする
			Bar_attr i, 6
		Else
			'最初の9本目以降は紫系のバーにする
			Bar_attr i, 7
		End If
	Next
	
	'おまけ
	'ActiveChart.SeriesCollection(i).Name
	'これには「WK01」などの凡例の名称が入る
	
End Sub

'指定バーの色を変更
Sub Bar_attr(bar As Integer, c As Integer)
			'何番目のバーか、色番号
	On Error GoTo pass
	'対象のバーを選択
	ActiveChart.SeriesCollection(bar).Select
	'グラデーションセット
	Selection.Fill.OneColorGradient Style:=msoGradientVertical, Variant:=4, Degree:=0.231372549019608
	Selection.Fill.Visible = True
	'色をセット
	Selection.Fill.ForeColor.SchemeColor = c
pass:
	On Error GoTo 0

End Sub

Outlookを呼び出してMail作成

'Outlookを呼び出してMail作成
Sub OUTLOOK()
	Dim objOutlook As OUTLOOK.Application
	Dim objOutlookMsg As OUTLOOK.MailItem
	Dim objOutlookRecip As OUTLOOK.Recipient
	Dim objOutlookAttach As OUTLOOK.Attachment
	
	Set objOutlook = CreateObject(“Outlook.Application")
	Set objOutlookMsg = objOutlook.CreateItem(olMailItem)
	'メイン
	With objOutlookMsg
		.Subject = “title"
		.Body = “本文"
		'宛先準備
		Set objOutlookRecip = .Recipients.Add(“xxx@bbb.com")
		objOutlookRecip.Type = olTo
		Set objOutlookRecip = .Recipients.Add(“zzz@bbb.com")
		objOutlookRecip.Type = olCC
		'完成Mailを表示
		.Display
		'いきなり送付させる場合は下記を使用
		'.SEND
	End With
	
	Set objOutlookMsg = Nothing
	Set objOutlook = Nothing
	
	MsgBox “送付完了!"

End Sub

フォームフィルター&ソート&リフレッシュ&行保管

Private Sub Form_Load()
	
	'表示にフィルターをかける
	Me.Filter = “xxx=" & ZZZ
	Me.FilterOn = True
		
	'SORT指定
	Me.OrderBy = “ORDER_NUMBER ASC"
	Me.OrderByOn = True
	
End Sub

'編集中の行を保管する
Sub SAVE_CURRENT_RECORD()
	DoCmd.RunCommand acCmdSaveRecord
End Sub

'画面をリフレッシュ
Private Sub BTN_refresh_Click()
	Me.Requery
End Sub